A konzolalkalmazással történő munka során hozzon létre a processzoldatot és a winexec-et

CreateProcess és Winexec, amikor a konzolalkalmazással dolgozik.

Helló Az emberek, kérjük, magyarázza meg:
miért ezzel a kóddal:
ha a winexec (arjpchar, SW_HIDE) <= 31 then label3.caption:="Архивация не произведена"
else label3.caption: = "Az archiválás befejeződött";
A konzol ablak egyáltalán nem nyílt meg,
de ugyanakkor.
sui.dwFlags: = startf_UseShowWindow;
sui.wshowWindow: = SW_hide;

ha nem CreateProcess (nil, arjpchar, nil, nil, false, 0, nil, nil, sui, psi) akkor
kezdődik
label3.caption: = "sikertelen";
Kilépés;
végén;
CloseHandle (Psi.hThread);
WaitForSingleObject (Psi.hProcess, INFINITE);
CloseHandle (Psi.hProcess);

Az ablak nem záródik le a biztonsági mentés vége után? a segítségben azt írják, hogy a winexec a CreateProcess-hoz fordul. Szükségem van valamire cserélni a várakoztatásra? (A fórum példáit)

> if winexec (arjpchar, SW_HIDE) <= 31 then>label3.caption: = "Nem végzett archiválás"
> else label3.caption: = "Az archiválás befejeződött";
> a konzol ablak egyáltalán nem nyílt meg
a hiba valószínűleg SW_HIDE

> ha nem CreateProcess (nil, arjpchar, nil, nil, false, 0, nil, nil, sui, psi)
Miért dwCreationFlags = 0? És miért kell CloseHandle (Psi.hThread)?
Én ezt megtenném (IMHO):
IF nem CreateProcess (null, arjpchar, null, null, hamis, CREATE_NEW_CONSOLE vagy NORMAL_PRIORITY_CLASS, null, null, sui, psi), akkor
kezdődik
label3.caption: = "sikertelen";
Kilépés;
vége más
kezdődik
WaitForSingleObject (psi.hProcess, végtelen);
CloseHandle (psi.hProcess);
//. //
végén;
Az ablak bezárásához létre kell hoznia a megfelelő pif-et, vagy a // helyett. bezárja a konzol ablakot programilag.

> a hiba valószínűleg SW_HIDE
Szóval szükségem van rá. így a folyamat láthatatlan a felhasználó számára.

WaitForSingleObject (psi.hProcess, végtelen) - a cselekvés végtelen várakozásához vezet. Ezért a "munkamenet befejezése" ablak marad. Zárásakor a program működik. Szükségem van rá, hogy a program a biztonsági mentés befejezése után elkezdjen dolgozni, és ne zárja be az ablakot.

> if winexec (arjpchar, SW_HIDE) <= 31 then
. SW_HIDE - a konzol ablak továbbra is lóg a memóriában, ami nem teljesen helyes
> sui, psi
és töltse őket nullákkal. és méretét hozzárendelni?
Azt javaslom, hogy használjon nem Dosov archivert és egy coblint (win32) - minden problémád azonnal eltűnik
naprmer rar32 (ha szappannal kell dobnia)

a konzol archiválóiban maga a konzol bezáródik, és nem várja meg, amíg bezáródik
Nézzétek meg, mit gondoltam rád

eljárás TForm1.Button1Kattintson (Feladó: TObject);
var si: STARTUPINFO;
pi: PROCESS_INFORMATION;
xc: bíboros;
kezdődik
ZeroMemory (@ si, sizeof (si));
si.cb: = SizeOf (si);
si.wShowWindow: = SW_HIDE;
si.dwFlags: = STARTF_USESHOWWINDOW;

Memória: 0,73 MB
Időzítés: 0.041 mp

Kapcsolódó cikkek