模拟鼠标单击 按钮 急!!!在线等待 (解决立刻送分)大部分已经解决,就差一点了!(100)

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

Unregistered / Unconfirmed
GUEST, unregistred user!
A.EXE 和B.EXE (别人写的程序,登录窗口)在B.EXE上有一个文本框和两个按钮(确定,取消)我想在我的A.EXE上点击一个按钮,将一个密码:123,传送到B.EXE中的文本框,按后模拟鼠标单击按下“确定”按钮,现在是密码能传送过去,但模拟鼠标单击却没有任何反应。请各位帮忙看看,应该怎样解决?function EnumChildProc(Hwnd:THandle;lParam:LParam):boolean;var WindowCaption,WindowClass:array[0..254] of Char;begin GetClassName(Hwnd,WindowClass,255); if Pos('EDIT',UpperCase(StrPas(WindowClass))) > 0 then begin Inc(cnt); // SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar(IntToStr(cnt)))); SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar('123'))); // SendMessage(Hwnd, WM_LBUTTONDOWN, MK_LBUTTON, makelparam(56,60)); // SendMessage(Hwnd, WM_LBUTTONUP, MK_LBUTTON, makelparam(56,60)); SetCursorPos(56,64);//先指定鼠标点击的坐标 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//左键按下 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//左键起来 end; Result := True; end;procedure TForm1.Button1Click(Sender: TObject);begin Enumwindows(@EnumWindowsProc,0);end;
 
SetCursorPos(56,64);//先指定鼠标点击的坐标 =>这里的问题?
 
guanyue7613,劳驾,帮忙解决一下。
 
直接用工具抓出按钮的句柄就好了哎
 
即是目标是最小话状态都测试通过 SendMessage(1708546,WM_LBUTTONDOWN,MK_LBUTTON,0); SendMessage(1708546,WM_LBUTTONUP,MK_LBUTTON,0);
 
登录窗口,不用考虑最小化情况,那位能给出给详细一点的说明或完整一点的代码。
 
先运行exe文件,再使用单独按钮可以实现了,但按下面的调用方式却不行。procedure TForm1.Button1Click(Sender: TObject);var H: HWND; lpName: PChar;begin ShellExecute(0,'open',pchar('c:/加密cxtk138.exe'),0,0,SW_SHOWNORMAL);//当执行到此处时,显示登录窗口后,不能向下执行程序。//请大家帮忙看看,怎样解决!!! Enumwindows(@EnumWindowsProc,0); H := FindWindow(nil, '密码'); if H = 0 then exit; lpName := StrAlloc(30); GetClassName(H, lpName, 30); H:=GetWindow(H,GW_CHILD); While H<>0 Do begin Windows.GetWindowText(H,lpName,30); Postmessage(H,WM_LBUTTONDOWN,0,0); Postmessage(H,WM_LBUTTONUP,0,0); H:=GetWindow(H,GW_HWNDNEXT); end; StrDispose(lpName);end;
 
问题解决了,美中不足,明显能看到那个登录窗口一晃,这个还没有搞定,继续帮忙解决!
 
说了找到句柄就好了嘛难道除了上代码就不行了。。。。[:(]procedure TForm1.btn5Click(Sender: TObject);var FeHandle,BtnHandle :THandle;begin FeHandle := FindWindow(nil,PChar(trim(Edit5.Text))); if FeHandle > 0 then begin BtnHandle := FindWindowEx(FeHandle,0,nil,PChar(trim(Edit6.Text))); if BtnHandle > 0 then begin SendMessage(BtnHandle,WM_LBUTTONDOWN,MK_LBUTTON,0); SendMessage(BtnHandle,WM_LBUTTONUP,MK_LBUTTON,0); end; end;end;
 
楼上可以解决吧
 
后退
顶部