想做一个定时器,定时的使用鼠标点击打开的一个网页中某个按钮,如何做到?
定时的好做,就是控制鼠标点击网页中的按钮不知如何下手?请高手指点啊 求代码
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 句柄  本人愚钝 不知如何用 高人帮我指点一下 万份感激

解决方案 »

  1.   

    http://www.cnblogs.com/del/archive/2009/01/07/1370907.html
      

  2.   

    handle=findwindow("ie窗口的标题")
    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,是不存在的。
      

  3.   

    var
        hTopWnd, hEditWnd: THandle;
    begin
        hTopWnd := FindWindow('顶层窗口类名', '顶层窗口标题');
        if IsWindow(hTopWnd) then
        begin
            hEditWnd := FindWindowEx(hTopWnd, NULL, '子窗口类名', '子窗口标题');
            if IsWindow(hEditWnd) then
            begin
                // 找到子窗口了...
            end;
        end;
    end;
      

  4.   

    一般都不是直接操作IE的 建议你使用WB控件或者EM
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    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. 
      

  6.   

    思路是先找到按钮,再向按钮发送消息。现在不知那里出了问题,觉得应逐个检查:
    1.用findwindow找到ie窗口.  
    可以先让程序检查是否找到了窗口句柄,逐个往下找问题。
      

  7.   

    我有坐标点击的
    另外,网页内的控件不适合用FindWindow来查找
      

  8.   

    enumchildwindow可以列举子窗口。