Hallo an alle,
Ich habe mal wieder eine Nuss zu knacken: Ich möchte ein Fenster als Children in den Desktop eingliedern.
Geht auch. Problem: entweder das Fenster lässt Mausklicks durch zum Desktop oder es wirkt blass ( außer bei schwarzem Desktop )
als ob es hinter etwas anderem wäre oder selbst transparent
Spoiler anzeigen
; GUI 1 - Nicht blass, aber kann keine Mausklicks annehmen
$WS_POPUP = 0x80000000
$WS_EX_LAYERED = 0x00080000
$hGUI1 = GUICreate( "" , 200 , 200 , 500 , 500 , $WS_POPUP , $WS_EX_LAYERED )
GUISetBkColor( 0xff0000 )
DllCall("user32.dll", "int", "SetParent", "hwnd", $hGUI1 , "hwnd", _WinGetDesktopHandle() )
DllCall( "user32.dll" , "bool", "SetLayeredWindowAttributes", "hwnd", $hGUI1, "dword", 0x00FF00 , "byte", 250, "dword", 0x03 ) ; ( has to be executed AFTER! making it childwindow )
GUISetState()
; GUI 2 - Kann Mausklicks annehmen, ist aber blass
$hGUI1 = GUICreate( "" , 200 , 200 , 800 , 500 , $WS_POPUP )
GUISetBkColor( 0xff0000 )
DllCall("user32.dll", "int", "SetParent", "hwnd", $hGUI1 , "hwnd", _WinGetDesktopHandle() )
GUISetState()
HotKeySet("{ESC}", "_Exit")
Func _Exit()
Exit
EndFunc
While 1
Sleep( 1000 )
WEnd
Func _WinGetDesktopHandle()
[/autoit] [autoit][/autoit] [autoit]$aWinList=WinList("[CLASS:WorkerW]")
For $i=1 To $aWinList[0][0]
$hSHELLDLL_DefView=ControlGetHandle($aWinList[$i][1],'','[CLASS:SHELLDLL_DefView; INSTANCE:1]')
If $hSHELLDLL_DefView<>'' Then
$hDeskWin=$aWinList[$i][1]
ExitLoop
EndIf
Next
; Parent->Child relationship: Desktop->SHELDLL_DefView->SysListView32
$hListView=ControlGetHandle($hSHELLDLL_DefView,'','[CLASS:SysListView32; INSTANCE:1]')
Return SetExtended($hListView,$hDeskWin)
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]
Wie bekomme ich es hin, dass das Fenster Klicks annimmt aber nicht blass ist? ( bitte erstmal keine Workarounds, das mit dem Childwindow hat Gründe )
Tausend Dank schon mal
Gruß
Blues