DELPHI丢了很久,忘光了,有个简单的问题请教大富翁的兄弟们! ( 积分: 100 )

  • 主题发起人 主题发起人 baggio_t
  • 开始时间 开始时间
B

baggio_t

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾好,很久没用DELPHI了,都忘的差不多了,我想用DELPHI编个小程序,其中想实现用DELPHI自动点击另一个软件(比如说WORD之类)上的某个按钮,如何实现?请高手指点一下!谢谢
 
有次吃饭,同事说了句:
"再傻瓜的相机,都要手动一下".;
顿时大家都笑了.

我觉得你的想法实现不了,
除非你指的另一个软件预先就考虑了未来的delphi对其控制,从而留下了一些接口或消息
供以后编程来用.否则,我觉得不可能.
用dephi发什么消息,写什么注册表之类都没用,因为另一个软件没有相应的响应机制.
 
有两种方法:
一、用你的程序控制鼠标,移动到指定的地方之后,发送点击消息
二、获取那个程序的 handle然后在获取那个按钮控件的 id 然后给它发送 onclick消息!

第二个方法有个简单的测试: 你可以利用 delphi带的 winsight 来查看那个按钮的 handle 向某个 handle就不用我说了吧? postmessage (异步消息) sendmessage 同步消息
 
貌似 QQ尾巴就是用的第二种方法实现的:)
 
感谢lisongmagic兄,我的意思是DELPHI上点一个按钮,然后触发另一个软件的按钮,比如说一个word文档另存为一个文件!
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=13774
 
我晕,告诉你正确答案居然不来感谢我,好人做不得呀~~~~~~~

所有 windows的窗口程序都是基于 windows消息机制的,给你看看最原始的 windows程序是怎么控制的:
BOOL WINAPI MainDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_COMMAND:
{
if( wParam == IDC_BUTTON1 )
{
MessageBox (NULL, szError, TEXT("Error"), MB_OK);
return TRUE;
}
else if(wParam == IDCANCEL)
{
EndDialog( hDlg, TRUE );
}
else if(wParam == IDOK)
{
SetWindowText(GetDlgItem(hDlg,IDC_EDIT1), "练习一下");
}
}
}
return FALSE;
}
看到了吗? 窗体接收到什么消息就对应执行什么代码~~~~~~
不管消息是来自自己这个窗体还是别的窗体~~~~~~~~

怪只怪 delphi 封装的太厉害了,把你们都搞傻了~~~~~~~~~~~~~~~~~~~~~
 
dcms兄别生气,回复前没刷新,没看到你的回帖,非常感谢!!!我的本意是要做一个批量处理数据库的软件,而这个库被加密了,只能通过它公司的软件才能打开,他的软件中可以批量生成目录,双击每一个条目可以打开文档,然后可以复制,因为这个库很大,1万多条,我要实现的是编个小程序自动把每一个条目的正文复制粘贴到文本文件中!也感谢xianguo兄,我现在还没有头绪,先试试,一会给你们加分,呵呵!
 
dcms说的方法我知道,
楼主就用他的第二个方法试一下吧,发个消息,看那个按钮能否响应delphi按钮发的消息,
dcms的回答似乎点醒了我: 所有windows平台的程序都是基于windows的消息机制的,delphi只是把它套个壳,封装了一下,从本质上来说,应该是通用的消息机制的.楼主试试,呵呵

二、获取那个程序的 handle然后在获取那个按钮控件的 id 然后给它发送 onclick消息!

第二个方法有个简单的测试: 你可以利用 delphi带的 winsight 来查看那个按钮的 handle 向某个 handle就不用我说了吧? postmessage (异步消息) sendmessage 同步消息
 
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
 
后退
顶部