Вниз
Скачать: CL | DM;

Контекстное меню дла файла в сети   Найти похожие ветки 

← →
_Seldon_   (2005-04-18 20:12) [0]

Для показа контекстного меню использую такой код:

OleInitialize(nil);
 PMenu:=TPopupMenu.Create(Application);
 SHGetDesktopFolder(IShFolder);

 Dirs:=TStringList.Create;
 try
   Delete(FileName,1,2);
   Dirs.Text:=FastReplace(FileName,"\",#13#10);
   Dirs[0]:="\\"+Dirs[0];

   for a:=0 to Dirs.Count-2 do
   begin
     MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,PChar(Dirs[a]),-1,@szOleChar,SizeOf(szOleChar));
     IShFolder.ParseDisplayName(0,nil,@szOleChar,Tmp,IdList,Tmp); {!!!}
     IShFolder.BindToObject(IdList,nil,IID_IShellFolder,Pointer(IShFolder));
   end;

   MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,PChar(Dirs[Dirs.Count-1]),-1,@szOleChar,SizeOf(szOleChar));
   IShFolder.ParseDisplayName(0,nil,@szOleChar,Tmp,IdList,Tmp);
 finally
   Dirs.Free;
 end;

 IShFolder.GetUIObjectOf(Application.Handle,1,IdList,IID_IContextMenu,nil,Pointer(IMenu));
 IMenu.QueryInterface(IID_IContextMenu2,ActiveIContextMenu);
 IMenu.QueryContextMenu(PMenu.Handle,0,1,$7fff,CMF_EXPLORE);
 idCmd:=Word(TrackPopupMenu(PMenu.Handle,TPM_LEFTALIGN or TPM_RETURNCMD or TPM_RIGHTBUTTON,Pos.X,Pos.Y,0,Application.Handle,nil));
 if idCmd>0 then
   with cmi do
   begin
     IMenu.GetCommandString(idCmd-1,GCS_VERB,nil,@cmd_verb,MAX_PATH);
     cbSize:=SizeOf(cmi);
     fMask:=0;
     hwnd:=Application.Handle;
     lpVerb:=PChar(idCmd-1);
     dwHotkey:=0;
     hicon:=0;
     nShow:=SW_SHOWNORMAL;
     lpParameters:=nil;
     lpDirectory:=nil;
     IMenu.InvokeCommand(cmi);
   end;


Для локальных файлов он работает, а для файлов, расположенных в сети - нет. В стороке, помеченной !!! на второй итерации IdList всегда равен nil. В чём ошибка?


← →
_Seldon_   (2005-04-19 22:20) [1]

Аууу :)


← →
nikkie ©   (2005-04-20 00:16) [2]

вот это что такое?

>Delete(FileName,1,2);


← →
_Seldon_   (2005-04-20 17:17) [3]

удаление \\ из имён вида \\somecomp


← →
nikkie ©   (2005-04-20 23:46) [4]

а как же это на локальных файлах работает?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-1119623186
Вольный Стрелок
2005-06-24 18:26
2005.07.31
вставка апострофа в строковую константу в Oracle-скрипте


14-1120631965
stud
2005-07-06 10:39
2005.07.31
вопрос админам


6-1113992960
zorik
2005-04-20 14:29
2005.07.31
Как узнать значение параметра (cgi-приложение)


1-1121028705
DDDsa
2005-07-11 00:51
2005.07.31
Проблема с кириллицей при поиске.


1-1121330368
753
2005-07-14 12:39
2005.07.31
Вопрос по наследованию




   Наверх