如何获得当前活动窗口的标题,这个窗口不是本程序的主窗口?
还有就是如何在一个程序中结束另一个程序的窗口。而我的传入参数为窗口对应的可执行程序的绝对路径。怎么实现?谢了!

解决方案 »

  1.   

    GetForegroundWindow() 得到当前活动窗体。
    SendMessage( hwnd,WM_CLOSE ..) 关闭一个窗体。
      

  2.   

    1.获取标题:
    char buf[MAX_PATH];
    HWND hwnd = GetForegroundWindow();
    GetWindowText(hwnd, buf, MAX_PATH);2.不懂
      

  3.   

    2. 用FindWindow();找到你要关闭的窗口 然后SendMessage(hwnd //findwindow返回的窗口句柄, WM_CLOSE, NULL, NULL);
      

  4.   

    1. EnumProcesses 获得所有进程的 ID.
    2. OpenProcess 通过 ID 获得进程的 HANDLE
    3. GetModuleFileName 通过 HANDLE 获得绝对路径名.
    4. 与你的绝对路径参数相比较.
    5. 如果相同, TERMINATEPROCESS(), CLOSEHANDLE(), 结束
    6. 如果不同, CLOSEHANDLE(), 比较下一个
    ________
    只是猜测, 不保证可行. 另外, 取得所有进程HANDLE的方式也有许多种.
      

  5.   

    bcpl(林平之) :
    你的方法很好,顺便问一下:
             int giCountWin = 0;
    EnumWindows( (WNDENUMPROC)EnumWindowsProc,0);
    for ( int j = 0; j<giCountWin; j++)
    {
    if ( strcmp(gWinList[j].cWinBuf,"警告") == 0 ) 
    {
    ::PostMessage( gWinList[j].hWnd,WM_CLOSE,0,0);
    break;
    }
    }
    其中 “警告”是一个消息框的标题名称,代码如下:
    MessageBox(hwnd,s,"警告",MB_ICONWARNING+MB_YESNO+MB_DEFBUTTON2);
    为何关闭不了呢?
      

  6.   

    得到当前活动窗体。
    char buf[MAX_PATH];
    HWND hwnd = GetForegroundWindow();
    GetWindowText(hwnd, buf, MAX_PATH);SendMessage( hwnd,WM_CLOSE ..) 关闭一个窗体。
      

  7.   

    如果要关闭一个本程序的消息框用什么方法?
    弹出消息框后立即成为最前台的窗口,又应用什么方法?
    Thanks!