Выведи оперное окно вперед! - PullRequest
0 голосов
/ 25 апреля 2010

Не могли бы вы помочь мне понять, как вывести окно 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) ;
////////////////////////////////////////////////////

1 Ответ

0 голосов
/ 25 апреля 2010

Глядя на Opera 10.50, существует более одного окна с классом OpWindow, другие окна кажутся скрытыми, поэтому вы должны запустить FindWindow (Ex) в цикле или использовать EnumWindows и выполнять поиск, пока не найдете видимое окно OpWindow. (Это может вызвать проблемы, когда Opera находится в трее)

Итак, без фактического тестирования, я думаю, вам придется искать видимое окно OpWindow или окно OpWindow с непустым заголовком (или, может быть, искать OpWindow, который имеет определенный стиль (WS_OVERLAPPEDWINDOW или WS_EX_WINDOWEDGE) )

Следует также отметить, что все это внутренние детали оперы, которые могут измениться в следующей версии и т. Д.

...