"Otwórz wszystkie" w Delphi

0

Witam

W jaki sposób może przez ParamStr i ParamCOunt zrobić coś takiego że jak klikne w folderze na otwórz wszytkie to nie uruchomi mi programu x razy (program jest zabezpieczony przez ponownym uruchomieniem). Tylko w parametrze dostaje 1 plik a nie wszystkie wybrane

Dzięki i pozdrowiam

0

TFisSharedMemory moze byc dobrym rozwiazaniem przechowywasz zmienna w pamieci globalnej

i jak zaladujesz nowy program to ustawiasz ta zmienna na sciezke do pliku i puszczasz nowo otwarta aplikacja do glownej SendMessage(twoja wiadomosc);

odpowiendio glowna aplikacja przy przechwyceniu komunikatu pobiera z tej pamieci Stringa

0

Czyli jak? ;/ podasz gotowy kod, bo jestem poczatkujacy w pisaniu programow w komplikatorach?

0

Zobacz poniższy kod, z tego co testowałem działa poprawnie. Pozwoli uruchomić kolejne instacje tej
samej aplikacji tylko jeżeli zostanie wywołany z parametrem "/many". Dokładnie jak działają mutexy,
to powinno się Tobie udać znaleźć w googlach. Napisz czy taki kod Tobie odpowiada, no i sorki że
dopiero teraz piszę ale musiałem przetestować ten kod. Jak ktoś ma inny pomysł to niech napisze.
I za pewne da się tę procedurę w OnCreate może uprościć, ale ja zrobiłem tak aby działało, bo jak
wcześniej testowałem to uruchamiał mi się "w kółko" i miałem masę okien, więc zrobiłem tak jak tu:

// do uses dodaj moduł ShellApi
procedure WczytajPlik(const Plik: string);
begin
  // Ta procedura może robić coś innego, to co robi teraz jest tylko dla testów
  Form1.Caption := Plik;
end;

procedure TForm1.FormCreate(Sender: TObject);
const
  Kluczowy = '/many';
  TheMutex = 'unikalna nazwa muteksu';
var
  I : Integer;
begin
  Application.Title := Caption;
  CreateMutex(nil, False, TheMutex);
  if (AnsiLowerCase(ParamStr(1)) <> Kluczowy) then
  begin
    if ParamStr(1) <> '' then
    begin
      WczytajPlik(ParamStr(1));
    end;
    if GetLastError() <> 0 then
    begin
      MessageBox(Application.Handle,
      'Możesz uruchomić tylko jedną kopię tej aplikacji na raz!',
      PChar(Application.Title), MB_OK + MB_ICONWARNING);
      Halt;
    end;
  end
  else
  begin
    if ParamCount > 1 then
    begin
      WczytajPlik(ParamStr(2));
    end;
  end;
  if (ParamStr(1) = Kluczowy) then
  begin
    if ParamCount > 2 then
      for I := 3 to ParamCount do
      begin
        ShellExecute(Application.Handle, 'open', PChar(Application.ExeName),
          PChar(Kluczowy +#32+ ParamStr(I)), nil, SW_SHOW);
      end;
    end;
end;
0

Ale jak ;/.. gdzie to sie wkleja?

0

Ale komuś coś zrobie !!!! :-[ :-[ :-[ :-[ :-[
Kto się podszył pod Damian 123 i zadaje głupie pytania !
Ja wiem jak to zrobić :/

komorkowydzon'wi i olesiowi dziękuje za odp.

Pozdrawiam

0

Prosze bardzo. A co do tego, że ktoś się pod Ciebie podszywa i robi sobie jaja pisząc że nie wie gdzie co
ma wkleić - to rozwiązaniem jest poświęcenie paru chwil i zalożenie sobie konta, pisząc z niego inni będą
mieć pewnośc, że to na pewno Ty piszesz raczej. Inna sprawa to czy pisanie bez zalogowania jest nadal
sensowne, ale o tym byłą już dyskusja w innym dziale i moderatorzy uznali, że nie zostanie nic zmienione.

0

a to niby czemu

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