我是这样写的:
程序的流程是这样的:
1、通过FindWindow得到要发送消息的程序的主窗口;
2、通过FindWindowEx得到要发送消息的程序的按钮的句柄
3、通过SendMessage发送消息以下是发送消息的部分:H是指定程序的按钮的窗口句柄。
ID是通过GetWindowLong函数得到的。
SendMessage( GetParent( H ), WM_COMMAND, ID, H );以上程序总是失败,望高手赐教!!!

解决方案 »

  1.   

    看了一下WM_COMMAND的帮助,说了半天的menu,我的理解是当选中一个菜单项的时候才会触发这个消息吧。不知道楼主想干什么,如果只想模拟一个点击按牛的操作的话,可以发送BM_CLICK消息。举例,点击开始按牛。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      handle1: HWND;
    begin
      handle1 := GetWindow(FindWindow('Shell_TrayWnd', nil), GW_CHILD);
      SendMessage(handle1, BM_CLICK, 0, 0);
    end;可能跟楼主说的不是一个意思,那就当我瞎说了。为了惩罚我,帮我解决个问题吧!
    http://expert.csdn.net/Expert/topic/1281/1281613.xml?temp=.121792
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      h:THandle;
    begin
      h := FindWindow(nil,'信使服务 ');
      h := FindWindowEX(h,0,'Button','确定');
      SendMessage(h,BM_CLICK,0,0);
      PostMessage(h,BM_CLICK,0,0);
    end;
      

  3.   

    我也觉的blucecat(一言稀音) 说的是可以的你可以试一下。
    实在不行的话你可以在google中找一下FindWindowEx();的实例看看。
      

  4.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
       showmessage('aaa');
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      sendmessage(form1.Handle,wm_command,0,button2.Handle);
    end;