MouseCursor deaktivieren wenn Programm X Focus hat

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

ljmarkus
Posts: 1
Joined: 13 Jul 2017, 06:48

MouseCursor deaktivieren wenn Programm X Focus hat

13 Jul 2017, 06:55

Hallo Zusammen...

ich suche ein Script was folgendes macht:

Wenn Programm XYZ den Focus hat, soll der MausCursor ausgeblendet werden (Stört bei dem Programm mit Touch bedienung). Sobald der Focus weg ist soll der MausCursor wieder sichtbar werden.

Ich hoffe hier könnt mir helfen.

Danke, Markus
Rohwedder
Posts: 7630
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: MouseCursor deaktivieren wenn Programm X Focus hat

15 Jul 2017, 03:44

Hallo,
habe einfach das "Versteckt den Mauszeiger"- Beispiel der Hilfe http://ahkde.github.io/docs/commands/DllCall.htm variiert:

Code: Select all

; Versteckt den Mauszeiger.
; Dieses Skript stammt von www.autohotkey.com/forum/topic6107.html
#Persistent
SetTitleMatchMode, 2 ;an beliebiger Stelle im Titel
Settimer, ProgrammFokus, 500
ZeigeCursor := True
Return
ProgrammFokus:
If (WinActive("XYZ") And ZeigeCursor)
	SystemCursor("Off"), ZeigeCursor := False
Else If (!WinActive("XYZ") And !ZeigeCursor)
	SystemCursor("On"), ZeigeCursor := True
Return
OnExit, ZeigeCursor  ; Stellt sicher, dass der Mauszeiger beim Beenden des Skripts wieder sichtbar gemacht wird.
return
ZeigeCursor:
SystemCursor("On")
ExitApp
SystemCursor(OnOff=1)   ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = Andere
{
    static AndMask, XorMask, $, h_cursor
        ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; Mauszeiger vom System
        , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; Leere Mauszeiger
        , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; Handles von Standardzeiger
    if (OnOff = "Init" or OnOff = "I" or $ = "")       ; initialisieren, wenn benötigt oder erster Aufruf
    {
        $ = h                                          ; aktive Standardzeiger
        VarSetCapacity( h_cursor,4444, 1 )
        VarSetCapacity( AndMask, 32*4, 0xFF )
        VarSetCapacity( XorMask, 32*4, 0 )
        system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
        StringSplit c, system_cursors, `,
        Loop %c0%
        {
            h_cursor   := DllCall( "LoadCursor", "Ptr",0, "Ptr",c%A_Index% )
            h%A_Index% := DllCall( "CopyImage", "Ptr",h_cursor, "UInt",2, "Int",0, "Int",0, "UInt",0 )
            b%A_Index% := DllCall( "CreateCursor", "Ptr",0, "Int",0, "Int",0
                , "Int",32, "Int",32, "Ptr",&AndMask, "Ptr",&XorMask )
        }
    }
    if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
        $ = b  ; leere Mauszeiger benutzen
    else
        $ = h  ; gespeicherte Mauszeiger benutzen

    Loop %c0%
    {
        h_cursor := DllCall( "CopyImage", "Ptr",%$%%A_Index%, "UInt",2, "Int",0, "Int",0, "UInt",0 )
        DllCall( "SetSystemCursor", "Ptr",h_cursor, "UInt",c%A_Index% )
    }
}

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 38 guests