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窗体置顶及失去焦点后取得焦点的更多相关文章

  1. winform窗体置顶

    winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ...

  2. C#控件、窗体置顶

    //控件置于顶层和底层 panel.BringToFront();//置于顶层 panel.SendToBack();//置于底层 //窗体置顶 TopMost = true;

  3. Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows

    创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ...

  4. 019 [工具软件]窗体置顶 DeskPins

    DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用 ...

  5. C#或者WPF中让某个窗体置顶

    原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶. 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界 ...

  6. WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题

    最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的. 经过排查,是由于该窗体由于部分因素考虑,用了  ...

  7. 解析Delphi 窗口置顶,及非主窗口置顶

    方法一: procedure TForm1.Button2Click(Sender: TObject);begin Form2.Show; Application.NormalizeTopMosts; ...

  8. WPF:窗体置顶

    1.设置窗体TopMost属性 private DispatcherTimer timer; public Window1() { InitializeComponent(); Loaded += n ...

  9. Delphi 窗口置顶的方法

    有几种窗口置顶的方法,简单的有: ShowWindow(窗口句柄,sw_ShowNormal); SetWindowPos(窗口句柄,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOV ...

随机推荐

  1. mybatis通用mapper源码解析(一)

    1.配置JavaBean与数据库表字段映射关系 /** * 字段转换方式 */ public enum Style { normal, //原值 camelhump, //驼峰转下划线 upperca ...

  2. [Bayes] qgamma & rgamma: Central Credible Interval

    gamma分布的density的奇怪特性,如下: Poisson的Gamma先验  h(x) 的置信区间 的 获取 > n = > sumx= > > alpha= > ...

  3. android基础---->service的生命周期

    服务是一个应用程序组件代表应用程序执行一个长时间操作的行为,虽然不与用户交互或供应功能供其它应用程序使用.它和其他的应用对象一样,在他的宿主进程的主线程中运行.今天我们开始android中普通serv ...

  4. C# HTTPServer和OrleansClient结合

    using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using ...

  5. numpy中数据合并,stack ,concentrate,vstack,hstack

    在python的numpy库中有一个函数np.stack(), 看过一些博文后觉得别人写的太复杂,然后自己有了一些理解之后做了一些比较简单的解释 np.stack 首先stack函数用于堆叠数组,其调 ...

  6. 整合Solr与tomcat以及第一个core的配置

    整合Solr与tomcat以及第一个core的配置 一.准备安装文件 Tomcat : apache-tomcat-8.5.32.tar.gz Solr:solr-5.3.1.tgz 二.创建目录并解 ...

  7. freemarker 中可以直接使用的内置对象

    freemarker 中可以直接使用的内置对象 需要配置一下:springboot中配置 ## Freemarker \u914D\u7F6E ## \u6587\u4EF6\u914D\u7F6E\ ...

  8. struts2常用标签详解(申明:来源于网络)

    struts2常用标签详解(申明:来源于网络) 地址:http://blessht.iteye.com/blog/1184960

  9. VC++、Win32 SDK、MFC的区别

    这是一个初进行开发人员都可能遇到过的概念不清的问题,自己当年也同样有过误解,做技术我感觉一定要专,但是,不代表毫不关心相关的知识,至少概念层次上要知道,所以,这里还是再把这些内容纪录下来,好记性不如烂 ...

  10. win10环境下搭建zookeeper伪集群

    一.下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 这里笔者下载的是zookeeper-3.3.6 二.配置zoo ...