Se hvilket ikom musen har
Hej EksperterNu har jeg i længere tid ledt lidt efter et stykke kode som kan tjekke om et specielt ikon bliver brugt til musen lige nu.
Jeg har kun brug for at tjekke ikonet på Windows, men det er ikke en Windows standard ikon.
Jeg har brugt GetCursorInfo ( http://msdn.microsoft.com/en-us/library/ms648389(VS.85).aspx ) for at få fat på et handle til musen.
Handles har det med at ændre sig, og derfor kan jeg ikke bruge denne værdi til at se om det er mit specifikke ikon der bruges, da værdien bliver ændret når programmet genstartes. Efter at have fået fat i handlet bruger jeg GetIconInfo ( http://msdn.microsoft.com/en-us/library/ms648070(VS.85).aspx ), som får dette handle med til at få nogle flere information er om ikonet.
Her får jeg hBMMask, men dette ændrer sig også hele tiden, selvom ikonet er det samme. hBMColor er i programmet altid 0.
Jeg har ikke et program i C/C++ da jeg bruger AutoHotKey til at lave alt dette. Koden for AutoHotKey er følgende:
Loop
{
Sleep 1000
VarSetCapacity(mi, 20, 0)
mi := Chr(20)
DllCall("GetCursorInfo", "Uint", &mi)
bShow := NumGet(mi, 4)
hCursor := NumGet(mi, 8)
xCursor := NumGet(mi,12)
yCursor := NumGet(mi,16)
VarSetCapacity(ni, 20, 0)
DllCall("GetIconInfo", "Uint", hCursor, "Uint", ∋)
fIcon := NumGet(ni, 0)
xHotspot := NumGet(ni, 4)
yHotspot := NumGet(ni, 8)
hBMMask := NumGet(ni,12)
hBMColor := NumGet(ni,16)
TrayTip, test, bShow = %bShow%`nhCursor = %hCursor%`nxCursor = %xCursor%`nyCursor = %yCursor%`nfIcon = %fIcon%`nxHotspot = %xHotspot%`nyHotspot = %yHotspot%`nhBMMask = %hBMMask%`nhBMColor = %hBMColor%, 10
}
Jeg tænker om man kan bruge handlet til BMMask (det jeg har kaldt hBMMask) til at få noget at vide om det billede der bruges til musens ikon?
Jeg regner med dette er svært, da ikke mange har brug for at tjekke hvilket ikon der bliver brugt på musen. Jeg håber dog en af Jer eksperter har prøvet dette eller måske har mere erfaring med MSDN.
Hvis muligt vil jeg helst have kode i AutoHotKey syntax, men C++ syntax kan jeg også bruge.
Jeg håber på støtte :)