获取控制台的窗口句柄
2013-11-13 15:18
323 查看
它很有用操作与控制台窗口应用程序。Win32 API 提供了用于获取没有直接的方法与控制台应用程序关联的窗口句柄。但是,您可以获取通过调用 FindWindow() 的窗口句柄。此函数可检索基于的类名或窗口的窗口句柄。
调用 GetConsoleTitle() 来确定当前的控制台标题。然后提供当前的控制台标题为 FindWindow()。
因为多个窗口可能具有相同的标题,您应该更改当前控制台窗口标题,唯一的标题。这将有助于防止返回不正确的窗口句柄。使用 SetConsoleTitle() 来更改当前的控制台窗口标题。下面是此过程:
调用 GetConsoleTitle(),若要保存当前的控制台窗口标题。
调用 SetConsoleTitle() 来将控制台标题更改为一个唯一的标题。
调用 Sleep(40),以确保已更新的窗口标题。
调用 FindWindow (NULL,uniquetitle),以获取该 HWND如果操作失败,此调用将返回 HWND,则为 NULL。
从第 1 步中检索到的值调用 SetConsoleTitle()还原原始的窗口标题。
您应该测试结果的 HWND。例如,您可以测试,看看是否返回 HWND 通过调用对应与当前进程在 HWND,并比较结果与 GetWindowText()GetConsoleTitle()。
不能保证得到的 HWND 适用于所有窗口句柄操作。
调用 GetConsoleTitle() 来确定当前的控制台标题。然后提供当前的控制台标题为 FindWindow()。
因为多个窗口可能具有相同的标题,您应该更改当前控制台窗口标题,唯一的标题。这将有助于防止返回不正确的窗口句柄。使用 SetConsoleTitle() 来更改当前的控制台窗口标题。下面是此过程:
调用 GetConsoleTitle(),若要保存当前的控制台窗口标题。
调用 SetConsoleTitle() 来将控制台标题更改为一个唯一的标题。
调用 Sleep(40),以确保已更新的窗口标题。
调用 FindWindow (NULL,uniquetitle),以获取该 HWND如果操作失败,此调用将返回 HWND,则为 NULL。
从第 1 步中检索到的值调用 SetConsoleTitle()还原原始的窗口标题。
您应该测试结果的 HWND。例如,您可以测试,看看是否返回 HWND 通过调用对应与当前进程在 HWND,并比较结果与 GetWindowText()GetConsoleTitle()。
不能保证得到的 HWND 适用于所有窗口句柄操作。
示例代码
下面的函数中检索当前的控制台应用程序窗口句柄 (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); }
相关文章推荐
- 获取控制台窗口的句柄
- 如何获取控制台窗口句柄 (HWND)
- 如何获取控制台窗口句柄 (HWND)
- VC 获取控制台窗口的句柄(hWnd)
- VC 获取控制台窗口的句柄(hWnd)
- windows获取控制台窗口的句柄
- 获取控制台窗口的句柄
- 获取控制台窗口句柄GetConsoleWindow
- 获取控制台窗口的句柄(HWND)和程序中输出回车键
- 如何获取控制台窗口句柄 (HWND)
- VC 获取控制台窗口的句柄(hWnd)
- 控制台窗口句柄获取方法
- 获取控制台窗口的句柄
- 获取控制台窗口句柄GetConsoleWindow
- 获取控制台窗口的句柄(hWnd)
- MFC窗口最大化&移动窗口位置&获取控件句柄,设置控件大小
- API方式(Foxpro中HtmlHelp)调用chm帮助文档(不用foxtools.fll获取窗口句柄)
- Python+selenium 获取浏览器窗口坐标、句柄的方法
- 通过ProcessID获取窗口句柄
- Process 后, 如何获取打开窗口的句柄(根据进程句柄获取窗口句柄)