1、知道窗口中类或名用FindWindow()
2、有 CWnd 指针,使用 GetSafeHwnd()
3、AfxGetMainWnd()->GetSafeHwnd()

解决方案 »

  1.   

    补一句:
    有 CWnd 指针如CWnd *m_Wnd,使用HANDLE m_Handle=m_Wnd->m_hWnd; 
      

  2.   

    您还可以使用Spy++来监视您系统中正在运行的进程可能带有的窗口句柄。
      

  3.   

    我有一个坏习惯,总喜欢把问题讲的仔细透彻,这样往往速度比别人慢。每一个对话框窗口的类都有一个成员变量m_hwnd,这个就是窗口的handle。
    如果你要在窗口的成员函数中给这个窗口发个消息的话就:
    PostMessage(m_hwnd,WM_MYMESSAGE,wParam,lParam);如果你要给本程序中的其他窗口发消息,可以用全局变量的方法来得到这个句柄。比如你要给B窗口发消息,定义一个全局变量HWND glwnd;在B窗口类的OnInitDialog()函数中,写上:glwnd  = m_hwnd;然后你就可以用glwnd作参数给B窗口发消息了。如果你要给其他程序的窗口发消息,就稍微麻烦一点了。看下面的代码:
    假如我要给QQ发一个消息(当然它不一定处理这个消息)DWORD dwProcessID=NULL;
        HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        PROCESSENTRY32 processes;
        processes.dwSize =sizeof(PROCESSENTRY32);
        if(Process32First(hSnapshot,&processes))
        {
            if(_stricmp(processes.szExeFile,TEXT("Oicq.exe"))==0)
            {
                dwProcessID=processes.th32ProcessID;
            }
            else
            {
                while(Process32Next(hSnapshot,&processes))
                {
                    if(_stricmp(processes.szExeFile,TEXT("Oicq.exe"))==0)
                    {
                        dwProcessID=processes.th32ProcessID;
                        break;
                    }
                }
            }
        }
        if(dwProcessID!=NULL)
            EnumWindows(EnumWndProc,dwProcessID);

    //以上代码找到QQ的运行的进程,并调用EnumWndProc,下面是EnumWndProc的代码:BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam)
    {
        DWORD dwProcessID=(DWORD)lParam;
        DWORD dwCurID;
        GetWindowThreadProcessId(hwnd,&dwCurID);    if(dwProcessID==dwCurID)           //找到它的hwnd了
        {
           
    SendMessage(hwnd, WM_JASON, 0, 0);        
    return FALSE;
        }
        return TRUE;
    }//累了,回家休息,别忘了给我分
      

  4.   

    各位大哥,hwnd,不就是在窗体时CreateWindow返回的吗?