zoukankan      html  css  js  c++  java
  • 已知进程句柄,如何知道此进程的主窗口句柄

    已知进程句柄,如何知道此进程的主窗口句柄,在此说明两种方法:
    1. 调用FindWindow(),前提是必须知道该进程中窗口类名和窗口名,返回后的句柄可以通过IsWindow()函数来验证是否是有效的窗口句柄.

    HWND hWnd = ::FindWindow(szClassName, szWndName);
    if(::IsWindow(hWnd))
    {
          //  处理该窗口
    }

    2.先枚举全部窗口,再枚举回调函数中调用GetWindowThreadProcessID()得到窗口得进程ID,再与以前得到得ID比较.如果不一致,不处理,若一致,循环调用GetParent()一直到返回NULL, 最后得hwnd即为顶层窗口句柄

     BOOL   CALLBACK   EnumWindowsProc(HWND   hwnd,       LPARAM   lParam   )   
      {   
          unsigned   long   id;   
           HWND   thwnd;   
        
           id=GetWindowThreadProcessId(hwnd,NULL);   
           if   (id==lParam)   
          {   
                 while((thwnd=GetParent(hwnd))!=NULL)   
                       hwnd=thwnd;   
                 CString   x;   
                 x.Format("HWND   =   %x",hwnd);   
                 MessageBox(NULL,x,NULL,MB_OK);   
                 return   false;     
           }   
           return   true;   
      }   
          
        
      void   CMt2Dlg::OnButton1()     
      {   
      //   TODO:   Add   your   control   notification   handler   code   here   
        STARTUPINFO   StartInfo;   
        PROCESS_INFORMATION     ProceInfo;   
        ZeroMemory(&StartInfo,sizeof(StartInfo));   
        StartInfo.cb=sizeof(StartInfo);   
        
        CreateProcess(NULL,   //lpApplicationName:   PChar   
              "calc.exe",   //lpCommandLine:   PChar   
              NULL,   //lpProcessAttributes:   PSecurityAttributes   
              NULL,   //lpThreadAttributes:   PSecurityAttributes   
              true,   //bInheritHandles:   BOOL   
              CREATE_NEW_CONSOLE,   
              NULL,   
             NULL,   
              &StartInfo,   
              &ProceInfo);   
        
        Sleep(100);     //这是必须的,因为   CreateProcess   不能马上Active   windows   
        EnumWindows(EnumWindowsProc,ProceInfo.dwThreadId);   
    }

    以上内容参考:http://topic.csdn.net/t/20050612/13/4076646.html

  • 相关阅读:
    java线程读取文件,可以同时读写 202006031002
    JS,JQuery bug202005282020
    js,jquery缩小加载的图片202005131907
    spring boot/spring cloud + mybatis + mysql bug 20200513
    html2020042901,table元素之间的间距
    ie8-ie11浏览器bug2020042801
    css的bug2020042801
    xml读取解析bug20200423
    Poi读取word(doc)文档的文本或图片
    NOI2020专题
  • 原文地址:https://www.cnblogs.com/mywolrd/p/1930722.html
Copyright © 2011-2022 走看看