这几天在学习线程和进程,今天特别把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 );