zoukankan      html  css  js  c++  java
  • Windows 获取控制台窗口句柄

    详细信息


    因为多个窗口可能具有相同的标题,您应该更改当前的控制台窗口标题为唯一的标题。这将有助于防止返回不正确的窗口句柄。使用 SetConsoleTitle() 来更改当前的控制台窗口标题。下面是此过程:

    1. 调用 GetConsoleTitle() 来保存当前的控制台窗口标题。
    2. 调用 SetConsoleTitle() 来将控制台标题更改为一个唯一的标题。
    3. 调用 Sleep(40),以确保窗口标题已更新。
    4. 调用 FindWindow (NULL,uniquetitle),以获取此调用的 HWND 返回 HWND,如果操作失败,则为返回NULL。
    5. 从步骤 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);
       }
  • 相关阅读:
    【数据结构】优先队列和堆
    【ACM非算法部分】读入优化
    【解题报告】[动态规划]RQNOJ
    【解题报告】[动态规划]RQNOJ
    【解题报告】[动态规划]-PID69 / 过河卒
    【解题报告】[动态规划]
    【解题报告】[动态规划]RQNOJ PID2 / 开心的金明
    扫描线矩形周长的并 POJ1177
    fft模板 HDU 1402
    离线树状数组 hihocoder 1391 Countries
  • 原文地址:https://www.cnblogs.com/YZFHKMS-X/p/11810684.html
Copyright © 2011-2022 走看看