Kończy działanie, ale nie zawsze w tym samym momencie, bo to zależy od ilości koniecznych działań.
No to tylko CreateProcess + WaitForSingleObject, żadne inne prowizorki.
Kończy działanie, ale nie zawsze w tym samym momencie, bo to zależy od ilości koniecznych działań.
void __fastcall ExecuteApplication(AnsiString FileName, char param[], HWND h)
{
SHELLEXECUTEINFO sei;
memset(&sei, 0, sizeof (sei));
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = h;
sei.lpVerb = "open";
sei.lpFile = FileName.c_str();
sei.lpParameters = param;
sei.nShow = SW_SHOWDEFAULT;
if(ShellExecuteEx(&sei))
try
{
WaitForSingleObject(sei.hProcess, INFINITE);
}
__finally
{
CloseHandle(sei.hProcess);
}
}
#include <stdio.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ExecuteApplication("c:\\program.exe", winini, this);
}
KOD cpp: UKRYJif(ShellExecuteEx(&sei))
try
{
WaitForSingleObject(sei.hProcess, INFINITE);
}
__finally
{
CloseHandle(sei.hProcess);
}
KOD cpp: UKRYJ// <-- to chyba mogę wykasować, ponieważ nie ma żadnego wejścia
KOD cpp: UKRYJ// <-- to już się nie udaje, ponieważ w pliku out.txt nie ma wyniku polecenia ls.
Last login: Fri Feb 4 12:19:12 2011 from host
Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 8 gości