程序如何判断自己的窗口是否处于激活或显示状态?(50分)

  • 主题发起人 主题发起人 hamang
  • 开始时间 开始时间
H

hamang

Unregistered / Unconfirmed
GUEST, unregistred user!
程序如何判断自己是否处于激活或显示状态?
 
self.Active
self.Showing
 
不行拉,如果windows当前激活的程序不是这个程序的话,showing判断错误
 
注意:如果没有form的程序不能使用
利用Windows API函数FindWindows()查找窗口
恢复Application的Title值
  上述步骤一般在主Form的OnCreate事件中实现,示例如下:

procedure TForm1.FormCreate(Sender: TObject);
var
ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
begin
Hold := Application.Title;
Application.Title := 'OnlyOne'
+ IntToStr(HInstance); // 暂时修改窗口标题
StrPCopy(ZAppName, Hold); // 原窗口标题
Found := FindWindow(nil, ZAppName); // 查找窗口
Application.Title := Hold; // 恢复窗口标题
if Found<>0 then begin
// 若找到则激活已运行的程序并结束自身

ShowWindow(Found, SW_RESTORE);
Application.Terminate;
end;
end;
 
if GetActiveWindow = handle then ...
 
后退
顶部