habs geändert!
Beiträge von kuchi
-
-
Hallo erst mal vielen Dank für die prompte Antwort.
Leider geht das ganze nicht unter Windows 2008 R2 auf Citrix, mit RDP geht es.
Bräuchte es unter Windows 2008 R2 XENAPP.Keine Ahnung warum das Verhalten anders ist.
Das mit dem Button habe ich hinbekommen.
Geht aber auch nicht unter Citrix:
Spoiler anzeigen
#include <Array.au3>
#include <Misc.au3>
#include <WinAPI.au3>;If @OSVersion <> "WIN_7" Then Exit MsgBox(16, "Error", "Code is running only on Win7", 15)
Global $__Data, $i, $ID, $x1, $x2, $y1, $y2
Global Const $dll = DllOpen("user32.dll")
Global Const $hWnd = WinGetHandle("[CLASS:Shell_TrayWnd]")
Global $aPos = WinGetPos($hWnd)Global $aData = _WinAPI_EnumChildWindows($hWnd)
For $i = 1 To UBound($aData) - 1
If $aData[$i][1] = "TrayShowDesktopButtonWClass" Then
$aResult = DllCall($dll, "Int", "GetDlgCtrlID", "HWND", $aData[$i][0])
$ID = $aResult[0]
ExitLoop
EndIf
Next
$aCtrlPos = ControlGetPos($hWnd, "", $ID)$x1 = $aCtrlPos[0]
$y1 = $aPos[1]
$x2 = $aCtrlPos[0] + $aCtrlPos[2]
$y2 = $aPos[2]HotKeySet("{ESC}", "_Exit")
While Sleep(100)
If _IsPressed("01", $dll) Then
$aM = MouseGetPos()
If $aM[0] > $x1 And $aM[0] < $x2 And $aM[1] > $y1 And $aM[1] < $y2 Then
MsgBox(0, "Test", "Tray Show Desktop Button was clicked!")
;WinSetState("[CLASS:Sticky_Notes_Note_Window]", "", @SW_RESTORE)
;WinActivate("[CLASS:Sticky_Notes_Note_Window]", "")
EndIf
EndIf
WEndFunc _Exit()
DllClose($dll)
Exit
EndFuncFunc _WinAPI_EnumChildWindows($hWnd, $fVisible = 1)
If Not _WinAPI_GetWindow($hWnd, 5) Then SetError(1, 0, 0)
Local $hEnumProc = DllCallbackRegister('__EnumWindowsProc','int','hwnd;lparam')
Local $Error = 1Dim $__Data[101][2] = [[0]]
DllCall('user32.dll', 'int', 'EnumChildWindows', 'hwnd', $hWnd, 'ptr', DllCallbackGetPtr($hEnumProc), 'lparam', $fVisible)
If @error Then
$__Data = 0
Else
$Error = 0
If $__Data[0][0] Then
ReDim $__Data[$__Data[0][0] + 1][2]
Else
$__Data = 0
EndIf
EndIf
DllCallbackFree($hEnumProc)
Return SetError($Error, 0, $__Data)
EndFunc ;==>_WinAPI_EnumChildWindowsFunc __EnumWindowsProc($hWnd, $fVisible)
If ($fVisible) And (Not _WinAPI_IsWindowVisible($hWnd)) Then Return 1
$__Data[0][0] += 1
If $__Data[0][0] > UBound($__Data) - 1 Then
ReDim $__Data[$__Data[0][0] + 100][2]
EndIf
$__Data[$__Data[0][0]][0] = $hWnd
$__Data[$__Data[0][0]][1] = _WinAPI_GetClassName($hWnd)
Return 1
EndFunc ;==>__EnumWindowsProcLg und danke nochmals
-
Hallo Leute, nach mehrtägigem Kampf muss ich sagen dass ich als Neuling gescheitert bin.
Ich schaffe es einfach nicht.
Und zwar bräuchte ich folgendes:
Nur wenn der User die Windows+D oder das Show Desktop Icon drückt möchte ich dass ein Fenster mit der Klasse Sticky_Notes_Note_Window restored wird.
Ich check das mit den Is_Pressed Funktionen nicht wie man da Windows+D bzw. Show Desktop hineinbekommt
Folgendes habe ich versucht.
Kann mir wer helfen und das mit den Hotkeys erkären. Auch wie man den Button unten rechts im Windows7 Show Desktop abfragen kann.
Vielen lieben Dank
While 1
For $i = 1 To 100
If _IsPressed({Win+D}) Then
WinSetState("[CLASS:Sticky_Notes_Note_Window]", "", @SW_RESTORE)EndIf
Next
Sleep(100)
WEnd