shlext 2.0.1.2 Contents: Introduction ``What is shlext?`` Why so long? What you need New features Features Quirks Important changes But Miranda has drag'n'drop! Installation Upgrading/Removing Translation License Contact/Bug reporting Credits ---Introduction ``What is shlext?`` shlext is a Miranda and Explorer shell plugin, it allows you to use your contact list under any file/directory from Windows. This means that you can right click on a file/folder, see "Miranda" and then see your entire contact list! this is a feature that ICQ has built in. shlext is better of course. ---Why so long? A few people contacted me aeons ago about implementing a better file scanner so that they could recreate directories whilst sending, etc, I said I would do this as soon as I had time, that was several months ago. I had made several changes/bugfixes when I had time, because I'm a Miranda dev too, I don't usually have lots of time for this plugin, however lately I needed shlext to run again, since I was sending lots of docs/logs around with Miranda. So I fixed several things and improved lots of other stuff so that other users could use shlext again (the XP bug was really annoying as soon as I got XP myself ;) ---What you need (2008) You will need 0.7.xx or 0.8.x -- older versions will not work. shlext should work on all Window Explorer versions that support it, certain features will not work on older Explorers, i.e. icons, but you will still be able to use the main function of shlext, selection 'n' transfer. ---New Features (2.0.1.2) * shlext is now compiled with Free Pascal 2.2.4 * shlext now works with Windows Vista: 1. shlext cannot automatically register itself with Windows Explorer due to permissions issues in Vista, therefore you will be UAC prompted if shlext detects you are running Vista and that shlext isn't registered with Explorer. This is almost automatic, and you just have to press "OK". 2. The entire menu drawing was overhauled and now looks much better, new APIs are used so that Vista draws the menus (with theme) but the status icons are still present. * added UAC button for "Remove" from the options dialog. * Removed GetMenuItemInfo() debug message box. * Note: Miranda is a 32bit application, 64bit editions of Windows require a 64bit extension DLL, this is not possible at present. ---New features (2.0.0.9+) * shlext is now compiled with Free Pascal 2.2.2 which is a newer compiler with better optimisations so shlext should be faster. (2002 v.s. 2008) * shlext now works with Miranda 0.8.x UUID typing system and 0.8.xx plugin loading APIs, 0.7.xx still works too however. * shlext now keeps track of recently used contacts and builds a "MRU" menu for quick access within the menu system. This cannot be disabled, if you hate this feature, please stick pins into a voodoo doll named "Christian", that is all. * The menu strings "Recently" and "Clear entries" are translate()able but MRU is not. ---New features (1.0.6.6+) * shlext will now use all your icons per protocol, **not** just the first iconset it finds, it will also use everything properly (because it doesn't do the icon extraction, it just asks Miranda [don't ask why it didn't do this before :P]) * shlext will now use a Translate()'d version of "Miranda" so that each menu shown for a profile can be given a custom user string * reimplemented file/folder selection, finally! a work-as-expected version, it will scan and add all files and folders you give it, producing a file list in the background (scanning your drive) and then send the list to Miranda to send to your selected contact. * Added option for disabling status icons in menus, which means that you can use shlext with shell variants/file managers that invoke the shlext interface, such as FAR, but don't need/use the icons. * Added option about hiding offline users from the context menu, if this option is off it will fall back onto syncing with your contact list's "hide offline users" * Added proper thread safety because Miranda 0.3 now has it. * Completely reimplemented group parsing, which means that all the old group bugs can be expected to be gone, note that shlext will now even create menus for subgroups of the same name, e.g. "Miranda\Miranda". * shlext will now not show a menu for a running Miranda fails the following checks: * not running shlext (duh) * no non-offline contacts (or you have the setting 'hide offline users') * and so on * shlext will now also completely ignore contacts on protocols who have no file transfer support ---Features shlext can: * allow you to refer to your entire contact list from a file/folder context menu, this includes multiple profiles! if you have Miranda running different profiles, you'll see all your profiles as menu items as long as you're running shlext as a Miranda plugin in that profile. * Group ability, see a faithful menu rendition of your group hierarchy. This means you can go something like File->My Profile->Work->Friends->Dude... This feature can also be turned off, or enabled in sync with your contact list option to "Disable groups", this is a per profile setting, i.e. setting disable groups on one profile won't affect other profiles running shlext. * Multi protocol aware, shlext can send to anyone on your contact list not just ICQ! * Each contact will be shown next to their status icon, as selected in your profile(s) which means that you'll easily feel at home with the icons, because they will be used as how they are set in each profile. * lots of files, shlext will now, if given a directory/folder go into that folder and scan for files and sub directories/folders til it's added everything. This means if you send c:\foobar, it will search c:\foobar\*.* for more files to add, it will also add c:\foobar as a directory space to send. Which means that if the other side hasn't got a 'foobar' directory, it will be created! (Note: recreating directory trees depends on the protocol being used to send) --Quirks * shlext displays all your users by default, if your contact list is set to NOT show offline users, then shlext will not show them. * shlext doesn't use all your group settings, it will not ad here to "hide offline users in here", however if a group has got offline users it won't show them (per setting option!) ---Important changes Older versions of shlext did not go into folders more than one level, i.e. if you added c:\foobar it would scan for c:\foobar\*.* and add all the files but not go into each directory\folder deeper than that! shlext also now does background selection scanning, which means when you select a group of files/folders/directories, it will let you get on with chating until it's made a file list which you can send to the person you've selected. shlext will NOT send any file/folder/directory that is marked "hidden" Also, sometimes you will see "n files, 1 directory" when you say select something e.g. c:\foobar, this is because shlext now also includes the top level directory so that the remote side will know to create it, as well as sub directories. ---But Miranda has drag'n'drop! Yeah, that's okay when you can reach Miranda, but I have multiple profiles and the "hide after NN seconds" option enabled, also I have groups! Miranda doesn't auto expand a group when someone is online unless you do that yourself, which means drag 'n' drop has failed. Also, when you've selected a large amount of files, Miranda will *freeze* completely whilst it 1) scans all those files, 2) builds a copy of the given send list Whilst shlext only freezes Miranda for the latter, and that is seldom a "complete freeze". And of course, shlext uses Miranda 0.3's advanced threading services, which means if you've asked shlext to build a massive send list, you can still exit Miranda safely which you can't with drag 'n' drop! ---Installation If you've never installed shlext before, all you have to do is install it like any other Miranda plugin, i.e. copy it to your plugins directory. That's it! you should goto Miranda->Options->Plugins->Shell Context Menus to see if you'd like to set any of the options, however shlext works straight out of the box and you don't really need to set anything up after that. If you want to use shlext with multiple profiles, you don't have to do any special setting up either, just make sure that shlext is running with each Miranda you want shlext to show a menu contact list for. Make sure ALL copies of shlext.dll are the same, i.e. 1.0.6.6, if they're not then shlext will fail (this doesn't mean 'crash'). ---Upgrading/Removing Upgrading shlext has always been a pain for users (and me!) this is because shlext.dll runs in Windows and in Miranda (at the same time). So when you've shutdown Miranda, shlext.dll maybe kept in memory by Windows to make things worse, clicking any file/folder will result in shlext.dll being reloaded, so if you do shlext.dll->Delete, Windows will ask shlext.dll if it wants to show any menus, nevermind the fact delete was selected! This happens also if you just press 'delete' whilst shlext.dll is selected. However! All is not lost, this is what you do: * goto M->Options->Plugins and disable shlext.dll as a Miranda plugin * goto M->Options->Plugins->Shell context menus and click 'Remove'. * Shutdown Miranda IM Advanced users only: ---------------------------------------------------- * Do all the above and then open a console window (Command prompt, etc) * Make sure all applications have been shutdown * Goto the directory where Miranda is, e.g. c:\, cd Miranda * Goto Start->Shutdown, let the dialog come up and hold CTRL+ALT+SHIFT and press cancel. This will shutdown Explorer but not Windows, you can now do: del shlext.dll * now run Explorer.exe usually in C:\Windows, shlext.dll will be removed. ---------------------------------------------------------------------------- The remove button will ask Windows not to load it anymore, by removing all shlext registry entries, the button will also remove any settings from your profile settings database that it may of made. You should now be able to delete shlext.dll! however if you still are unable to, you may need to log out (if you're using XP/2000/NT) if you're using 9x then you may have to restart Windows (pain I know, sorry!) You should now be free of old shlext copies and you can refer to "Installation" above. If you were using shlext.dll with multiple profiles, the remove shlext from each profile as stated above and then copy the newer shlext.dll to your plugins folder. ---Translation I haven't been nice about translation strings in the past, but you can pretty much translate everything shlext uses a string, even "Miranda" which is shown in the menu. Note that some strings can't be translated, this is because some parts of the plugin run within Explorer and that doesn't have access to Miranda's langpacks, the "Miranda" string that appears in menus is a special exception ; ; Translate()'able strings for shlext/2.0.0.9 ; ;"Miranda" limited to 63characters! (exceed and it's chopped) ;[Miranda] ;[Problem, registration missing/deleted.] ;[Successfully created shell registration.] ;[Not Approved] ;[Approved] ;[Are you sure? this will remove all the settings stored in your database and all registry entries created for shlext to work with Explorer] ;[Disable/Remove shlext] ;[Shell context menus] ; new in 2.0.0.9, both these strings cannot be longer than 63 chracters ;[Clear entries] ;[Recently] ;IDD_SHLOPTS ;[Menus] ;[Display contacts in their assigned groups (if any)] ;[Only if/when the contact list is using them] ;[Display hidden, ignored or temporary contacts] ;[Shell Status] ;[Do not display the profile name in use] ;[Contact Status] ;[Show contacts that you have set privacy rules for] ;[Remove] ;[Do not show status icons in menus] ;[Do not show contacts that are offline, even if my contact list does] ---License Like Miranda, shlext is released under the GPL, you may find the full FreePascal source-code on the CVS in plugins module 'shlext' You will need at least FreePascal/2.2.2, GNU make (if you want to use the makefile) Follow the CVS links from http://sf.net/projects/miranda-icq/ Note: All the tools used to build shlext are also under the GPL! ---Contact/Bug reporting In the past shlext hasn't been as stable as it could be, but this was mainly due to the problems of 0.2.0.0 and early 0.3.0.0 Miranda builds, I've taken care to make sure things are stable as can be. If you have any problems/crashes, please contact me at: egodust at users.sf.net. Please include the following information: Windows version, service packs installed, build version of Explorer, Miranda version, shlext version, a list of plugins that you think maybe involved in crashes, steps to reproduce errors and so on. Note that shlext has been blamed for several bugs that were not shlext's fault, for example the file xfer cancel bug was in ICQ and Miranda but not shlext ;) ---Credits Tig-crash\d - Thanks for beta testing every version before this one ;) Erik?, DD Of Borg - Thanks for beta testing 0.0.2.2/1.0.6.6 -- ideas and suggestions as well what to exactly steal from ShellFileSend, heh..