Delphi窗体置顶及失去焦点后取得焦点
unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶
procedure SetXwForegroundWindow(AHandle: Thandle);
var
hFgWin: Thandle;
hFgThread: Thandle;
begin ShowWindow(AHandle, SW_NORMAL); hFgWin := GetForegroundWindow;
hFgThread := GetWindowThreadProcessID(hFgWin, nil); if AttachThreadInput(GetCurrentThreadID, hFgThread, true) then
begin
SetForegroundWindow(AHandle);
AttachThreadInput(GetCurrentThreadID, hFgThread, false);
end
else
SetForegroundWindow(AHandle); end; // 激活窗体
function SetSysFocus(AHandle: Thandle): boolean;
var
hThreadId: Thandle;
hFgThreadId: Thandle;
begin
result := false;
if not IsWindow(AHandle) then
exit;
hThreadId := GetWindowThreadProcessID(AHandle, nil);
hFgThreadId := GetWindowThreadProcessID(GetForegroundWindow, nil);
if AttachThreadInput(hThreadId, hFgThreadId, true) then
begin
SetFocus(AHandle);
AttachThreadInput(hThreadId, hFgThreadId, false);
end
else
SetFocus(AHandle);
result := true;
end; end.
使用方式
uses U_FrmTopmostActive; //自己需要的处理完后调用,句柄测试为本窗体的句柄
SetXwForegroundWindow(Self.Handle);
SetSysFocus(Self.Handle);
感谢 晓不得2013老师 提供的代码并耐心指导(群:59129236)
Delphi窗体置顶及失去焦点后取得焦点的更多相关文章
- winform窗体置顶
winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ...
- C#控件、窗体置顶
//控件置于顶层和底层 panel.BringToFront();//置于顶层 panel.SendToBack();//置于底层 //窗体置顶 TopMost = true;
- Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows
创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ...
- 019 [工具软件]窗体置顶 DeskPins
DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用 ...
- C#或者WPF中让某个窗体置顶
原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶. 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界 ...
- WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题
最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的. 经过排查,是由于该窗体由于部分因素考虑,用了 ...
- 解析Delphi 窗口置顶,及非主窗口置顶
方法一: procedure TForm1.Button2Click(Sender: TObject);begin Form2.Show; Application.NormalizeTopMosts; ...
- WPF:窗体置顶
1.设置窗体TopMost属性 private DispatcherTimer timer; public Window1() { InitializeComponent(); Loaded += n ...
- Delphi 窗口置顶的方法
有几种窗口置顶的方法,简单的有: ShowWindow(窗口句柄,sw_ShowNormal); SetWindowPos(窗口句柄,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOV ...
随机推荐
- [Artoolkit] Framework Analysis of nftSimple
What is nftSimple? Loads NFT dataset names from a configuration file. The example uses the “Pinball. ...
- [Linux] 修改系统默认编码
locale 命令 locale 命令用以设置程序运行的语言环境. locale 设置语言环境的命名规则为 Language_area.charset,例如 en_US.utf8 表示语言为英语,地区 ...
- Win10系统Ping端口及利用telnet命令Ping 端口
启用 telnet 客户端组件为 Ping 端口做准备 在程序界面下,选择“打开或关闭Windows功能”,如下图所示: 在打开的对话框中,找到“Telnet客户端”并勾选.最后点击“确定”,等待几分 ...
- DevExpress MemoEdit定位到末尾
1: /// <summary> 2: /// 追加文本到MemoEdit中 3: /// </summary> 4: /// <param name="mem ...
- Sequential Minimal Optimization (SMO) 算法
SVM 最终关于 $a$ 目标函数为凸优化问题,该问题具有全局最优解,许多最优化算法都可以解决该问题,但当样本容量相对很大时,通常采用 SMO 算法(比如 LIBSVM),该算法为启发式算法,考虑在约 ...
- day_4_27 py
''' 2018-4-27 19:57:29 其实这些都是讲的类和对象的 self(在定义方法的时候默认的参数)就相当于java里面的this关键字, this.name=name class 类名: ...
- .NET学习从入门到精通100+源代码(申明:来源于网络)
.NET学习从入门到精通100+源代码大放送 (20161128更新)(申明:来源于网络) 地址:http://download.csdn.net/album/detail/3364
- STL的基本介绍
STL是标准模板库,现在是c++的一部分 STL被组织为下面的17个头文件:<algorithm>.<deque>.<functional>.<iterato ...
- 安装指定版本的nodejs
node有一个模块n,是专门用来管理node.js的版本的. 1.安装n模块: npm install -g n 2.升级node.js到最新稳定版 n stable 3.安装指定版本: n v6.1 ...
- [No000010A]Git3/9-创建版本库
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...