如何编程实现控制他人已编译好的exe程序中的edit和按钮(100)

  • 主题发起人 主题发起人 asdfzxcv88
  • 开始时间 开始时间
A

asdfzxcv88

Unregistered / Unconfirmed
GUEST, unregistred user!
如何编程实现控制他人已编译好的exe程序中的edit和按钮
 
比如他人程序窗口名为“电话本软件”,界面上有4个edit和一个按钮,我要自己编一程序,实现在我编的程序中的四个edit中输入内容,其相应的“电话本软件”中的四个编辑框也自动输入相应的内容,在我编辑的软件中按Button1键,其也自动执行点击“电话本软件”中的按钮。求高手赐教,最好给我例子源码,xqsbbhxt05@126.com谢谢!!!!!!!!!!!!
 
获得句柄发送消息。
 
function EnumChildProc(Hwnd:Integer; TF:TForm1):Boolean; stdcall;begin Result := True; //设定为True才会再找下一个 ......这里GetWindowText等来判断是不是你要操作的button //如果是的话,执行点击操作 SendMessage(Hwnd, BM_CLICK, 0, 0);end;var hHandle: THandle;begin hHandle := FindWindow(类名,窗口名); EnumChildWindows(hHandle, @EnumChildProc, 0);end;
 
可以用spy++找~~http://blog.csdn.net/luckyboy101/archive/2009/07/22/4371535.aspx然后SendMessage(Hwnd, BM_CLICK, 0, 0);
 
使用var hHandle: THandle;begin hHandle := FindWindow(类名,窗口名); EnumChildWindows(hHandle, @EnumChildProc, 0);end; 已成功达到要求另求教如何模拟单击他人已编译好的exe程序中combobox,并选中其中的项,另外如何读取他人已编译好的exe程序中的edit的内容。
 
没有人会吗
 
我自己已解决 [DllImport("user32.dll")] static extern IntPtr FindWindow(string strClass, string strWindow); [DllImport("user32.dll")] static extern IntPtr FindWindowEx(HandleRef hwndParent, HandleRef hwndChildAfter, string strClass, string strWindow); [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true,CharSet=CharSet.Auto)] private static extern int SendMessage1(IntPtr hwnd, uint wMsg, int wParam, string lParam); //调用windows提供的API函数 Intptr ptrTaskbar = FindWindow("#32770", "Form1"); Intptr ptrNextBtn = FindWindowEx(new HandleRef(this, ptrTaskbar), new HandleRef(this, IntPtr.Zero), "ComboBox",""); //找到combobox的句柄 SetForegroundWindow(ptrTaskbar); //将combobox的父窗口设为当前活动窗口 SendMessage(ptrNextBtn, CB_SHOWDROPDOWN, 1, 0);//打开列表 string ptr = "研究生"; //combobox里之前有初中生、高中生、大学生、研究生 SendMessage1(ptrNextBtn, CB_SELECTSTRING, 0, ptr );//选择 SendMessage(ptrNextBtn, WM_KEYDOWN, VK_RETURN, 0); //响应回车键 SendMessage(ptrNextBtn, CB_SHOWDROPDOWN,0, 0); //关闭列表 System.Threading.Thread.Sleep(50); //延时50ms,如果机器速度慢,可以增加延时时间 经测试程序好用。如果有问题,应该是在findwindow函数的标题或者combobox的句柄有问题。 ptrNextBtn = FindWindowEx(new HandleRef(this, ptrTaskbar), new HandleRef(this, IntPtr.Zero), "ComboBox","");中的ptrTaskbar必须是combobox的上一个父窗口的句柄,如果时期上上级父窗口肯定会出错的。
 
多人接受答案了。
 
后退
顶部