谁知道如何获取控制台窗口句柄 (HWND)

 我来答
Alois_151
2013-10-10 · TA获得超过124个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:57.3万
展开全部
这将有助于防止返回此错误的窗口句柄。使用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); } 回到顶端 | 提供反馈
力控科技
2024-12-19 广告
第一步:看XPE是什么版,如果内核是英文版,需要安装一个MUI包,即语言包。第二步:进入控制面板-区域和语言选项,如下图,在区域选项中,选择“中文(中国)”,位置也为“中国”,在高级选项中,代码页转换表中,将所有的“简体中文”都选择上。... 点击进入详情页
本回答由力控科技提供
匿名用户
2016-05-17
展开全部
GetConsoleWindow 获取控制台窗口的句柄
ShowWindow(GetConsoleWindow(),0);//不显示控制台窗口
GetStdHandle 获取控制台标准输入输出的句柄
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0004);//设置输出的颜色
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式