Warunki przy wykonywaniu czynności

0

W jaki sposób napisać warunek, własciwie jak będzie wyglądać warunek , Jeżeli moge utworzyć plik, Kopiuje Go , Problem wystąpił gdy program nieświadomie kopiuje aplikacje gdy jeszcze nie została zamknieta i crashuje mój program.

0
while true do
begin
  try
    //tu wstaw to kopiowanie
    break;
  except
  end;
end;
0

Możesz napisać dokładniej o co chodzi bo naprawdę ciężko zrozumieć. Masz otwarty jakiś program i chcesz go skopiować ale dopiero wtedy jak on skończy swoje działanie?
Jeżeli tak to trzeba zdobyć ID procesu ja to zrobiłam poprzez znalezienie uchwytu głównego okna aplikacji po jego tytule (na przykładzie kalulatora) a póżniej na podstawie uchwytu okna zdobywam ID procesu. Gdy masz ID procesu otwierasz proces i dzięki funkcji WaitForSingleObject czekasz na jego zakończenie:

const
  APP_TITLE = 'Kalkulator';
var
  hWin, ProcessId, hProcess: Cardinal;
begin
  hWin:= FindWindow(nil,  APP_TITLE);
  if hWin > 0 then
  begin
    GetWindowThreadProcessId(hWin, @ProcessId);
    if ProcessId > 0 then
    begin
      hProcess:= OpenProcess(SYNCHRONIZE , False, ProcessId);
      WaitForSingleObject(hProcess, INFINITE);
      //lub jezeli oczekiwanie na zamkniecie ma nie blokowac aplikacji
      //zamiast powyższej funkcji WaitForSingleObject zrób:
      //while WaitForSingleObject(hProcess, 100) = WAIT_TIMEOUT do
      //  Application.ProcessMessages;
      CloseHandle(hProcess);
    end;
  end;
  ShowMessage('Możesz kopiować'); //tu kopiowanie
end;
0

Dziękuje za zainteresowanie tematem i za odpowiedzi, w tym przypadku starczył tylko pierwszy kod, wykonuje poprawnie swoje zadanie, po prostu gdy aplikacja nie zdązyła sie zamknąć a program już nadpisywał to crashowało aplikacje, a teraz jest ok, jeżeli nie moze zapisac to po czasie ponawia. Pozdrawiam.

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