【问题标题】:Bring opera window to front!把歌剧窗口带到前面!
【发布时间】:2010-04-25 12:29:42
【问题描述】:

您能帮我弄清楚如何使用类名将 Opera 的窗口放在前面吗?!我使用以下过程将其他应用程序放在前面,它工作正常。我只需要使用一个类名而不是窗口的标题。如果我改用窗口标题,则该过程有效。流程如下:

procedure SwitchToThisWindow(h1: hWnd; x: bool); stdcall;
external user32 Name 'SwitchToThisWindow';

procedure Opera;
var
Wnd:HWND;
begin
Wnd:= FindWindow(PChar('OpWindow'),nil);
 if (Wnd <> 0) then SwitchToThisWindow(Wnd, True) ;
////////////////////////////////////////////////////

【问题讨论】:

  • SwitchToThisWindow 是邪恶的,你应该尊重用户并使用 SetForegroundWindow

标签: windows window opera pascal


【解决方案1】:

查看 Opera 10.50,有多个窗口具有 OpWindow 类,其他窗口似乎被隐藏,因此您应该循环运行 FindWindow(Ex) 或使用 EnumWindows 并搜索直到找到可见的 OpWindow 窗口。 (当 Opera 在托盘中时,这可能会导致问题)

所以,如果没有实际测试,我猜你将不得不寻找一个可见的 OpWindow 窗口,或者一个具有非空标题的 OpWindow 窗口(或者可能寻找一个具有特定样式(WS_OVERLAPPEDWINDOW 或 WS_EX_WINDOWEDGE)的 OpWindow )

还需要注意的是,所有这些都是内部歌剧细节,可能会在下一个版本等中改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2013-01-09
    相关资源
    最近更新 更多