• 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

  • 相关阅读:
    JAVAEE学习day01
    learn MongoDB (二) 常用修改器
    learn MongoDB (一) 常用命令行操作
    js事件冒泡和捕获
    vim 常用设置
    void 0 等于 undefined 为什么不直接用undefined
    原生js操作class
    WAI-ARIA roles
    css 效果收集
    前端文章收集
  • 原文地址:https://www.cnblogs.com/findumars/p/6348012.html
Copyright © 2020-2023  润新知