這幾天在學習線程和進程,今天特別把MSDN中的相關資料整理一下,特地發出來。這樣找MSDN的時候不會大盲目。如果還有更多的或是什麼地方有錯誤請指出。
如果進程只有一個線程,那麼線程ID與進程ID就是指同一個ID
1,由窗口句柄得到進程ID和線程ID
DWORD GetWindowThreadProcessId( //返回值爲線程ID HWND hWnd, //參數:窗口句柄 LPDWORD lpdwProcessId //返回值:進程ID的指針 );
2,由進程句柄得到進程ID
DWORD WINAPI GetProcessId( //返回進程ID __in HANDLE Process //參數:進程句柄 );
3,由線程句柄得到線程ID
DWORD WINAPI GetThreadId( //返回線程ID __in HANDLE Thread //參數:線程句柄 );
4,由線程句柄得到進程ID
DWORD WINAPI GetProcessIdOfThread( //返回進程ID __in HANDLE Thread //參數:線程句柄 );
5,返回當前線程或進程的句柄、ID
HANDLE WINAPI GetCurrentThread(void); //返回當前線程的句柄 DWORD WINAPI GetCurrentThreadId(void); //返回當前線程的ID HANDLE WINAPI GetCurrentProcess(void); //返回當前進程句柄 DWORD WINAPI GetCurrentProcessId(void); //返回當前進程ID
6,枚舉窗口
BOOL EnumWindows( //枚舉窗口 WNDENUMPROC lpEnumFunc, //回調函數 LPARAM lParam //傳給回調函數的參數指針 );
7,根據提供的窗口句柄找到需要另一個窗口句柄
HWND GetWindow(
HWND hWnd,
UINT uCmd
);
// uCmd可以是以下值GW_CHILD, GW_HWNDFIRST, GW_HWNDLAST, GW_HWNDNEXT, GW_HWNDPREV, GW_OWNER
8,得到進程的句柄數量
BOOL WINAPI GetProcessHandleCount( //得到進程的句柄數量 __in HANDLE hProcess, //參數:進程句柄 __in_out PDWORD pdwHandleCount //返回值。句柄數量 );
9,返回指定窗口的下一個窗口句柄
HWND GetNextWindow( //返回下一個窗口句柄
HWND hWnd,
UINT wCmd
);
10,使用窗口名查找窗口句柄
HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName //字符串指針
);
11,使用窗口句柄得到該窗口標題
int GetWindowText( HWND hWnd, LPTSTR lpString, int nMaxCount );
12,搜索子窗口句柄,可以指定父窗口
HWND FindWindowEx( HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow );