【问题标题】:Setting active a Chrome window (C++)设置激活 Chrome 窗口 (C++)
【发布时间】:2014-02-14 10:12:59
【问题描述】:

我正在尝试将 Chrome 窗口设置为前台并激活它以获得键盘的焦点。我的代码适用于记事本或 IE,但不适用于 Google Chrome。

//Getting the HWND of Chrome
HWND chromeWindow = FindWindow("Chrome_WidgetWin_1", NULL);

DWORD dwCurrentThread = GetCurrentThreadId();
DWORD dwFGThread = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
AttachThreadInput(dwCurrentThread, dwFGThread, TRUE);

//Actions
AllowSetForegroundWindow(ASFW_ANY);
bool fore =SetForegroundWindow(chromeWindow);
if(fore==false){cout << "fore failed"<<endl;}

bool capture = SetCapture(chromeWindow);
if(capture==false){cout << "capture failed" <<endl;}

bool focus = SetFocus(chromeWindow);
if(focus==false){cout << "focus failed"<<endl;}

bool active = SetActiveWindow(chromeWindow);
if(active==false){cout << "active failed"<<endl;}

//Finishing
AttachThreadInput(dwCurrentThread, dwFGThread, FALSE);

代码将 Google Chrome 窗口设置为前台,但没有激活它或将键盘聚焦在它上面。我不知道出了什么问题。显示的结果是:

capture failed.
focus failed.
active failed.

我能做什么?

【问题讨论】:

    标签: c# c++ google-chrome hwnd


    【解决方案1】:

    嗯,我几天前就找到了答案。

    谷歌浏览器有两个窗口具有相同的类名“Chrome_WidgetWin_1”,我试图激活第一个窗口,而有用的窗口是第二个窗口。因此,我搜索了第二个窗口,然后在该窗口中使用了 SetForegroundWindow()。

    结果是:

    //Getting the HWND of Chrome
    HWND chromeWindow = FindWindow("Chrome_WidgetWin_1", NULL);
    HWND chrome = GetWindow(chromeWindow, GW_HWNDNEXT);
    
    //Setting the window to the foreground (implies focus and activating)
    SetForegroundWindow(chrome);
    

    还是谢谢。

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多