Delphi判断是否有全屏程序
来源:互联网 发布:python检测ip能否ping 编辑:程序博客网 时间:2024/05/22 00:08
Delphi判断是否有全屏程序
网络流传代码
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ShellAPI; // 要引用此单元const WM_APPBAR_MESSAGE = WM_USER + 1;type TForm1 = class(TForm) Timer1: TTimer; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public IsFullScreenAppRun: Boolean; //放个全局变量用于记录 procedure WMAppBarMessage(var Msg: TMessage); message WM_APPBAR_MESSAGE; end;var Form1: TForm1; AppBar_Data: APPBARDATA;implementation{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin SHAppBarMessage(ABM_REMOVE, AppBar_Data); //窗口关闭时移除此消息end;procedure TForm1.FormCreate(Sender: TObject);begin FillChar(AppBar_Data, SizeOf(AppBar_Data), #0); AppBar_Data.cbSize := SizeOf(AppBar_Data); AppBar_Data.hWnd := Handle; AppBar_Data.uCallbackMessage := WM_APPBAR_MESSAGE; //指定回调消息 SHAppBarMessage(ABM_NEW, AppBar_Data); //建立监听end;procedure TForm1.WMAppBarMessage(var Msg: TMessage);var retCode: Cardinal ;begin if Msg.Msg = WM_APPBAR_MESSAGE then begin if msg.WParam = ABN_FULLSCREENAPP then begin if msg.LParam = 1 then begin Memo1.Lines.Add('有全屏程序运行'); IsFullScreenAppRun := True; end else if Msg.LParam = 0 then begin Memo1.Lines.Add('无全屏程序运行'); IsFullScreenAppRun := False; end; end; end;end;end.
自我改编代码:
function IsFullScreen: Boolean; forward;function GetClassNameFX(h: HWND): string; forward;function GetClassNameFX(h: HWND): string;var ClassName: PChar;begin Result := ''; GetMem(ClassName, 256); try GetClassName(h, ClassName, 256); Result := string(ClassName); finally FreeMem(ClassName); end;end;function IsFullScreen: Boolean;var h, h1, h2, h3: HWND; r, r1: TRect; rk, rg, r1k, r1g: Integer; s: string;begin Result := False; h := Windows.GetDesktopWindow(); h1 := GetForegroundwindow; h2 := FindWindow('Progman', nil); h3 := FindWindow('WorkerW', nil); if (h1 = h2) or (h1 = h3) or (h1 = h) then Exit; if h3 > 0 then begin s := GetClassNameFX(h1); if (s = 'WorkerW') or (s = 'Progman') then Exit; end; GetWindowRect(h, r); rk := r.Right - r.Left; rg := r.Bottom - r.Top; GetWindowRect(h1, r1); r1k := r1.Right - r1.Left; r1g := r1.Bottom - r1.Top; if (rk = r1k) and (rg = r1g) and (r.BottomRight.X = r1.BottomRight.X) then Result := True;end;
不喜勿喷,这是我自己花了很长时间才想出来的
0 0
- Delphi判断是否有全屏程序
- 判断是否有全屏程序正在运行(C#)
- 判断是否有全屏程序正在运行(C#)
- 判断是否有全屏程序正在运行(C#)
- C#判断是否有全屏程序正在运行
- 判断是否有全屏程序正在运行(C#)
- 判断当前是否有窗口全屏
- 如何判断当前是否全屏程序
- delphi 判断目录是否有写入权限
- 判断浏览器是否全屏
- 判断该程序是否已有实例运行
- C程序:判断链表是否有环
- C程序:如何判断链表是否有环
- Android 判断手机中是否有某个安装程序
- 安装前判断进程中是否有程序在运行
- 用程序判断一个QQ号码是否在线、是否存在(delphi调用webService)
- 判断是否有汉字
- 判断是否有英文
- 关于span标签的宽度和高度设置
- 深入理解JVM : Java堆中对象创建、布局、访问全过程
- Android阅读源码从工具开始
- java mail实现Email的发送,完整代码
- oracle database recyclebin 速查文档
- Delphi判断是否有全屏程序
- 【android】LayoutInflater 的 inflater 方法浅析
- MyEclipse快捷键大全
- MPICH Demo测试__两主机进行通信出现的问题及解决方案
- windows下 VIM安装配置,打造PHP IDE开发工具
- [LeetCode]331. Verify Preorder Serialization of a Binary Tree
- c语言技巧
- ios开发——日常之XCode 文件后面带有问号的问题怎么解决??
- 46腾讯研发工程师笔试卷