我有以下(簡化的)過程,使所期望的窗口之上的所有其它正常窗口:爲什麼BringWindowToTop與VCL Ribbon結合不能正常工作?
function focusWindow(): boolean;
var
h: Hwnd;
begin
result := true;
h := findwindow('Notepad', 'Unbenannt - Editor');
if h <> 0 then
BringWindowToTop(h);
end;
我在下面的例子中應用程序中使用此:
在頂部,你可以看到我的示例應用程序。後面有一個資源管理器窗口,後面還有一個空的記事本。如上面的代碼所示,我想將記事本窗口移到前面。
如果我把我的函數從按鈕的事件處理程序
procedure TForm4.btnFocusClick(Sender: TObject);
begin
focusWindow();
end;
一切正常。空白的記事本窗口向前移動,後面是示例應用程序,瀏覽器位於其他兩個窗口的後面。
但是如果我使用vcl功能區控件並將操作分配給一個命令按鈕,它只能部分工作。
procedure TForm4.actDemoExecute(Sender: TObject);
begin
focusWindow();
end;
記事本窗口向上移動,離開瀏覽器窗口後面。但是,程序停止 - 記事本窗口隱藏在我自己的應用程序後面。這裏發生了什麼?
我試過用Windows 10和Delphi 10.1柏林,它適用於我的兩種方式。 – EugeneK
謝謝你重試它。我無法告訴您更多關於我的環境的信息,我也在使用Windows 10,版本1607.您是否在操作管理器中使用了操作?因爲我懷疑導致此行爲的動作的內置更新機制。 – ventiseis
是的,我只用一個動作就使用了Ribbon和ActionManager。 – EugeneK