VC++ help
4 отговора
107 прегледа
VC++ help
Imam pitane
Startiram slednoto nesto
ShellExecute(......);
tova startira nov thread ,a az iskam da razbera
koga spira thread
Startiram slednoto nesto
ShellExecute(......);
tova startira nov thread ,a az iskam da razbera
koga spira thread
Отг: VC++ help
Izpozwaj ShellExecuteEx. Po tozi nachin mojesh da poluchish HANDLE na nowostartirania process. Sled towa moje da izpolzwash WaitForSingleObject za da razbe[esh koga e sprial. za poweche podrobnosti procheti w MSDN.
Uspeh!!
Uspeh!!
Отг: VC++ help
Тази функция ще стартира нов процес, а не нов тред. Ако искаш да създадеш тред използвай:CreateThread(...).
Има много начини за синхронизиране на тредове и процеси.
Най-лесно според мен става с mutex или event. Създават се съответно с CreateMutex или CreateEvent и са обекти на Windows, които имат имена. С тези имена можеш да ги access-ваш от друг процес или тред. След това използваш WaitForSingleObject или WaitForMultipleObjects за да разбереш кога mutex-а е освободен или кога event-a е изпълнен. Оттам нататък е въпрос на интерпретация :-).
Има много начини за синхронизиране на тредове и процеси.
Най-лесно според мен става с mutex или event. Създават се съответно с CreateMutex или CreateEvent и са обекти на Windows, които имат имена. С тези имена можеш да ги access-ваш от друг процес или тред. След това използваш WaitForSingleObject или WaitForMultipleObjects за да разбереш кога mutex-а е освободен или кога event-a е изпълнен. Оттам нататък е въпрос на интерпретация :-).
Отг: VC++ help
::CreateProcess ( ... );
posle wzemash handle na process-a.
i
::WaitForSingleObject( hProc, INFINITE );
<-- tuk stiga kogato process-a swyrshi.
towa e naj lesnoto reshenie, bez iztynchena sinhronizacija. Ne e podhodjashto ako ima UI shtoto Wait... shte prispi tek. thread.
"psewdo" UI reshenie na syshtija princip shte se poluchi ako wkarash ::WaitFor... w loop:
while ( Wait...( hProc, 500/*ms*/ ) == ...TIMEOUT.. )
{
if ( PeekMessage( ... ) )
{
TranslateMessage(...);
DispatchMessage( ... )
}
}
razbira se naj kulturno e sys WaitForMultiple...
posle wzemash handle na process-a.
i
::WaitForSingleObject( hProc, INFINITE );
<-- tuk stiga kogato process-a swyrshi.
towa e naj lesnoto reshenie, bez iztynchena sinhronizacija. Ne e podhodjashto ako ima UI shtoto Wait... shte prispi tek. thread.
"psewdo" UI reshenie na syshtija princip shte se poluchi ako wkarash ::WaitFor... w loop:
while ( Wait...( hProc, 500/*ms*/ ) == ...TIMEOUT.. )
{
if ( PeekMessage( ... ) )
{
TranslateMessage(...);
DispatchMessage( ... )
}
}
razbira se naj kulturno e sys WaitForMultiple...