Terenz Posted April 11, 2014 Share Posted April 11, 2014 Control Panel - Mouse - Pointer Options - Show location of the pointer when i press the CTRL Key I don't want to enable that function with CTRL, i want simulate it with autoit withot using the "autoit internal function" but the real windows "circle effect" I think is a DLLCall or similar like the window effect-fade but i don't have found any information about that on the web, someone has any idea? EDIT: I think is releated to SystemParametersInfo It's called SPI_SETMOUSESONAR ( Sonar? Really? ) but it only enable-disable, instead i want to "send" that function without click the CTRL Thanks Nothing is so strong as gentleness. Nothing is so gentle as real strength Link to comment Share on other sites More sharing options...
UEZ Posted April 11, 2014 Share Posted April 11, 2014 (edited) Here a workaround:expandcollapse popup;coded by UEZ build 2014-04-11 #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() Global Const $iW = 128, $iH = 128, $fCenter = $iW / 2, $iPenSize = 2, $iBGColor = 0xABCDEF Global Const $hGUI = GUICreate("", $iW, $iH, -1, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED, $WS_EX_APPWINDOW)) GUISetBkColor($iBGColor, $hGUI) GUISetState(@SW_HIDE, $hGUI) _WinAPI_SetLayeredWindowAttributes($hGUI, $iBGColor) Global $tGDIp = DllStructCreate("ptr Graphics;ptr Bitmap;ptr Context;ptr Pen") $tGDIp.Graphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tGDIp.Bitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $tGDIp.Graphics) $tGDIp.Context = _GDIPlus_ImageGetGraphicsContext($tGDIp.Bitmap) _GDIPlus_GraphicsSetSmoothingMode($tGDIp.Context, 2) $tGDIp.Pen = _GDIPlus_PenCreate(0xFF000000, $iPenSize) Global Const $hDll = DllOpen("ntdll.dll"), $iMicroSeconds = 1500 Global $tStruct = DllStructCreate("int64 time;") HotKeySet("{F9}", "ShowLocation") HotKeySet("+{Esc}", "_Exit") ;shift + ESC terminates the script GUISetState(@SW_SHOW, $hGUI) Do Until Not Sleep(1000000) Func _Exit() _GDIPlus_GraphicsDispose($tGDIp.Context) _GDIPlus_GraphicsDispose($tGDIp.Graphics) _GDIPlus_BitmapDispose($tGDIp.Bitmap) _GDIPlus_PenDispose($tGDIp.Pen) GUIDelete() _GDIPlus_Shutdown() DllClose($hDll) Exit EndFunc ;==>_Exit Func ShowLocation() Local $i Local Static $bRunning = False If Not $bRunning Then $bRunning = True WinMove($hGUI, "", MouseGetPos(0) - $fCenter, MouseGetPos(1) - $fCenter) For $i = 0 To ($iW - $iPenSize) / 2 _GDIPlus_GraphicsClear($tGDIp.Context, 0xE0000000 + $iBGColor) _GDIPlus_GraphicsDrawEllipse($tGDIp.Context, $i, $i, ($iW - $iPenSize) - 2 * $i, ($iW - $iPenSize) - 2 * $i, $tGDIp.Pen) _GDIPlus_GraphicsDrawImageRect($tGDIp.Graphics, $tGDIp.Bitmap, 0, 0, $iW, $iH) $tStruct.time = -1 * ($iMicroSeconds * 10) DllCall($hDll, "dword", "ZwDelayExecution", "int", 0, "struct*", $tStruct) Next _GDIPlus_GraphicsClear($tGDIp.Graphics, 0xFF000000 + $iBGColor) $bRunning = False EndIf EndFunc ;==>ShowLocationPress F9 to show cursor position, Shift+Esc to terminate script. Br,UEZ Edited April 11, 2014 by UEZ jguinch and argumentum 2 Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Terenz Posted April 12, 2014 Author Share Posted April 12, 2014 Thanks UEZ for the workaround but i can't try it, give me an error: Variable must be of type "Object" $tGDIp.Graphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tGDIp^ ERROR Nothing is so strong as gentleness. Nothing is so gentle as real strength Link to comment Share on other sites More sharing options...
MotionFlex Posted April 12, 2014 Share Posted April 12, 2014 (edited) Thanks UEZ for the workaround but i can't try it, give me an error: Variable must be of type "Object" $tGDIp.Graphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tGDIp^ ERROR Never seen a "." being used in the declaration of a variable name in autoit. Remove all of them and it should work. Edited April 12, 2014 by MotionFlex Link to comment Share on other sites More sharing options...
UEZ Posted April 12, 2014 Share Posted April 12, 2014 (edited) This is a try of a new style of coding. Use latest AutoIt version to get it run properly! Br, UEZ Edited April 12, 2014 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Developers Jos Posted April 12, 2014 Developers Share Posted April 12, 2014 Never seen a "." being used in the declaration of a variable name in autoit. Remove all of them and it should work. The script posted by UEZ works fine for me, so you not having seen it doesn't mean it is wrong. run this example: Global $Demo = DllStructCreate("char var1[50];int var2") $Demo.var1 = "abc" $Demo.var2 = 123 ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Demo.var1 = ' & $Demo.var1 & @CRLF) ;### Debug Console ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : DllStructGetData($Demo,"var1") = ' & DllStructGetData($Demo,"var1") & @CRLF) ;### Debug Console ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Demo.var2 = ' & $Demo.var2 & @CRLF) ;### Debug Console ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : DllStructGetData($Demo,"var2") = ' & DllStructGetData($Demo,"var2") & @CRLF) ;### Debug Console @Terenz: What version of AutoIt3 are you running with? SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
MotionFlex Posted April 12, 2014 Share Posted April 12, 2014 (edited) Yep. I probably should of tested it before. Sorry about that. Edited April 12, 2014 by MotionFlex 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