系统对话框(如浏览目录)被隐藏到主窗体后面造成程序无法操作的临时处理方式
2021-04-13 17:28
阅读:728
说实在话,我被这个问题困扰不知道多少年了,具体的原因我实际上到现在为止仍未找到。不过这里提供一个临时的解决办法,使用定时器来检查当前进程的活动窗口与 Screen.ActiveForm 是否一致,如果不一致,则检查 Screen.ActiveForm 是否被禁用了(注意不要看它的 Enabled,而是调用 API),如果被禁用了,则说明弹出的对话框不是 Delphi 的 Form,我们调用 SetWindowPos 来其它调整到最前面显示就可以,定时器的处理代码参考如下:
1
2
3
4
5
6
7
8
|
procedure TForm1.Timer1Timer(Sender:TObject);
var
ATopWindow:THandle;
begin
ATopWindow:=GetActiveWindow;
if (ATopWindowScreen.ActiveForm.Handle) and (not IsWindowEnabled(Screen.ActiveForm.Handle)) then
SetWindowPos(ATopWindow,HWND_TOP,0,0,0,0,SWP_NOSIZE OR SWP_NOMOVE);
end;
|
这个暂时是治标的办法,至于治本的办法,由于单独建立 Demo 测试许多时候都无法重现,所以暂时放弃吧,不得已……
上一篇:C#中的数据类型和命名规范
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:系统对话框(如浏览目录)被隐藏到主窗体后面造成程序无法操作的临时处理方式
文章链接:http://soscw.com/index.php/essay/75295.html
文章标题:系统对话框(如浏览目录)被隐藏到主窗体后面造成程序无法操作的临时处理方式
文章链接:http://soscw.com/index.php/essay/75295.html
评论
亲,登录后才可以留言!