请问怎么找到此窗口的hwnd?

解决方案 »

  1.   

    FindWindow好像只能找到Top Level的窗口,方法1。
    先得到这个进程的UI线程的线程ID,
    然后EnumThreadWindows方法2.
    找到这个进程的主窗口的句柄
    然后EnumChildWindow或者通过主窗口句柄调用API GetWindowThreadProcessId得到线程ID,然后使用方法1
      

  2.   

    先用spy++查找,看看它实际的window caption
    你也可用EnumWindows来找window ,请参阅msdn
      

  3.   

    EnumWindows枚举所有窗口,然后来判断
      

  4.   

    各位老大:我用spy++看了,果然发现3个相同名字的窗口(2个对话框#32770,1个xyz_ROM Class NG)
    我要的这个对话框下面还有个static="aaabbbccc",请问用EnumWindows怎么找呀?
    给段代码好吗?谢谢!
      

  5.   

    你知道你要找的程序的文件名吗?如果知道,可以:PROCESSENTRY32 pe;
    HWND hwndFind = NULL;
    BOOL FindExe(WCHAR* exeName)
    {
    HANDLE  hSnapshot;
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); pe.dwSize=sizeof(PROCESSENTRY32);
    Process32First(hSnapshot,&pe);
    do 
    {
    if (0 == wcscmp(pe.szExeFile,exeName))
    {
    return TRUE;
    }
    }
    while(Process32Next(hSnapshot,&pe));

    CloseHandle(hSnapshot);
    return FALSE;
    }
    //在头文件中声明成:static BOOL CALLBACK CMyDlg::YourEnumProc(HWND Wnd,LPARAM lParam);
    BOOL CALLBACK CMyDlg::YourEnumProc(HWND Wnd,LPARAM lParam)
    {
       DWORD dwProcessId;
       GetWindowThreadProcessId(Wnd,&dwProcessId);
       if(dwProcessId==(DWORD)lParam)
       {
           hwndFind = Wnd;
       return FALSE;
       }
       return TRUE;
    }FindExe(_T("You Want Find.exe"));
    EnumWindows(YourEnumProc,(LPARAM)pe.th32ProcessID);
    ::SendMessage(hwndFind,WM_XX,1,0);