2.调用 SetConsoleTitle() 来将控制台标题更改为一个唯一的标题。
3.调用 Sleep(40),以确保已更新窗口标题。
4.调用 FindWindow(NULL, uniquetitle),以获取 HWND,此调用将返回 HWND, 如果 *** 作失败,将返回 NULL。
5.从步骤 1 中,若要恢复原始窗口标题检索调用 SetConsoleTitle() 的值。
应该测试结果的 HWND。例如可以测试是否返回的 HWND 对应于当前进程在 HWND 上调用 GetWindowText() 并将结果与 GetConsoleTitle() 进行比较。
示例代码
下面的函数中检索当前控制台应用程序窗口句柄 (HWND)。如果此函数成功,则返回值是控制台窗口的句柄。如果此函数失败,则返回值为 NULL。省略一些错误检查,为简洁起见。
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndFound// This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]// Contains fabricated
// WindowTitle.
char pszOldWindowTitle[MY_BUFSIZE]// Contains original
// WindowTitle.
// Fetch current window title.
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE)
// Format a "unique" NewWindowTitle.
wsprintf(pszNewWindowTitle,"%d/%d",
GetTickCount(),
GetCurrentProcessId())
// Change current window title.
SetConsoleTitle(pszNewWindowTitle)
// Ensure window title has been updated.
Sleep(40)
// Look for NewWindowTitle.
hwndFound=FindWindow(NULL, pszNewWindowTitle)
// Restore original window title.
SetConsoleTitle(pszOldWindowTitle)
return(hwndFound)
}
句柄是windows分配给每一个程序中的每一个组件的唯一编码标识,你能看到的一个窗口他有句柄,窗口内部的按钮菜单背景音乐、图像等等。。。。。都有句柄,对于一个程序,只有运行起来以后,才会由windows制定分配一个进程,并拥有pid,pid才是程序运行的唯一标识,如果你想知道程序的窗口句柄是否改变,那么你需要调用winapi,不停地findwindow,随时获取窗口句柄进行比对题主想问的是win句柄数占用过多导致网络异常怎么办win句柄数占用过多导致网络异常解决方法如下:1、关闭一些不必要的程序,释放系统资源。
2、检查程序是否有句柄泄露的情况,及时关闭不需要的句柄。
3、调整系统参数,增加系统资源的分配。
4、更新或升级网络驱动程序,确保其与 *** 作系统兼容。
5、如果是网络设备的问题,可以尝试重新启动路由器、交换机等设备,或者更换网络线缆。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)