1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
|
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..
|