Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Хочу получить ThreadId приложения.


Автор: NiТR0 9.9.2005, 14:11
Народ, здрасти!
Скажите пожалуйста, с помощью какой ф-ции можно надыбать ThreadId (или Thread) по хэндэлу или кэпшону приложения? Есть ли такая в природе? Может есть еще какие-нибудь способы?

Автор: Coocky 9.9.2005, 14:49
Код

//Print the current thread ID in the Debug Window
TRACE("Current Thread ID = 0x%X\n", AfxGetThread()->m_nThreadID);

Автор: maxim1000 9.9.2005, 14:59
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindow.asp

Автор: Coocky 9.9.2005, 15:02
maxim1000
Ты наверное не ту ссылку дал smile

Автор: Plamenk 9.9.2005, 15:06
Может это поможет:

Цитата
The GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.

Syntax

DWORD GetWindowThreadProcessId(          HWND hWnd,
    LPDWORD lpdwProcessId
);
Parameters

hWnd
[in] Handle to the window.
lpdwProcessId
[out] Pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not.
Return Value

The return value is the identifier of the thread that created the window.

Автор: NiТR0 9.9.2005, 15:07
Спасибо, но мне нужно найти ThreadId отдельного процесса из моего приложения.
smile

Автор: Coocky 9.9.2005, 15:12
NiТR0
Цитата(Ni @ 9.9.2005, 15:07)
Спасибо, но мне нужно найти ThreadId отдельного процесса из моего приложения

Сам спросил
Цитата(Ni @ 9.9.2005, 14:11)
Скажите пожалуйста, с помощью какой ф-ции можно надыбать ThreadId (или Thread) по хэндэлу или кэпшону приложения?

Вообще функция возвращает укзатель CWinThread*
Т.е CWinThread*tr=AfxBegiTrhead();
где tr и есть указатель на поток

Добавлено @ 15:15
NiТR0
опять я не то ответил, но как понять отдельного процесса моего приложение.Тввое приложение и есть процесс, может потока? Я дал тебе для потока..

Автор: maxim1000 9.9.2005, 15:24
Цитата
maxim1000
Ты наверное не ту ссылку дал

да... не проверил, когда вставлял... smile
просто для поиска я сначала открыл CreateWindow, а оттуда уже ближе
но уже упомянули:
Цитата
GetWindowThreadProcessId

Автор: Coocky 9.9.2005, 15:28
Может это?
Код

BOOL CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  LPSTARTUPINFO lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);



lpProcessInformation указатель на структуру, которая будет заполнена информацией о порожденном процессе после возврата из функции
Код

typedef struct _PROCESS_INFORMATION {  
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId; 
DWORD dwThreadId;

} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;


dwProcessId
Value that can be used to identify a process. The value is valid from the time the process is created until the time the process is terminated.
dwThreadId
Value that can be used to identify a thread. The value is valid from the time the thread is created until the time the thread is terminated.

Автор: NiТR0 12.9.2005, 12:06
Спасибо ребят! smile
Только я воспользовался ф-ей GetWindowThreadProcessId (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowthreadprocessid.asp)
Она по хэндлу любого app.-sa и ProcessId дает и TreadId возвращает. smile

Автор: Coocky 12.9.2005, 12:13
Ну и слава богу, хотя ответ был дан сразу Plamenk_ом smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)