运行一个程序,在程序中执行一个命令之后,弹出一个对话框,如何得到它的句柄呢?

解决方案 »

  1.   

    弹出一个对话框指针->GetSafeHwnd();在新对话框类里就直接this->GetSafeHwnd();
      

  2.   

    是作二次开发
    你说的:对话框指针->GetSafeHwnd();那个指针怎么拿得到呢?
    不过我取得到了消息字符串
      

  3.   

    弹出一个对话框,你是怎么弹的?DoModal? Create+ShowWindow?
      

  4.   

    一个应用程序里面有命令行
    在命令行中输入:pagesetup
    按回车之后,就会弹出一个设置对话框
      

  5.   

    void myBackCall::whenOpen(const char * cmdStr)
    {

      if ( strcmp(cmdStr,"open" ) == 0  )
       {
     
      
      // 我想在此添加代码    
       }
    }
    myBackCall是继承应用程序的,在应用程序中输入命令时,这个函数会被激发,如果命令是open就执行,,,
      

  6.   

    这个不太好办,可能必须要用EnumThreadWindows来暴力查找了,必竟原程序没有提供给你这个接口,你要想获得就只能通过“非法途径”先写一个Enum的回调函数
    BOOL CALLBACK EnumThreadWndProc( HWND hwnd, LPARAM lParam )
    {
    // 在这里你就获得了这个线程拥有的每一个窗体,但你要通过标题之类的判断一下,不要伤及无辜。
    }
    调用:首先获得当前线程的名柄
    HANDLE hThread = GetCurrentThread();
    EnumThreadWindows( hThread, EnumThreadWndProc, 0 );
      

  7.   

    to fireseed:
    很感谢你的回答,但是暴力查找,涉及的太多了,对新手来说。
    可不可以通过消息钩子函数呢?应用程提供有这样的接口,可以在应用程序处理之前捕获任何按键消息:比如WM_CHAR,它可以对某个按键或同时按下CTRL+V键的捕捉,如何知道在按回车键之前,用户是按下了open呢?
      

  8.   

    m_hWnd 就是他的句丙了吧,直接用,不用再定义!!