delphi自动点击按钮的问题
unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,F...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
h, i: HWND;
j, k : HWND;
l, m : HWND;
begin
h := FindWindow(nil, '搜狗拼音输入法 5.2正式版 安装');
while(h<>0) do
begin
i := FindWindowEx(h,0,'Button','下一步(&N) >');
SendMessage(i, BM_CLICK, 0, 0);
sleep(100);
memo1.Lines.Add('action 1') ;
j := FindWindowEx(h,0,'Button','我接受(&I)');
SendMessage(j, BM_CLICK, 0, 0);
sleep(500);
memo1.Lines.Add('action 2') ;
这是代码,前面几个按钮都点击成功不知道最后一个为什么总是失败
end;
end;
end.
我没设断点,但是窗体上接了个memo,没点击一个按钮memo就会显示一定字符,前几个按钮都正常可以点击,就是最后一个,显示点击了但是实际并没有成功 展开
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
h, i: HWND;
j, k : HWND;
l, m : HWND;
begin
h := FindWindow(nil, '搜狗拼音输入法 5.2正式版 安装');
while(h<>0) do
begin
i := FindWindowEx(h,0,'Button','下一步(&N) >');
SendMessage(i, BM_CLICK, 0, 0);
sleep(100);
memo1.Lines.Add('action 1') ;
j := FindWindowEx(h,0,'Button','我接受(&I)');
SendMessage(j, BM_CLICK, 0, 0);
sleep(500);
memo1.Lines.Add('action 2') ;
这是代码,前面几个按钮都点击成功不知道最后一个为什么总是失败
end;
end;
end.
我没设断点,但是窗体上接了个memo,没点击一个按钮memo就会显示一定字符,前几个按钮都正常可以点击,就是最后一个,显示点击了但是实际并没有成功 展开
3个回答
展开全部
你好,这个问题所在我可能告诉你,因为点击是两个事件才有效,你只写了一个,就是按下,没有写弹起的,前两个是因为有第三个按下的,所以系统会调弹起的,最后一个没有再调用按下——弹起的没执行,所以不成功,需要改一下。下面是演示代码,不一定正确,你自己 查查。
SendMessage(j, BM_CLICK_UP, 0, 0);其他几个也建议发出弹起的消息。
SendMessage(j, BM_CLICK_UP, 0, 0);其他几个也建议发出弹起的消息。
追问
rich556677你把函数搞清楚了在说话。。。。
你的方法我早就试过了,不行
另外你说的那中格式是sendmessage(h1,WM_LBUTTONDOWN,0,0)。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SendMessage(j, BM_CLICK, 0, 0);下断点,然后运行看一下j是不是取到值了,如果没有说明那个按钮文本你可能写的不对,用spyit之类的检查一下那个按钮。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-06
展开全部
、一花一世界,一叶一追寻。一曲一场叹,一生为一人。
34、谁应了谁的劫谁又变成了谁的执念。
35、尘缘从来都如水,罕须泪,何尽一
34、谁应了谁的劫谁又变成了谁的执念。
35、尘缘从来都如水,罕须泪,何尽一
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询