zoukankan      html  css  js  c++  java
  • Delphi获得一个进程的主窗体(GetWindow(AHandle, GW_OWNER)等于0的窗体才是主窗体,并且要IsWindowVisible排除Application窗口)

    type
      TMainWindow = packed record
        ProcessID: THandle;
        MainWindow: THandle;
      end;
      PMainWindow =^ TMainWindow;

    function IsMainWindow(AHandle: THandle): Boolean;
    begin
      Result :=(GetWindow(AHandle, GW_OWNER) = 0and (IsWindowVisible(AHandle));
    end;{ IsMainWindow }
     
    function fFindMainWindow(hWnd: THandle; lParam: PMainWindow): BOOL; stdcall;
    var
      vProcessID: THandle;
    begin
      GetWindowThreadProcessId(hWnd, vProcessID);
      if (lParam^.ProcessID = vProcessID) and IsMainWindow(hWnd) then
      begin
        lParam^.MainWindow := hWnd;
        Result := False;
      end else Result := True;
    end;
     
    function FindMainWindow(AProcessID: THandle): THandle;
    var
      vMainWindow: TMainWindow;
    begin
      vMainWindow.ProcessID := AProcessID;
      vMainWindow.MainWindow := 0;
      EnumWindows(@fFindMainWindow, Integer(@vMainWindow));
      Result := vMainWindow.MainWindow;
    end;{ FindMainWindow }
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Caption := Format('Application.Handle: %d, FindMainWindow(): %d',[
        Application.Handle, FindMainWindow(GetCurrentProcessId)]);
    end;

    http://blog.csdn.net/zswang/article/details/1598516

  • 相关阅读:
    HDU 4339 Query
    Another app is currently holding the yum lock解决方法
    m0n0wall安装教程
    网盘
    kali 网络配置
    monowall
    Windows server 2012安装vmtools遇到的问题
    利用WPF建立自适应窗口大小布局的WinForm窗口
    wpf倒影效果
    SQL 进制间如何转换
  • 原文地址:https://www.cnblogs.com/findumars/p/6348012.html
Copyright © 2011-2022 走看看