想做一个定时器,定时的使用鼠标点击打开的一个网页中某个按钮,如何做到?
定时的好做,就是控制鼠标点击网页中的按钮不知如何下手?请高手指点啊 求代码
http://topic.csdn.net/t/20021125/17/1204088.html 这个帖子里面有写 但是还是不懂
“
只给你一个算法,具体代码自己写
1.用findwindow找到ie窗口.
2.用getwindow找到ie窗口的子窗口,即按钮等
3.用getwindowtext得到窗口的text,根据按钮名称判断是否是你要的按钮。若不是,循环
while 句柄 > 0 then
句柄 := getwindow(句柄,GW_HWNDNEXT);
if getwindowtext = 你要的按钮 then
sendmessage(ie.handle,wm_command,0,按钮.handle) 或用
senemessage(按钮.handle,wm_lbuttondown,0,0)
senemessage(按钮.handle,wm_lbuttonup,0,0)
else
句柄 := getwindow(句柄,GW_HWNDNEXT); 循环结束 ”
怎样使用findwindow getwindow 句柄 本人愚钝 不知如何用 高人帮我指点一下 万份感激
定时的好做,就是控制鼠标点击网页中的按钮不知如何下手?请高手指点啊 求代码
http://topic.csdn.net/t/20021125/17/1204088.html 这个帖子里面有写 但是还是不懂
“
只给你一个算法,具体代码自己写
1.用findwindow找到ie窗口.
2.用getwindow找到ie窗口的子窗口,即按钮等
3.用getwindowtext得到窗口的text,根据按钮名称判断是否是你要的按钮。若不是,循环
while 句柄 > 0 then
句柄 := getwindow(句柄,GW_HWNDNEXT);
if getwindowtext = 你要的按钮 then
sendmessage(ie.handle,wm_command,0,按钮.handle) 或用
senemessage(按钮.handle,wm_lbuttondown,0,0)
senemessage(按钮.handle,wm_lbuttonup,0,0)
else
句柄 := getwindow(句柄,GW_HWNDNEXT); 循环结束 ”
怎样使用findwindow getwindow 句柄 本人愚钝 不知如何用 高人帮我指点一下 万份感激
HWND GetWindow(handle,这个参数参看下面列表;
hWnd:窗口句柄。要获得的窗口句柄是依据nCmd参数值相对于这个窗口的句柄。
nCmd:说明指定窗口与要获得句柄的窗口之间的关系。该参数值可以是下列之一:
GW_CHILD:如果指定窗口是父窗口,则获得的是在Z序顶端的子窗口的句柄,否则为NULL。函数仅检查指定父窗口的子窗口,不检查继承窗口。
GW_ENABLEDPOPUP:(WindowsNT 5.0)返回的句柄标识了属于指定窗口的处于使能状态弹出式窗口(检索使用第一个由GW_HWNDNEXT 查找到的满足前述条件的窗口);如果无使能窗口,则获得的句柄与指定窗口相同。
GW_HWNDFIRST:返回的句柄标识了在Z序最高端的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在Z序最高端的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在z序最高端的顶层窗口:如果指定窗口是子窗口,则句柄标识了在Z序最高端的同属窗口。
GW_HWNDLAST:返回的句柄标识了在z序最低端的相同类型的窗口。如果指定窗口是最高端窗口,则该柄标识了在z序最低端的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在z序最低端的顶层窗口;如果指定窗口是子窗口,则句柄标识了在Z序最低端的同属窗口。
GW_HWNDNEXT:返回的句柄标识了在Z序中指定窗口下的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口下的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在指定窗口下的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口下的同属窗口。
GW HWNDPREV:返回的句柄标识了在Z序中指定窗口上的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口上的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在指定窗口上的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口上的同属窗口。
GW_OWNER:返回的句柄标识了指定窗口的所有者窗口(如果存在)。GW_OWNER与GW_CHILD不是相对的参数,没有父窗口的含义,如果想得到父窗口请使用GetParent()。例如:例如有时对话框的控件的GW_OWNER,是不存在的。
hTopWnd, hEditWnd: THandle;
begin
hTopWnd := FindWindow('顶层窗口类名', '顶层窗口标题');
if IsWindow(hTopWnd) then
begin
hEditWnd := FindWindowEx(hTopWnd, NULL, '子窗口类名', '子窗口标题');
if IsWindow(hEditWnd) then
begin
// 找到子窗口了...
end;
end;
end;
var
handle1,handle2:THandle;
sText:string;
begin
shellexecute(handle,'open',pchar('http://www.xgzrc.com/Company/'),'','',SW_SHOWNORMAL);
sleep(3000);
handle1:=findwindow(nil,'企业服务 - 新工作人才网www.xgzrc.com - Tencent Traveler');
handle2 := getwindow(handle1,GW_HWNDNEXT);
while handle2 > 0 do
begin
GetWindowText(handle2,pChar(sText),255);
if sText = '注册' then
begin
sendmessage(handle2,wm_lbuttondown,0,0);
sendmessage(handle2,wm_lbuttonup,0,0);
end
else
handle2 := getwindow(handle1,GW_HWNDNEXT);
end;
end;
运行这段代码报错:
...project1.exe raised too many consecutive exceptions :' access violation at 0x77e306b7 :write of address 0x004046bd' Process stopped. Use Step or Run to continue.
1.用findwindow找到ie窗口.
可以先让程序检查是否找到了窗口句柄,逐个往下找问题。
另外,网页内的控件不适合用FindWindow来查找