slider of dom

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
xuezhe
Posts: 91
Joined: 06 Jan 2016, 11:02

slider of dom

30 Nov 2017, 23:06

it can't work after opening the site.
https://www.cnblogs.com/cloudgamer/arch ... lider.html
捕获.PNG
捕获.PNG (423 Bytes) Viewed 1340 times

Code: Select all

#NoEnv
#SingleInstance force
CoordMode, Mouse, Screen
ControlGetText,string, Edit1,ahk_class IEFrame  
WebBrowser:=IEGetFromUrl(string)
document:=WebBrowser.document
ControlGetPos , x2, y2, Width2, Height2, Internet Explorer_Server1, ahk_class IEFrame

element:=document.getElementById("idSlider3")
clientCoords :=element.getBoundingClientRect()
MsgBox % clientCoords.left   "`n"  clientCoords.top
MouseMove, % WebBrowser.left + clientCoords.left + 1+x2,% WebBrowser.top + clientCoords.top + 1+y2 ,20



FireEvent(slider, WebBrowser, "mousedown", clientCoords,1,1)
FireEvent(slider, WebBrowser, "mousemove", clientCoords, 1 + 500, 1)
FireEvent(slider, WebBrowser, "mouseup"  , clientCoords, 1 +500, 1)

 
 FireEvent(element, WebBrowser, eventType, clientCoords, offsetX, offsetY){
 global y2,x2
   event := WebBrowser.document.createEvent("MouseEvent")
   event.initMouseEvent(eventType, true, true
                       , WebBrowser.document.parentWindow, 0
                       , WebBrowser.left + clientCoords.left + offsetX+x2
                       , WebBrowser.top + clientCoords.top + offsetY+y2
                       , clientCoords.left + offsetX+x2
                       , clientCoords.top + offsetY+y2
                       , false, false, false, false
                       , 0, element)
         
   element.dispatchEvent(event)
   }
 
 
 ;从IE选项卡对应的url返回window对象
IEGetFromUrl(url){
	 for window in ComObjCreate("Shell.Application").Windows 
	 {
	    if InStr( window.FullName, "iexplore.exe" )&&InStr(window.document.url,url)  
	      Return window
	 } 
}
teadrinker
Posts: 4330
Joined: 29 Mar 2015, 09:41
Contact:

Re: slider of dom

03 Dec 2017, 22:31

Hi, xuezhe,

Try:

Code: Select all

#NoEnv
#SingleInstance force
CoordMode, Mouse, Screen
ControlGetText,string, Edit1,ahk_class IEFrame  
string := "https://www.cnblogs.com/cloudgamer/archive/2008/12/24/slider.html"
WebBrowser:=IEGetFromUrl(string)
document:=WebBrowser.document
ControlGetPos , x2, y2, Width2, Height2, Internet Explorer_Server1, ahk_class IEFrame

element:=document.getElementById("idSlider3")
clientCoords :=element.getBoundingClientRect()
; MsgBox % clientCoords.left   "`n"  clientCoords.top
; MouseMove, % WebBrowser.left + clientCoords.left + 1+x2,% WebBrowser.top + clientCoords.top + 1+y2 ,20
sliderX := WebBrowser.left + clientCoords.left + 3+x2
sliderY := WebBrowser.top + clientCoords.top + 3+y2
WinActivate, % "ahk_id" WebBrowser.hwnd
MouseClickDrag, L, sliderX, sliderY, sliderX + 500, sliderY
 
 
 ;从IE选项卡对应的url返回window对象
IEGetFromUrl(url){
    for window in ComObjCreate("Shell.Application").Windows 
    {
       if InStr( window.FullName, "iexplore.exe" )&&InStr(window.document.url,url)  
         Return window
    } 
}
xuezhe
Posts: 91
Joined: 06 Jan 2016, 11:02

Re: slider of dom

04 Dec 2017, 08:53

thx.
But I want to use createEvent()
Is something wrong about my script ?
xuezhe
Posts: 91
Joined: 06 Jan 2016, 11:02

Re: slider of dom

09 Dec 2017, 06:20

teadrinker wrote:Hi, xuezhe,

Try:

Code: Select all

#NoEnv
#SingleInstance force
CoordMode, Mouse, Screen
ControlGetText,string, Edit1,ahk_class IEFrame  
string := "https://www.cnblogs.com/cloudgamer/archive/2008/12/24/slider.html"
WebBrowser:=IEGetFromUrl(string)
document:=WebBrowser.document
ControlGetPos , x2, y2, Width2, Height2, Internet Explorer_Server1, ahk_class IEFrame

element:=document.getElementById("idSlider3")
clientCoords :=element.getBoundingClientRect()
; MsgBox % clientCoords.left   "`n"  clientCoords.top
; MouseMove, % WebBrowser.left + clientCoords.left + 1+x2,% WebBrowser.top + clientCoords.top + 1+y2 ,20
sliderX := WebBrowser.left + clientCoords.left + 3+x2
sliderY := WebBrowser.top + clientCoords.top + 3+y2
WinActivate, % "ahk_id" WebBrowser.hwnd
MouseClickDrag, L, sliderX, sliderY, sliderX + 500, sliderY
 
 
 ;从IE选项卡对应的url返回window对象
IEGetFromUrl(url){
    for window in ComObjCreate("Shell.Application").Windows 
    {
       if InStr( window.FullName, "iexplore.exe" )&&InStr(window.document.url,url)  
         Return window
    } 
}
I change it to the following :
element:=WebBrowser.document.getElementById("idBar3")
I use createEventObject() for IE8 .it works well now on window xp .

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: inseption86, mikeyww and 448 guests