delphi 网页模拟鼠标按键
用自己程序打开IE浏览器的主页:如www.baidu.com,然后同时点击'新闻'和'图片';
如果这个浏览器是我内嵌我的程序里面还比较好操作,,但是如果是外置打开了话,要首先取得窗口向柄
function CheckTask(ExeFileName: string): Boolean;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := False;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =UpperCase(ExeFileName))) then
result := True;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if CheckTask(Edit1.Text)=true then
Label1.Caption:='进程正在运行中...'
else
Label1.Caption:='进程不存在,监视中...';
end;
现在IE我已经打开了,并且已经打开www.baidu.com 主页,
我以前的思路是这样,模拟鼠标位置,然后发送位置点击,但是发现,,如果当前IE不是指定前置,没有用,还有跟我们液晶,分辨率也有关系,经常会跑偏位置,所以行不通
第二是,通过获取IE的窗口句柄,然后再遍历IE的网页按钮名称,发送模拟按键,这样,就不限鼠标操作了,请问这一步要怎么操作呢
[解决办法]
使用IHTMLDOCUMENT2接口,非常方便。
[解决办法]
//查找子窗口function EnumChildProc( hwnd: HWND; lParam: LPARAM): BOOL; stdcall;var vBuffer: array[0..255] of Char;begin PInteger(lParam)^ := 0; GetClassName(hwnd, vBuffer, SizeOf(vBuffer)); if SameText( 'ATL:Edit', vBuffer) then //'ATL:Edit'是类名,你可以用spy++查到你要操作的组件的类名 begin PInteger(lParam)^ := hwnd; Result := False; end else Result := True;end;//发送文字,你换成发送按键消息procedure TfrmMain.SendText(s: string);var I: Integer; vHandle: THandle;begin vHandle := WebBrowser2.Handle; if vHandle = 0 then Exit; EnumChildWindows(vHandle, @EnumChildProc, Integer(@vHandle)); if vHandle = 0 then Exit; for I := 1 to Length(S) do SendMessage(vHandle, WM_CHAR, Ord(S[I]), 0);end;
[解决办法]
IHTMLDOCUMENT2 然后点击网页里面的连接
当然也可以对其进行文本输入