zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    第三方登录的原理
    浅谈算法的时间复杂度和空间复杂度
    python3的全局变量和局部变量
    python3的嵌套函数
    HTTP协议学习-03
    HTTP协议学习-02
    HTTP协议学习-01
    织梦模板修改方法大全
    java常用用代码
    java学用代码
  • 原文地址:https://www.cnblogs.com/jijm123/p/13788121.html
Copyright © 2011-2022 走看看