实现的过程如下:
窗体创建,form1显示, 鼠标定位到 111,111 模拟点击鼠标左键,form1隐藏 。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;type
TForm1 = class(TForm)
Timer1: TTimer;
procedure CMMouseEnter(var Msg: TMessage); message WM_LBUTTONDOWN;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Tform1.CMMouseEnter(var Msg: TMessage); /////鼠标左键按下触发此过程
anObject : TObject;
begin
anObject := TObject(Msg.lParam);
//进入控件
if anObject <> nil then
begin
showmessage('cc');
end;
end;procedure TForm1.Timer1Timer(Sender: TObject); // 窗体位置设置在 包含坐标111,111 的位置
begin
form1.show ;
setforegroundwindow(form1.Handle );
setCursorPos(111 ,111 ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,GetMessageExtraInfo());
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,GetMessageExtraInfo ());
timer1.Enabled :=false;
//form1.Hide ; 去掉‘//’后 不能点击成功不显示‘cc’, 而不去掉‘//’则能成功 显示 ‘cc’。
end;end.
发狂了, 怎么让这个过程瞬间完成?我用timer1来控制form1.hide,模拟点鼠标后一秒钟 再隐藏窗体 倒是 能成功点击。 但是怎么能够让这个过程瞬间完成?
窗体创建,form1显示, 鼠标定位到 111,111 模拟点击鼠标左键,form1隐藏 。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;type
TForm1 = class(TForm)
Timer1: TTimer;
procedure CMMouseEnter(var Msg: TMessage); message WM_LBUTTONDOWN;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Tform1.CMMouseEnter(var Msg: TMessage); /////鼠标左键按下触发此过程
anObject : TObject;
begin
anObject := TObject(Msg.lParam);
//进入控件
if anObject <> nil then
begin
showmessage('cc');
end;
end;procedure TForm1.Timer1Timer(Sender: TObject); // 窗体位置设置在 包含坐标111,111 的位置
begin
form1.show ;
setforegroundwindow(form1.Handle );
setCursorPos(111 ,111 ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,GetMessageExtraInfo());
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,GetMessageExtraInfo ());
timer1.Enabled :=false;
//form1.Hide ; 去掉‘//’后 不能点击成功不显示‘cc’, 而不去掉‘//’则能成功 显示 ‘cc’。
end;end.
发狂了, 怎么让这个过程瞬间完成?我用timer1来控制form1.hide,模拟点鼠标后一秒钟 再隐藏窗体 倒是 能成功点击。 但是怎么能够让这个过程瞬间完成?
//form1.Hide ;
改为PostMessage(Form1.Handle,WM_HIDEME,0,0);const
WM_HIDEME= $3456;
form1里面增加消息响应函数
procedure OnHideSelf(var Msg:TMessage);message WM_HIDEME;procedure OnHideSelf(var Msg:TMessage);
begin
Hide;
end;
后加了一个标志判断,然后开timer2,让timer2 隐藏form1,也得到了效果. 就是挺郁闷,学不到新东西......
3楼的仁兄 谢谢你的方法,我回去试试!