Habe mir da zu wenig Zeit genommen und Verwirrung gestiftet mit der Übergabe von UINT anstelle vom Pointer.
Es funktioniert, aber es ist nicht richtig so. Außerdem wird ein 'True' bei einem Pointer leider auf 0 und nicht auf 1 gecastet, deshalb habe ich den Integer-Typen verwendet.
Hier nochmal ein Code zum Testen:
Code
Global Const $SPI_SETMOUSESONAR = 0x101D
Global $iEnableSonar = 1;
Global $aRet
$aRet = DllCall("user32.dll", "BOOL", "SystemParametersInfoA", "UINT", $SPI_SETMOUSESONAR, "UINT", 0, "PTR", True, "UINT", 0)
ConsoleWrite($aRet[3] & @CRLF) ; <-- 0
$aRet = DllCall("user32.dll", "BOOL", "SystemParametersInfoA", "UINT", $SPI_SETMOUSESONAR, "UINT", 0, "UINT", True, "UINT", 0)
ConsoleWrite($aRet[3] & @CRLF) ; <-- 1
$aRet = DllCall("user32.dll", "BOOL", "SystemParametersInfoA", "UINT", $SPI_SETMOUSESONAR, "UINT", 0, "PTR", $iEnableSonar, "UINT", 0)
ConsoleWrite($aRet[3] & @CRLF) ; <-- 1
Sleep(5000)
$iEnableSonar = 0;
$aRet = DllCall("user32.dll", "BOOL", "SystemParametersInfoA", "UINT", $SPI_SETMOUSESONAR, "UINT", 0, "PTR", $iEnableSonar, "UINT", 0)
Alles anzeigen