blog: riddles in programming
Posted: 2007 Jul 08, 08:46
here's the comment area for today's blog entry found at:
http://www.zabkat.com/blog/08Jul07.htm
http://www.zabkat.com/blog/08Jul07.htm
xplorer² Deskrule and other programs
https://forum.zabkat.com/
Yup it is.Your query sounds like it is a program development issue, rather than xplorer2-related.
Has nikos implemented the context menus for the scrap container and has it be working fine?Although you might get a constructive reply from nikos or our readers, you are likely to get more help sooner from the the users at The Code Project: http://www.codeproject.com/
you're in belgium right, the best beer in the worldWish I knew you were so close to me, we could have talked shell over a beer
Yes it work on Vista and XP (though I did get it to crash and vanish on XP).haven't tried on win2K recently, but for XP i just tried a context menu on 2500 files (various) and both the menu and the execution of commands was pronto
It does not "feel" like that is the problem.perhaps for w2000 there are the same problems as with multi file properties, and this patch may be useful:
http://support.microsoft.com/default.as ... s%3B330040
Then how do you get the "Print" menu item? That was the only way I could get it. I use RegMon to look at what the Explorer Search window was opening and it uses these keys.finally i don't use these keys at all:
HKCR\FileSystemAssociations\{.ext}
HKCR\FileSystemAssociations\{PerceivedType}
Nope that is Cyber (http://www.cubicreality.com). I live in Arizona.you're in belgium right, the best beer in the world Smile
why don't you come to this year's ESWC ?
then we lost the opportunity for beer last week when i was crossing arizona (driving from las vegas to jackson hole). Nice rugged country!I live in Arizona
My experience as well.i managed to crash it on 2000 and more worryingly on vista for huge file collections
You can see in the shot. Less than a dozen.how many files did you have selected in that x2 snapshot you sent with the gazillion open/print menu commands?
I don't know. I do know that somehow we are doing something different as I said I could not get the "Print" item until I used this:so how did you stop crashes and duplicates?
Code: Select all
procedure TCommonShellMultiParentContextMenu.LoadRegistryKeyStrings(Focused: TNamespace);
begin
KeyStrings.Clear;
Extensions := [cmeShellDefault, cmeAsterik, cmeAllFilesystemObjects, cmeFileSystemAssociations];
// Only add the menu handlers for the focused item class
if Assigned(Focused) then
begin
if Focused.Folder then
Extensions := [cmeShellDefault, cmeFolder]
else
AddMenuKey(WideExtractFileExt(Focused.NameForParsing));
end
end;
Code: Select all
if cmeDirectory in Extensions then
AddMenuKey('Directory');
if cmeDirBackground in Extensions then
AddMenuKey('Directory\Background');
if cmeFolder in Extensions then
AddMenuKey('Folder');
if cmeAsterik in Extensions then
AddMenuKey('*');
if cmeAllFilesystemObjects in Extensions then
AddMenuKey('AllFilesystemObjects');
Code: Select all
UnknownAdded := False;
Reg := TTntRegistry.Create;
try
Reg.Access := KEY_READ;
Reg.RootKey := HKEY_CLASSES_ROOT;
for i := 0 to KeyStrings.Count - 1 do
begin
if (KeyStrings[i] <> '') then
begin
if Reg.OpenKey(KeyStrings[i], False) then
begin
// The extension key is open {.ext}
AddKey(DuplicateKey(Reg.CurrentKey), Keys);
WS := Reg.ReadString('');
Reg.CloseKey;
if WS <> '' then
begin
if Reg.OpenKey(WS, False) then
begin
// The FileClass is open, see if there is mulitiple version and a current version
if Reg.KeyExists('CurVer') then
begin
if Reg.OpenKey('CurVer', False) then
begin
CurVer := Reg.ReadString('');
if Reg.OpenKey('\' + CurVer, False) then
AddKey(DuplicateKey(Reg.CurrentKey), Keys);
end;
Reg.CloseKey;
end else
begin
AddKey(DuplicateKey(Reg.CurrentKey), Keys);
Reg.CloseKey;
end
end
end
end else
begin
if not UnknownAdded and Reg.OpenKey('Unknown', False) then
begin
AddKey(DuplicateKey(Reg.CurrentKey), Keys);
Reg.CloseKey;
UnknownAdded := True
end
end;
if cmeFileSystemAssociations in Extensions then
begin
if Reg.OpenKey('SystemFileAssociations\' + KeyStrings[i], False) then
begin
AddKey(DuplicateKey(Reg.CurrentKey), Keys);
Reg.CloseKey;
end
end;
if cmePerceivedType in Extensions then
begin
if Reg.OpenKey(KeyStrings[i], False) then
begin
WS := Reg.ReadString('PerceivedType');
if WS <> '' then
begin
if Reg.OpenKey('\SystemFileAssociations\' + WS, False) then
AddKey(DuplicateKey(Reg.CurrentKey), Keys);
end;
Reg.CloseKey;
end
end
end
end
finally
Reg.CloseKey;
Reg.Free
end;