Multiple files in Explorer Context menu

Vse drugo, kar ne spada v nobeno zgornjo kategorijo.
Odgovori
chavlji
Prispevkov: 5
Pridružen: 29.12.2011 14:26:37

Multiple files in Explorer Context menu

Odgovor Napisal/-a chavlji » 29.12.2011 14:39:45

Dober dan,
Delam aplikacijo za multiple rename fileov. Delovala naj bi tako:
Izberi fajle v explorerju -> iz context menu izberi "Jan Quick Rename" -> odpre moj program in v listview zapise poti do vseh izbranih fajlov

Trenutno sem enostavno v regeditu dodal nov kljuc v "HKEY_CLASSES_ROOT\*\Shell\" in pod command "pot\do\programa.exe %1"
Explorer za vsak izbran item zazene eno instanco mojega programa.

Z uporabo Leejevega GlobalVars sem preprecil odpiranje vecih instanc in vsak fajl ob odprtju nove instance posredujem prvo odprti instanci:

Koda: Izberi vse

GVHandle := tGlobalVar.Create('QuickRenVars',SizeOf(Cardinal),@Obstaja);
  try

    // ...dodaj file iz paramsStr v odprtega,...
    if Obstaja then
     begin
     CustomData.FileName := paramstr(1);
     Data.cbData:=SizeOf(TData);
     Data.dwData := COPYDATA_NEWFILE; {da sprejemnik ve kakega tipa je}
     Data.lpData := @CustomData;

     SendMessage( GVHandle.Value,WM_COPYDATA,0,LPARAM(@Data) );
     SetForegroundWindow(gvHandle.Value);
     exit;
     end
    // ...sicer normalno odpri app:
    else // normalno odpri prvo instanco programa
Stvar dela, ampak je nemogoce pocasna. Da doda 100 fajlov, porabi eno minuto!

A ima kdo idejo kako stvar pohitrit?
Zaenkrat se mi zdi, da je edina moznost lasten dll s context menu handlerjem. Ta ima hipni dostop do vseh izbranih datotek. Lahko bi odprl moj program in poslal win message za vsak file. Stvar bi bila hitrejsa, ker ne bi rabil zaganjat programa za vsak file posebej.

Kakršen koli nasvet je dobrodošel!

Odgovori