Quantcast
Channel: AutoIt v3 - General Help and Support
Viewing all articles
Browse latest Browse all 12506

IE intercepting Ctrl+F find function or invoking Find via GUI

$
0
0

I'm trying to intercept the Ctrl+F function in IE so that I can achieve a similar effect of words being highlighted via the input on my gui. To explain better here is my code.

 

What I want is to basically be able to type stuff into the input box that follows the label "Quick find:" and for any data that partially matches input  on the displayed html page to be highlighted as if I was using Ctrl+F search in IE. You can see the behaviour of Ctrl+F highlight by clicking into the IE object and then pressing Ctrl+F. I would also like for it to auto-scroll to the *best* match data. Essentially same as Ctrl+F in IE.

 

Place all attachments - the tow PNG files and the HTML file in script folder to get the full effect.

 

Chipm, Chimp, Chimp,  <---- just trying to summon user Chimp who seems to have very good knowledge of IE :P

AutoIt         
#include-once #NoTrayIcon #AutoIt3Wrapper_Outfile=Example.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_UseX64=n #include <GDIPlus.au3> #include <WindowsConstants.au3> #include <GUIConstants.au3> #include <WinAPIEx.au3> #include <IE.au3> Global $bAero, $hidden = False, $tuck = False, $tucked = False, $untucked = False, $tucking = False, $untucking = False, $timer = 0, $tdiff = 0, _ $LAYERED_GUI = $WS_EX_LAYERED, $hGUI_child, $hGUI_height = 683 Global Const $hDwmApiDll = DllOpen("dwmapi.dll"), $sChkAero = DllStructCreate("int;") DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "ptr", DllStructGetPtr($sChkAero)) $bAero = DllStructGetData($sChkAero, 1) If Not $bAero Then     $LAYERED_GUI = 0     $hGUI_height = $hGUI_height - 20 EndIf $hGUI = GUICreate("", 715, $hGUI_height, -1, 0, $WS_POPUP, $LAYERED_GUI + $WS_EX_TOPMOST, WinGetHandle(AutoItWinGetTitle())) $hIcon = _WinAPI_GetClassLongEx($hGUI, $GCL_HICON) _WinAPI_DestroyIcon($hIcon) _WinAPI_SetClassLongEx($hGUI, $GCL_HICON, 0) _WinAPI_SetClassLongEx($hGUI, $GCL_HICONSM, 0) If $bAero Then     $hGUI_child = GUICreate("", 715-39, 683 - 26, 22,  3, $WS_POPUP, $WS_EX_MDICHILD + $WS_EX_TOPMOST, $hGUI)     $hGUI_Font = $hGUI_child Else     $hGUI_Font = $hGUI     $hGUI_child = $hGUI EndIf GUISetBkColor(0xFFFFFF) GUISetFont(18, 100, Default, 'Segoe UI', $hGUI_Font, 5) GUICtrlCreateLabel('Quick find:', 10, 25) GUICtrlCreateInput('', 150, 20, 100, 35) $oIE = _IECreateEmbedded() $oIEobj = GUICtrlCreateObj($oIE, 10, 85, 650, 550) $oNav = _IENavigate($oIE, @ScriptDir & '/example.html', 0) $hGUI_child2 = GUICreate("", 112, 50, 280, 645, $WS_POPUP, $LAYERED_GUI + $WS_EX_MDICHILD + $WS_EX_TOPMOST, $hGUI_child) If Not $bAero Then     GUISetBkColor(0xE0F2F7)     $hGUI_Font = $hGUI_child2     GUISetFont(33, 100, Default, 'Segoe UI', $hGUI_Font, 5)     GUICtrlCreateLabel(" = ", 0, 0, 112, 50, $SS_CENTER + $SS_CENTERIMAGE) EndIf GUISetCursor(0, 1, $hGUI_child2) If $bAero Then     _GDIPlus_Startup()     $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\panel.png')     SetBitmap($hGUI, $hImage)     $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\roundbn.png')     SetBitmap($hGUI_child2, $hImage)     _GDIPlus_Shutdown() EndIf GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL") GUISetState(@SW_SHOW, $hGUI) If $bAero Then GUISetState(@SW_SHOW, $hGUI_child) GUISetState(@SW_SHOW, $hGUI_child2) While 1     $mPos = MouseGetPos()     If BitAnd($hidden, $mPos[1] = 0, $timer = 0) Then         $timer = TimerInit()         Sleep(10)     ElseIf $mPos[1] <> 0 Then         $timer = 0         $tdiff = 0     EndIf     If $timer <> 0 Then $tdiff = TimerDiff($timer)     If BitAND($hidden, Not $tucked, $mPos[1] <> 0, Not $tucking) Then         $tuck = True         $untucking = False         $tucking = True         AdlibRegister("TuckAway", 2500)     ElseIf BitAND($hidden, $tucked, $mPos[1] = 0, Not $untucking, $tdiff > 450) Then         $tuck = False         $tucking = False         $untucking = True         AdlibRegister("TuckAway")     ElseIf BitAND($hidden, Not $tucked, $mPos[1] = 0, $tucking) Then         AdlibUnRegister("TuckAway")         $tuck = False         $tucking = False     EndIf     $msg = GUIGetMsg(1)     Switch $msg[1]         Case $hGUI             Switch $msg[0]                 Case $GUI_EVENT_CLOSE, $GUI_EVENT_SECONDARYUP                     Exit             EndSwitch         Case $hGUI_child             Switch $msg[0]                 Case $GUI_EVENT_CLOSE, $GUI_EVENT_SECONDARYUP                     Exit             EndSwitch         Case $hGUI_child2             Switch $msg[0]                 Case $GUI_EVENT_PRIMARYDOWN                     If Not $hidden Then                         HidePanel()                     Else                         HidePanel(False)                     EndIf             EndSwitch     EndSwitch WEnd Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)     Switch $wParam         Case 0x00780000             $oIE.document.parentwindow.scrollBy(0, -150)         Case 0xFF880000             $oIE.document.parentwindow.scrollBy(0, 150)     EndSwitch     Return $GUI_RUNDEFMSG EndFunc Func HidePanel($hide = True)     AdlibUnRegister("TuckAway")     If $hide Then         $tucked = False         $untucked = True         $hidden = True         For $i = -1 to -663 Step - 1             WinMove($hGUI, "", Default, $i)         Next     Else         $tucked = False         $untucked = False         $hidden = False         For $i = -664 to -4 Step 1             WinMove($hGUI, "", Default, $i)         Next     EndIf EndFunc Func TuckAway()     If $tuck Then         $tucking = False         $untucked = False         $tucked = True         For $i = 663 to 695 Step 1             WinMove($hGUI, "", Default, -$i)             Sleep(10)         Next     Else         $untucking = False         $tucked = False         For $i = 695 to 663 Step - 1             WinMove($hGUI, "", Default, -$i)             Sleep(10)         Next     EndIf     AdlibUnRegister("TuckAway") EndFunc Func SetBitmap($hGUI, $hImage, $iOpacity = 255)     Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend     $hScrDC = _WinAPI_GetDC(0)     $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)     $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)     $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)     $tSize = DllStructCreate($tagSIZE)     $pSize = DllStructGetPtr($tSize)     DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))     DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))     $tSource = DllStructCreate($tagPOINT)     $pSource = DllStructGetPtr($tSource)     $tBlend = DllStructCreate($tagBLENDFUNCTION)     $pBlend = DllStructGetPtr($tBlend)     DllStructSetData($tBlend, "Alpha", $iOpacity)     DllStructSetData($tBlend, "Format", 1)     _WinAPI_UpdateLayeredWindow($hGUI, $hGUI, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)     _WinAPI_ReleaseDC(0, $hScrDC)     _WinAPI_SelectObject($hMemDC, $hOld)     _WinAPI_DeleteObject($hBitmap)     _WinAPI_DeleteDC($hMemDC) EndFunc

Attached Thumbnails

  • panel.png
  • roundbn.png

Attached Files


Viewing all articles
Browse latest Browse all 12506

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>