HWND h = ::FindWindow(NULL, "工程1 - Microsoft Visual Basic [设计]");
HMENU A=::GetMenu(h);
HMENU sHandle = ::GetSubMenu(A, 12) ; 
UINT id;
id = ::GetMenuItemID(sHandle, 7);   
  ::SetForegroundWindow (h) ;   
::SendMessage(h,WM_COMMAND,id,NULL);
为什么 vb 窗口 不响应此消息 ? 是不是因为是MsoCommandBar的缘故? 怎么样才可以正确的发送消息? 
 
 

解决方案 »

  1.   

    ::SendMessage(h,WM_COMMAND,MAKEWPARAM(id,0),NULL);
    试试
      

  2.   

    sHandle = GetSubMenu(GetMenu(h), 12) 这个h 是我发现菜单是MsoDockTop上的菜单我就取了它的句柄 但是我发现 GetMenu(h) 返回为0 其中说道如果h是子窗体的话返回值无定义~~~~ 求教解决方法。
    后来我就直接把句柄直接赋值给它
      id = GetMenuItemID(788054, iCount) 返回ID为-1~~ 这到底是怎么回事啊~ 麻烦知道的说下谢谢了。怎么才能正确的向vb的菜单栏发送单击消息啊
      

  3.   


    这个菜单的父窗口不是vb 而是一个MsoDockTop 我就取了MsoDockTop的句柄 可是发现没办法获取菜单句柄了GetMenu(h)这个地方如果用子窗口的句柄的话就会返回无定义值。。 不知道怎么解决。。
      

  4.   


    句柄都获取不到 我觉得用post也意义不大吧?
      

  5.   

    这个菜单的父窗口不是vb 而是一个MsoDockTop 我就取了MsoDockTop的句柄 可是发现没办法获取菜单句柄了GetMenu(h)这个地方如果用子窗口的句柄的话就会返回无定义值。。 不知道怎么解决。。