如何由计算机操作另一个应用程序?

particular 2010-08-26 08:00:47
目前客户有一个比较头痛要求,想了半天也没想出什么好办法来,请各位提提思路,如果有谁做过就更好了,再此谢过了.

打个比方说吧目前客户正运行一套系统,此时他需要由这套系统打开记事本,以下动作都由计算模拟人为手工完成。
(ALT+F 弹出下拉菜单)-->(N 新建)-->(将当前系统的一些文字输入到记事本中)-->(ALT+F弹出下来菜单)-->(S 保存)
-->(给文件起名 点击保存按钮)-->(ALT+F弹出下拉菜单)-->(X退出记事本)

不知说清楚没了,简单的说对记本事的操作都是计算机来完成的,不存在人为操作。

我只是拿记事本说明问题并不是操作记事本啊.
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rikhong 2010-08-26
  • 打赏
  • 举报
回复
给你复制过来
首先要得到进程ID,然后通过进程ID获得窗口句柄(你也可以直接用FINDWINDOWS)得到窗口的句柄。
得到窗口的句柄后 接下来就有点麻烦了,你可以用FindWindowEx来获得窗口里的控件的句柄,但是得到句柄后你根本不知道这些句柄是哪个控件的。所以你可以用VS 带的工具SPY++来了解目标程序的结构。必须了解清楚了才好做,例如你用SPY++得到一个EDIT的句柄(注意:控件的句柄每次启动程序后都会不一样),用FindWindowEx搜索出来的句柄与之对应,就知道你搜索出来的第几个句柄是这个EDIT的
(句柄虽然每次都会变,但是控件的顺序是不会变的,所以你只要知道第几个是这个EDIT的就好)
有了EDIT的句柄,并且知道它就是我们要的,这是和就可向它发消息,
例如向一它发送设置焦点的消息sendmessage(editM_h,WM_SETFOCUS,0,0);

补充一个查控件和向控件发消息用到的API,自己搜索一下用法
FindWindowEx
GetWindow
sendmessage
rikhong 2010-08-26
  • 打赏
  • 举报
回复
你还发了两贴啊,
ckc 2010-08-26
  • 打赏
  • 举报
回复
有个叫按键精灵的东西,似乎就是你要的
亮剑_ 2010-08-26
  • 打赏
  • 举报
回复
模拟键鼠操作,我总结一下
1、得到窗口句柄
2、向其发送消息
kye_jufei 2010-08-26
  • 打赏
  • 举报
回复
接著你發的另一篇貼子回答:
A系統已經運行(A來控制B,B有可能是未運行或運行狀態);那麼,當A、B系統運行時,可用HOOK、GetWindow(Application.Handle,GW_HWNDPREV)、FindWindow、FindWindowEX或進程注入等方法去得到B的相應操作的句柄,再去編寫你想要實現的自動控制的代碼部分即可。。。如果說,B未啟動,那麼可能先要實現找到這個B程序去用API運行它,再執行前面所提到的思路去處理......

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧