Menu kontekstowe windows

0

Witam...
Od dluzszego czasu probuje wykombinowac sposob przekazania paramteru
z poziomu menu kontekstowego Windowsa do mojej aplikacji (głownie chodzi mi tylko o sciezke ) tzn:

poslugujac sie tym kodem.. bodajrze napisanego przez Olesio:

uses Registry;

var
Reg : TRegistry;
begin
try
  Reg := TRegistry.Create;  // otworz rejestr
    try
    // zapis integracji z systemem Windows
    if CheckBox1.Checked = true then
      begin
      // dla Folderów , Dysków , wszystkich plików
        Reg.RootKey := HKEY_CLASSES_ROOT;
        Reg.OpenKey('\Directory\shell\NAZWA_WPISU\command',true);
        Reg.WriteString('','"'+Application.ExeName+'" "%1"');
        Reg.OpenKey('\Drive\shell\NAZWA_WPISU\command',true);
        Reg.WriteString('','"'+Application.ExeName+'" "%1"');
        Reg.OpenKey('\*\shell\NAZWA_WPISU\command',true);
        Reg.WriteString('','"'+Application.ExeName+'" "%1"');
        Reg.CloseKey;
       end
      else
  // usunięcie menu kontekstowego
    if CheckBox1.Checked = false then
      begin
        Reg.RootKey := HKEY_CLASSES_ROOT;
        Reg.DeleteKey('\Directory\shell\NAZWA_WPISU\command');
        Reg.DeleteKey('\Directory\shell\NAZWA_WPISU');
        Reg.DeleteKey('\Drive\shell\NAZWA_WPISU\command');
        Reg.DeleteKey('\Drive\shell\NAZWA_WPISU');
        Reg.DeleteKey('\*\shell\NAZWA_WPISU\command');
        Reg.DeleteKey('\*\shell\NAZWA_WPISU');
        Reg.CloseKey;
      end;

   finally
       Reg.Free;
 end;
   Application.MessageBox('Ustawiono menu kontekstowe.',MB_Ok + MB_IconInformation);
 except
   Application.MessageBox('Błąd dostępu do rejestru. Nie masz uprawnień Administratora ?!','Błąd',MB_Ok + MB_IconStop);
 end;
end;

// użycie parametru (po kliknięciu w menu kontekstowym)
procedure TSearchForm.FormShow(Sender: TObject);
begin
  if ParamCount > 0 then Label1.Caption := ParamStr(1);
{
   jezeli uzytkownik kliknie na menu - otworz program
   i pokaż w Label1 nazwę ścieżki do pliku, folderu lub dysku - pobranego
  przez (paramstr)
}
end;

wszystko ladnie smiga, ale jak widac ten kod otwiera od nowa aplikacje.. i w zdarzeniu OnShow przekazuje paramter..
a ja chce przelazac paramter do wlaczonej juz aplikacji.. i tu mam problem../

poszperalem w google i demos-ach Delphi i znalalzem w Demos\ActiveX\ShellExt
kod contmenu.dpr ktory tworzy biblioteke.. .dll tylko z uzyciem jej nie umiem sobie poradzic..
pewnie trzeba odwolac sie do:
TContextMenu.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult;
Prosze o pomoc..

Pozdrawiam..

0

Nie pamiętam czy taki kod podawałem kiedyś, ale możliwe. Zobacz na temat pod adresem:
http://4programmers.net/Forum/viewtopic.php?id=148967 podałem tam sposób wczytania
do programu parametru gdy ten jest już otwarty, a ponieważ odsiebie zostało zamknięte to
podany tam program pobierzesz z poniższej lokalizacji. Przeanalizuj też kod w tym zipie, do
którego linka podaje we wspomnianym wątku Użytkownik o nazwie jack. A mój sposób na:

http://www.speedyshare.com/files/19858772/multi_file_open.rar
0

Heh..
dziwne przegladalem ten art. i pominalem wypowiedz jack-a co jak widac bylo bledem bo user ladnie wszystko wytlumaczy i udostepnil zrodla..

Biore sie do roboty..

Pozdrawiam./

1 użytkowników online, w tym zalogowanych: 0, gości: 1