Autor Téma: Hláška aplikace neodpovídá při použití CreateProcess  (Přečteno 929 krát)

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 136
  • Karma: 0
Dobrý den,
mohl bych se prosím zeptat, zda má někdo zkušenost s voláním aplikace přes CreateProcess? V Delphi aplikaci volám jinou aplikaci a potřebuji počkat na její zavření (pro zpracování dat které se mezitím vygenerují). Jenže občas (1x za 100 spuštění) zamrznou Windows 7 s tím, že hlavní aplikace přestala odpovídat a jediná možnost je vše zavřít přes task manager. U Windows XP se nám to nikdy nestalo, pouze u Windows 7. Níže je kód:

 
Kód: Delphi [Vybrat]
  1.    
  2. var
  3.   proc_info: TProcessInformation;
  4.   startinfo: TStartupInfo;
  5.   ExitCode: longword;
  6. begin
  7.   FillChar(proc_info, sizeof(TProcessInformation), 0);
  8.   FillChar(startinfo, sizeof(TStartupInfo), 0);
  9.   startinfo.cb := sizeof(TStartupInfo);
  10.   StartInfo.dwFlags := STARTF_USESHOWWINDOW;
  11.   startinfo.wShowWindow := SW_HIDE;
  12.   if CreateProcess(nil, PChar(strFQN), nil, nil,False, CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS, nil, nil,                      
  13.   StartInfo, Proc_Info) <> False then
  14.   begin
  15.     WaitForSingleObject(proc_info.hProcess, INFINITE);
  16.     GetExitCodeProcess(proc_info.hProcess, ExitCode);
  17.     CloseHandle(proc_info.hThread);
  18.     CloseHandle(proc_info.hProcess);
  19.   end;
  20. end;
  21.  

Nějaká nápad co by s tím šlo udělat?

Děkuji!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2611
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #1 kdy: 06-11-2019, 14:05:03 »
mohl bych se prosím zeptat, zda má někdo zkušenost s voláním aplikace přes CreateProcess? V Delphi aplikaci volám jinou aplikaci a potřebuji počkat na její zavření (pro zpracování dat které se mezitím vygenerují).

Vyzkousej JclMiscel.WinExec32AndWait() ev. se tam muzes inspirovat/porovnat, co je tam jinak.

Offline Marek Weyda

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 8
    • Verze Delphi: Delphi 2007, 10.1 Berlin
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #2 kdy: 06-11-2019, 14:37:18 »
A ve Windows event logu je něco použitelného nebo ne ? Podíval bych se tam. Mě to občas i navede na správnou cestu. Pak si také nejsem jistý u toho CloseHandle jestli to není lepší udělat v obráceném pořadí, ale je to asi jedno.

Offline starous

  • Mladík
  • **
  • Příspěvků: 62
  • Karma: 2
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #3 kdy: 06-11-2019, 19:04:51 »

Vyzkousej JclMiscel.WinExec32AndWait() ev. se tam muzes inspirovat/porovnat, co je tam jinak.

Také používám, použití je jednoduché. Je to knihovna JCL, stáhnout se dá přímo přes GetIt Package Manager.

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 136
  • Karma: 0
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #4 kdy: 07-11-2019, 12:57:47 »
Děkuji za rady. V JCL vypadá funkce WinExec32AndWait prakticky stejně a patrně zde problém nebude. Je zajímavé, že se problém objevil až teď po nasazení na Windows 7. U XP to běhá roky bez problémů a na Win 7 se chyba objevila 2x za den.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2611
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #5 kdy: 07-11-2019, 17:16:24 »
U XP to běhá roky bez problémů a na Win 7 se chyba objevila 2x za den.
XP nemely UAC... Je ta tvoje spoustena aplikace radne vychovanou wokenni aplikaci?

Offline Marek Weyda

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 8
    • Verze Delphi: Delphi 2007, 10.1 Berlin
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #6 kdy: 08-11-2019, 08:42:54 »
Ještě bych opravdu prověřil ten Windows event log, jak jsem psal. Nedávno jsem řešil zatuhnutí aplikace, jak se popisuje v této diskuzi, nebyla ale volána z jiného programu. Nicméně z toho Windows event logu jsem vyčetl, že 2 minuty před selháním aplikace jim na síti selhalo TCP/IP spojení. Zatuhlo to dost podobně - muselo se to sestřelit přes Správce úloh. Neběží to právě v nějakém prostředí, kde selhává síťové připojení ? Prověřil bych v tom Windows event logu, co se dělo v čase, kdy aplikace selhala a také, co se dělo předtím a to hlášení od různých aplikací, nejenom pro tu, co selhala. Snadno se to tam dá vyfiltrovat.

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 136
  • Karma: 0
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #7 kdy: 08-11-2019, 09:37:59 »
Citace
XP nemely UAC... Je ta tvoje spoustena aplikace radne vychovanou wokenni aplikaci?

Co si mám pod tím představit?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4546
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Hláška aplikace neodpovídá při použití CreateProcess
« Odpověď #8 kdy: 08-11-2019, 14:49:15 »
Ja som presvedčený, že má na mysli tieto dve veci:

  • Správne používanie administrátorského/užívateľských účtov a prístupov k nim
  • Používať adresáre podľa odporúčaní MS. Nezapisovať hocičo hocikde
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.