先得到窗口句柄 根据这个就可以得到任何关于窗口的信息 当然包括简单的Caption

解决方案 »

  1.   

    请参考ChildWindowFromPoint、WindowFromPoint
    OK?
      

  2.   

    1.创建进程时你可以得到进程ID,在CreateProcess(...)的最后一个参数PROCESS_INFORMATION中;
    2.枚举所有窗口,然后GetWindowThreadProcessId(...)可以得到某一个窗口的进程ID,逐个和在1中得到的进程ID比较,知道相等为止。这样你就得到了进程的主窗口句柄;
    3.根据找到的窗口句柄可以得到窗口的Caption. 用GetWindowText(...);4.改变POP菜单,不太可能吧,关键时你的程序是客户任意指定的。那怎么可能知道。
      

  3.   

    改变菜单标题是这样的,我自己的程序有一个POP菜单,菜单的作用不需要改变,我也不需要添加菜单项目,只需要改变其中某一个标题就可以了,应该可以做到。现在主要是这个菜单是在程序中动态加载的,有什么方法可以改变吗?
      

  4.   

    你先用CMenu::CreatePopupMenu()创建弹出窗口,
    CMenu::RemoveMenu();可以让你动态删除菜单项
    CMenu::AppendMenu( ) ;可以让你动态加载菜单项
      

  5.   

    to table(天刹孤星):
       能不能说得清楚些?
      

  6.   

    你是指改变别的进程的还是本进程的菜单,如果是别的进程,恐怕难啰;自己进程的话,简单啊。下面的代码是动态设置,菜单项的Check属性,看是否对你有用:
    #define SET_RADIO_MMI(hMenu,ID,mii,szBuf) { mii.fMask = MIIM_TYPE | MIIM_STATE; (LPTSTR) mii.dwTypeData = szBuf; mii.cch = sizeof(szBuf); GetMenuItemInfo(hMenu, ID, FALSE, &mii); mii.fType |= MFT_RADIOCHECK; mii.fState = MFS_UNCHECKED; SetMenuItemInfo(hMenu, ID, FALSE, &mii);}void InitPopMenu(HMENU hMenu)
    {
    MENUITEMINFO miInfo;
    TCHAR szMenu[64]; // Bring up the context menu
    m_hMenu = GetSubMenu(hMenu, 0); // Set the default menu item
    miInfo.cbSize = sizeof(MENUITEMINFO);
    miInfo.fMask = MIIM_STATE;
    miInfo.fState = MFS_DEFAULT;

    SetMenuItemInfo(m_hMenu, ID_PROPERTIES, FALSE, &miInfo); SET_RADIO_MMI(m_hMenu,ID_APPBAR_TOP,miInfo,szMenu)
    SET_RADIO_MMI(m_hMenu,ID_APPBAR_BOTTOM,miInfo,szMenu)
    SET_RADIO_MMI(m_hMenu,ID_APPBAR_LEFT,miInfo,szMenu)
    SET_RADIO_MMI(m_hMenu,ID_APPBAR_RIGHT,miInfo,szMenu)
    }
      

  7.   

    哦,对不起,SET_RADIO_MMI是一个自定已宏函数,怎么连在一起了
    #define SET_RADIO_MMI(hMenu,ID,mii,szBuf) \{\ mii.fMask = MIIM_TYPE | MIIM_STATE;\ (LPTSTR) mii.dwTypeData = szBuf;\ mii.cch = sizeof(szBuf);\ GetMenuItemInfo(hMenu, ID, FALSE, &mii);\ mii.fType |= MFT_RADIOCHECK;\ mii.fState = MFS_UNCHECKED;\ SetMenuItemInfo(hMenu, ID, FALSE, &mii);\}