如题

解决方案 »

  1.   

    struct   EnumParam  
      {  
              HWND   hMainWnd;  
              DWORD   dwProcessID;  
      };  
       
      BOOL   CALLBACK   EnumWinProc(HWND   hwnd,   LPARAM   lParam)  
      {  
              DWORD   dwID;  
       
              EnumParam*   pep   =   (EnumParam*)lParam;  
              GetWindowThreadProcessId(hwnd,   &dwID);  
              if   (dwID   ==   pep->dwProcessID)   {  
                      pep->hMainWnd   =   hwnd;     return   0;  
              }  
              return   TRUE;  
      }  
       
       
      void   __fastcall   TForm1::Button3Click(TObject   *Sender)  
      {  
              EnumParam   ep;  
              STARTUPINFO   si;  
              PROCESS_INFORMATION   pi;  
       
              ep.hMainWnd   =   NULL;  
              memset(&si,   0,   sizeof(si));  
              si.cb   =   sizeof(STARTUPINFO);  
              if   (CreateProcess(NULL,"notepad.exe   c:\\1.txt",  
                      NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))    
              {  
                      CloseHandle(pi.hThread);  
                      CloseHandle(pi.hProcess);  
       
                      ep.dwProcessID   =   pi.dwProcessId;  
                      EnumWindows((WNDENUMPROC)EnumWinProc,  
                              (long)&ep);  
              }  
              //此时的   ep.hMainWnd   就是你要的NodePad.exe窗口的句柄  
      }
      

  2.   

    msdn.microsoft.com/msdnmag/issues/02/07/CQA/
      

  3.   

    hongqi162,请您赐教,我A调用应用程序B,用的是SHELLEXECUTE,想控制B程序的一些控件。如何可以获取B的主窗体的句柄呢?
    恳请赐教。
      

  4.   

    谢谢SIMONVC这么大方,我都没有帮到你,你居然给我20分,感激&汗如雨下...