nuevito4 0 Posted February 28, 2011 Hi. is possible to place a cursor below gui#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> GUICreate("test", 220, 120, -1, -1) WinSetOnTop("test", "", 1) GUISetState(@SW_SHOW) Sleep(2000) Share this post Link to post Share on other sites
Rogue5099 18 Posted February 28, 2011 (edited) No cursor always has top most attribute.I didn't find anything in autoit but I did find nomousy from autohotkey so I am sure it can be done. I figured out that while watching a video in windows media player the mouse disapears so it is possible, don't know how in autoit though.; Method 1: Hides the cursor in client area ; Uncomment following line for example ; GUISetCursor(16, 1) ; Method 2: Hides cursor for entire window (even the titlebar) ; Uncomment following line for example ; DllCall('user32.dll', 'int', 'ShowCursor', 'int', 0) Edited February 28, 2011 by rogue5099 My projects: Inventory / Mp3 Inventory, Computer Stats Share this post Link to post Share on other sites
UEZ 1,273 Posted February 28, 2011 (edited) You mean something like this: expandcollapse popup;fast hack by UEZ 2011 #include <GDIPlus.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() $hBMP = _CreateBitmapFromIcon(0xABCDEF) $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP) $hGUI = GUICreate("", 12, 20, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetState() _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF) $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui) _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) HotKeySet("{ESC}", "_Exit") $hWnd = GUICreate("Test", 320, 200, -1, -1, Default, $WS_EX_TOPMOST) GUISetState() GUIRegisterMsg($WM_PAINT, "WM_PAINT") DllCall('user32.dll', 'int', 'ShowCursor', 'int', 0) While GUIGetMsg() <> -3 $mpos = MouseGetPos() WinMove($hGui, "", $mpos[0], $mpos[1]) Sleep(10) WEnd Func _Exit() _GDIPlus_BitmapDispose($hBitmap) _WinAPI_DeleteObject($hBMP) _GDIPlus_Shutdown() GUIDelete($hWnd) GUIDelete($hGUI) DllCall('user32.dll', 'int', 'ShowCursor', 'int', 1) Exit EndFunc Func WM_PAINT($hWnd, $uMsgm, $wParam, $lParam) _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) Return "GUI_RUNDEFMSG" EndFunc ;==>WM_PAINT Func _CreateBitmapFromIcon($iBackground = 0x00000, $iIndex = 0, $iWidth = 12, $iHeight = 20) Local $hDC, $hBackDC, $hBackSv, $hIcon, $hBitmap $hDC = _WinAPI_GetDC(0) $hBackDC = _WinAPI_CreateCompatibleDC($hDC) $hBitmap = _WinAPI_CreateSolidBitmap(0, $iBackground, $iWidth, $iHeight) $hBackSv = _WinAPI_SelectObject($hBackDC, $hBitmap) $hIcon = _WinAPI_CopyIcon(_WinAPI_LoadCursor(0, 32512)) If Not @error Then _WinAPI_DrawIconEx($hBackDC, 0, 0, $hIcon, 0, 0, 0, 0, 3) _WinAPI_DestroyIcon($hIcon) EndIf _WinAPI_SelectObject($hBackDC, $hBackSv) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_DeleteDC($hBackDC) Return $hBitmap EndFunc ;==>_CreateBitmapFromIcon Func _WinAPI_LoadCursor($hInstance, $sName) Local $TypeOfName = 'int' If IsString($sName) Then $TypeOfName = 'wstr' EndIf Local $Ret = DllCall('user32.dll', 'ptr', 'LoadCursorW', 'ptr', $hInstance, $TypeOfName, $sName) If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0) EndIf Return $Ret[0] EndFunc ;==>_WinAPI_LoadCursor Br, UEZ Edited March 1, 2011 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Share this post Link to post Share on other sites
wolf9228 65 Posted March 1, 2011 (edited) Hi. is possible to place a cursor below gui #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> GUICreate("test", 220, 120, -1, -1) WinSetOnTop("test", "", 1) GUISetState(@SW_SHOW) Sleep(2000) #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Include <WinAPI.au3> HotKeySet("{ESC}", "Terminate") $Gui = GUICreate("My GUI") GUISetState(@SW_SHOW) _WinAPI_SetCapture($Gui) _WinAPI_SetCursor(0) GUIRegisterMsg($WM_SETCURSOR, "ON_SETCURSOR") While 1 $msg = GUIGetMsg() WEnd Func ON_SETCURSOR($hWnd, $Msg, $wParam, $lParam) _WinAPI_SetCursor(0) Return $GUI_RUNDEFMSG EndFunc Func Terminate() Exit 0 EndFunc Edited March 1, 2011 by wolf9228 صرح السماء كان هنا Share this post Link to post Share on other sites
nuevito4 0 Posted March 1, 2011 thanks for responding. The idea is to put an animation with AutoIt and replace the cursor. utilis part of the script of "flyufo" expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GDIPlus.au3> HotKeySet("{Esc}", "Quit") Global $Gif = @ScriptDir & "\homero.gif" Global $i = 0, $ApX, $ApY, $ApW, $ApH, $eX, $eY Global $hImage, $hBitmap, $hScrDC, $hMemDC, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend Global $GFC, $GFDC, $pDimensionIDs, $tDL Global $Pause $hGUI = GUICreate("FlyUfo", 0, 0, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)) GUISetState() GifInit() AdlibRegister("mousep", 10) Func mousep() $mpos = MouseGetPos() WinMove("FlyUfo", "", $mpos[0] - 60, $mpos[1] - 50) EndFunc ;==>mousep While 1 If $i = $GFC Then $i = 0 GifDrawFrame($i) Sleep(100) $i += 1 WEnd Func Quit() _GDIPlus_ImageDispose($hImage) _WinAPI_ReleaseDC(0, $hScrDC) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) _GDIPlus_Shutdown() HotKeySet("{Esc}") Exit EndFunc ;==>Quit Func GifInit() _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($Gif) $ApW = _GDIPlus_ImageGetWidth($hImage) $ApH = _GDIPlus_ImageGetHeight($hImage) $hScrDC = _WinAPI_GetDC($hGUI) $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC) $tSize = DllStructCreate($tagSIZE) DllStructSetData($tSize, "X", $ApW) DllStructSetData($tSize, "Y", $ApH) $pSize = DllStructGetPtr($tSize) $tSource = DllStructCreate($tagPOINT) $pSource = DllStructGetPtr($tSource) $tBlend = DllStructCreate($tagBLENDFUNCTION) DllStructSetData($tBlend, "Alpha", 255) DllStructSetData($tBlend, "Format", 1) $pBlend = DllStructGetPtr($tBlend) $tDL = DllStructCreate($tagGUID) $pDimensionIDs = DllStructGetPtr($tDL) $GFDC = DllCall($ghGDIPDll, "int", "GdipImageGetFrameDimensionsCount", "ptr", $hImage, "int*", 0) DllCall($ghGDIPDll, "int", "GdipImageGetFrameDimensionsList", "ptr", $hImage, "ptr", $pDimensionIDs, "int", $GFDC[2]) $GFC = DllCall($ghGDIPDll, "int", "GdipImageGetFrameCount", "int", $hImage, "ptr", $pDimensionIDs, "int*", 0) $GFC = $GFC[3] EndFunc ;==>GifInit Func GifDrawFrame($i) DllCall($ghGDIPDll, "int", "GdipImageSelectActiveFrame", "ptr", $hImage, "ptr", $pDimensionIDs, "int", $i) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap) _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA) EndFunc ;==>GifDrawFrame Share this post Link to post Share on other sites
UEZ 1,273 Posted March 1, 2011 Have a look to _WinAPI_SetSystemCursor() function from WinAPIEx.au3! You have to convert the animated GIF to an ani format. I tested it with an existing .ani file and it is working properly. Br, 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Share this post Link to post Share on other sites