Qwerty212 Posted August 25, 2015 Share Posted August 25, 2015 Hello I'm doing an program to calculate production times with a touch screen input.I was looking to create something similar to the smartphones timepickers but I don't have the skills yet so I looked on the net for examples that can be used inside an Autoit GUI.I found a html file running a JQuery that was just perfect for my project: marinovdh's blogIt looks like this:And it works like a charm in touch screen's with the same touch and feel of an smartphone control.The sad part is that when I embbed this html in my gui I get this:It's really tiny, so It's really difficult to use with the fingers.I tried to edit the javascript code of the jquery to make the control bigger, but I messed it a lot (to the point that it didn't work at all).I also tried to set the default zoom of the IE to 200% but it failed. The only way of getting the size that I needed was doing a "Control +" in the ActiveX element of the gui (and it doesn't quite looks good to see the element growing).When I do the Control + trick I get the gui as I need it:I've been using the search for some days but nothing as worked on me.I've tried:$oIE.document.style.zoom = 2RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom", "ZoomFactor", "REG_DWORD", "200000")This is my current code (modified to extract pointless things)expandcollapse popup#include <GUIConstants.au3> #include <IE.au3> #include <GuiEdit.au3> ;_WinAPI_ShowCursor(False);Just to hide the zoom trick ¬¬' RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom", "ZoomFactor", "REG_DWORD", "200000"); It didn't work :( Global $oIE = ObjCreate("Shell.Explorer"); What's the difference between this and $oIE = ObjCreate("Shell.Explorer.2")??? Local Const $sFont = "Arial" $url = @ScriptDir & "\hora\example.html";An external jquery based html file with the hour selector $GUIhora = GUICreate("HOUR SELECTION", 780, 340, 0, 0) GUISetBkColor(0x000000) GUISetState(@SW_SHOW, $GUIhora) $labhora2 = GUICtrlCreateButton("00:00", 530, 80, 130, 70) GUICtrlSetFont(-1, 32, 700, 1, $sFont, 5) $now = GUICtrlCreateButton("NOW", 675, 80, 70, 70);just a button to let the users input the current time $GUIActiveX = GUICtrlCreateObj($oIE, -15, -20, 418, 1500); I make the object as high to prevent that scrollbars are showed in the control GUICtrlSetBkColor(-1,0x000000) Sleep(20) $oIE.navigate($url) Sleep(200) $pos = WinGetPos("HOUR SELECTION"); I zoom the control just taking the position of the gui and doing a Control + sending. MouseClick("left", $pos[0] + 380, $pos[1] + 110) ControlFocus($GUIhora, "", $GUIActiveX) Send("^{+}") Send("^{+}") Send("^{+}") Send("^{+}") ;~ _WinAPI_ShowCursor(True) $oIE.document.body.scroll = "no" $oIE.document.body.style.overflow = "hidden" Local $oForm = _IEFormGetObjByName($oIE, "ExampleForm"); I need to read the current value of each wheel... Local $hora = _IEFormElementGetObjByName($oForm, "hora") Local $minutosdec = _IEFormElementGetObjByName($oForm, "minutosdec") Local $minutos = _IEFormElementGetObjByName($oForm, "minutos") $vhora = _IEFormElementGetValue($hora) $vmindec = _IEFormElementGetValue($minutosdec) $vmin = _IEFormElementGetValue($minutos) $previoushour = $vhora & ":" & $vmindec & $vmin While 1 Sleep(5) $vhora = _IEFormElementGetValue($hora);... so now with the values I can know in real time the inputted time $vmindec = _IEFormElementGetValue($minutosdec) $vmin = _IEFormElementGetValue($minutos) $newhour = $vhora & " : " & $vmindec & $vmin If $newhour <> $previoushour Then; just to check that the button text will only be changed IF the time has changed in the wheel If $vhora < 10 Then ;I check if the hour selected is less than 10 to add a zero at the left of its value ControlSetText($GUIhora, "", $labhora2, "0" & $vhora & ":" & $vmindec & $vmin) Else ControlSetText($GUIhora, "", $labhora2, $vhora & ":" & $vmindec & $vmin) $previoushour = $newhour EndIf EndIf $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $now $aPos = MouseGetPos();I check the window coordenates to move the mouse to the correct wheel _WinAPI_ShowCursor(False); I hide the cursor to make the wheel movement less embarasing $actualhour = @HOUR $Actualmin = @MIN $vhora = _IEFormElementGetValue($hora) $vmindec = _IEFormElementGetValue($minutosdec) $vmin = _IEFormElementGetValue($minutos) $hourmovement = Number($vhora) - Number($actualhour) $mindecmovement = Number($vmindec) - StringTrimRight($Actualmin, 1) $minmovement = Number($vmin) - StringTrimLeft($Actualmin, 1) ;Instead of moving the wheels with a constant speed I have coded a little loop to increase speed as I'm getting closer to the desired wheel position ;Unofrtunately I don't know how to scroll all the wheels at the same time ;I have also tried to change the value of the selection boxes in the IE element with a _IEFormElementGetValue but it doesn't change the wheel position :( If Number($hourmovement) > 0 Then $pos = WinGetPos("HOUR SELECTION") MouseClick("left", $pos[0] + 50, $pos[1] + 100, 1) Sleep(10) $x = 0 Do Mousemove($pos[0] + 50, $pos[1] + 100, 1) MouseWheel("up", 1) Sleep(($hourmovement - $x) * 2) $x = $x + 1 Until $x = $hourmovement ElseIf Number($hourmovement) < 0 Then $pos = WinGetPos("HOUR SELECTION") $hourmovement = Number($hourmovement * (1 - 2)) MouseClick("left", $pos[0] + 50, $pos[1] + 100, 1) Sleep(10) $x = 0 Do Mousemove($pos[0] + 50, $pos[1] + 100, 1) MouseWheel("down", 1) Sleep(($hourmovement - $x) * 2) $x = $x + 1 Until $x = $hourmovement EndIf If Number($mindecmovement) > 0 Then $pos = WinGetPos("HOUR SELECTION") MouseClick("left", $pos[0] + 240, $pos[1] + 100, 1) Sleep(10) $x = 0 Do Mousemove($pos[0] + 240, $pos[1] + 100, 1) MouseWheel("up", 1) Sleep(($mindecmovement - $x) * 15) $x = $x + 1 Until $x = $mindecmovement ElseIf Number($mindecmovement) < 0 Then $pos = WinGetPos("HOUR SELECTION") $mindecmovement = Number($mindecmovement * (1 - 2)) MouseClick("left", $pos[0] + 240, $pos[1] + 100, 1) $x = 0 Do Mousemove($pos[0] + 240, $pos[1] + 100, 1) MouseWheel("down", 1) Sleep(($mindecmovement - $x) * 15) $x = $x + 1 Until $x = $mindecmovement EndIf If Number($minmovement) > 0 Then $pos = WinGetPos("HOUR SELECTION") MouseClick("left", $pos[0] + 320, $pos[1] + 100, 1) $x = 0 Do Mousemove($pos[0] + 320, $pos[1] + 100, 1) MouseWheel("up", 1) Sleep(10 + (($minmovement - $x) * 7)) $x = $x + 1 Until $x = $minmovement ElseIf Number($minmovement) < 0 Then $pos = WinGetPos("HOUR SELECTION") $minmovement = Number($minmovement * (1 - 2)) MouseClick("left", $pos[0] + 320, $pos[1] + 100, 1) $x = 0 Do Mousemove($pos[0] + 320, $pos[1] + 100, 1) MouseWheel("down", 1) Sleep(($minmovement - $x) * 7) $x = $x + 1 Until $x = $minmovement EndIf MouseMove($apos[0], $apos[1], 0) _WinAPI_ShowCursor(True) EndSelect WEndThis is the zip containing the html file and the javascript: Hour Selector.zipAny help on getting the hour selector already zoomed at 200% when gui appears would be really apreciatted. Greets from Barcelona Link to comment Share on other sites More sharing options...
Qwerty212 Posted August 28, 2015 Author Share Posted August 28, 2015 (edited) As a workaround I have found this function from trancexx that gets the control handle of the embedded object, so I can hide the window until everything is zoomed and then show it on screen again: ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; Get control handle Global $hHandle = _GetObjectWinHandle($oIE) ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; Focus it $oIE.document.focus ControlSend($hHandle, 0, 0, "^{+}") ControlSend($hHandle, 0, 0, "^{+}") ControlSend($hHandle, 0, 0, "^{+}") ControlSend($hHandle, 0, 0, "^{+}") GUISetState(@SW_SHOW, $GUIhora) Func _GetObjectWinHandle($oObject) Local $aCall = DllCall("oleacc.dll", "int", "WindowFromAccessibleObject", _ "idispatch", $oObject, _ "hwnd*", 0) If @error Or $aCall[0] Then Return SetError(1, 0, 0) EndIf Return $aCall[2] EndFunc ;==>_GetObjectWinHandleNow I can show the IE zoomed while I try to figure how to modify the JQuery to have the size that I need directly without zooming. Greets from Barcelona Edited August 28, 2015 by Qwerty212 mLipok 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now