HWND wnd=::FindWindowEx(0,0,NULL,"SYSTEM (C:)");
HMENU menu=::GetMenu(wnd);//你能取得有效的句柄
c=GetMenuItemCount(menu);//获取当前菜单所有的菜单项数目,但结果总是c=0
使用其他的菜单函数也都无效,请教如何解决这个问题?

解决方案 »

  1.   

    hwndApp = ::FindWindow(NULL, m_ApplyName);//m_ApplyName为应用程序的名称
    if (hwndApp == NULL)
    {
    MessageBox("Not Find!");
    return;
    }
    lRel = GetMenuInfo(hwndApp);int CGUIDlg::GetMenuInfo(HWND h)
    {
    HMENU hMenu;
    HMENU hMenuFile;
    int lMenuCnt = 0; // 根据句柄取得应用程序菜单
    hMenu = ::GetMenu(h);
    if (hMenu == NULL)
    {
    MessageBox("Not Find Menu!");
    return -1;
    } // 取得第一个子菜单
    hMenuFile = ::GetSubMenu(hMenu, 0); // 取得子菜单的项数
    lMenuCnt = ::GetMenuItemCount(hMenuFile); for(int lCnt = 0; lCnt < lMenuCnt; lCnt++)
    {
    char szTemp[255];
    memset(szTemp, '\0', sizeof(szTemp)); // 取得菜单ID
    long hMenuID = ::GetMenuItemID(hMenuFile, lCnt); ::SendMessage(h, WM_COMMAND, (WPARAM)hMenuID, NULL); // 取得菜单的caption
    ::GetMenuString(hMenuFile, hMenuID, szTemp, 255, MF_BYCOMMAND);
    } return 0;
    }
      

  2.   

    TO  carbon107(&lt;软件开发思想.h&gt;) 
    你调试过你的程序吗?比如现在要操作windows explorer的菜单,窗口caption是 "SYSTEM (C:)",你会发现hMenuFile = ::GetSubMenu(hMenu, 0);lMenuCnt = ::GetMenuItemCount(hMenuFile);都回得到0TO kvw3000(回家念经) 远程dll注入是怎么回事?有文档马?