如何执行其他Exe程序上面的菜单项。比如执行IE主菜单  查看=>源文件   项怎么做》》???我得到的大部分答案是SendMessage,可SendMessage需要知道控件的Handle,而菜单项是没有Handle的Ok,我得到最终最好的一个回答是:sendmessage(hwnd,WM_Command,ID,0);ID就是菜单项的ID,这个ID可以用Spy++来得到。。我不会用Spy++,请指点,怎么用Spy++来得到菜单项的ID。

解决方案 »

  1.   

    如何通过发送WM_COMMAND消息模拟点击其他程序窗体上的菜单项? procedure TForm1.Button1Click(Sender: TObject);
    var
       h,m,s,s1:hwnd;
    begin
      h:=FindWindow('notepad',nil);
       if h<>0 then
       begin
         m:=GetMenu(h);
         s:=GetSubMenu(m,1);
         s1:=GetSubMenu(s,7);
         SendMessage(h,WM_COMMAND,MakeLong(GetMenuItemId(s,7),0),s1);
      end;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
       h,m,s,s1:hwnd;
    begin
      h:=FindWindow('notepad',nil);
       if h<>0 then
       begin
         m:=GetMenu(h);
         s:=GetSubMenu(m,1);
         s1:=GetSubMenu(s,7);
         SendMessage(h,WM_COMMAND,MakeLong(GetMenuItemId(s,7),0),s1);
      end;
    end;