VC++ help

4 отговора 107 прегледа
#1

VC++ help

Imam pitane
Startiram slednoto nesto
ShellExecute(......);
tova startira nov thread ,a az iskam da razbera
koga spira thread

Отговор
в отговор на ARLINA #2

Отг: 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!!

Отговор
в отговор на ARLINA #3

Отг: VC++ help

Тази функция ще стартира нов процес, а не нов тред. Ако искаш да създадеш тред използвай:CreateThread(...).
Има много начини за синхронизиране на тредове и процеси.
Най-лесно според мен става с mutex или event. Създават се съответно с CreateMutex или CreateEvent и са обекти на Windows, които имат имена. С тези имена можеш да ги access-ваш от друг процес или тред. След това използваш WaitForSingleObject или WaitForMultipleObjects за да разбереш кога mutex-а е освободен или кога event-a е изпълнен. Оттам нататък е въпрос на интерпретация :-).


Отговор
в отговор на ARLINA #4

Отг: 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...

Отговор
в отговор на jaw #5

Отг: VC++ help

Za da ne zaspi UI-to se izpolzva MsgWaitForMultipleObjects(...)

Отговор