Jump to content
Sign in to follow this  
mihaibr

Custom Desktop

Recommended Posts

mihaibr

Hi,

Is there any way to stick a GUI to the desktop?

I want to make a "Custom Desktop" application that will run over the current "Windows Desktop".

Any idea?

Share this post


Link to post
Share on other sites
PlayHD

take a look here

And this is a example

#include 

$hDeskWin=_WinGetDesktopHandle()

$gui = GUICreate("PHD Example")
_WinAPI_SetParent($gui,$hDeskWin)
GUISetState()

Do
Until GUIGetMsg() = -3

; ===============================================================================================================================
; <_WinGetDesktopHandle.au3>
;
; Function to get the Windows' Desktop Handle.
; Since this is no longer a simple '[CLASS:Progman]' on Aero-enabled desktops, this method uses a slightly
; more involved method to find the correct Desktop Handle.
;
; Author: Ascend4nt, credits to Valik for pointing out the Parent->Child relationship: Desktop->'SHELLDLL_DefView'
; ===============================================================================================================================

Func _WinGetDesktopHandle()
Local $i,$hDeskWin,$hSHELLDLL_DefView,$hListView
; The traditional Windows Classname for the Desktop, not always so on newer O/S's
$hDeskWin=WinGetHandle("[CLASS:Progman]")
; Parent->Child relationship: Desktop->SHELLDLL_DefView
$hSHELLDLL_DefView=ControlGetHandle($hDeskWin,'','[CLASS:SHELLDLL_DefView; INSTANCE:1]')
; No luck with finding the Desktop and/or child?
If $hDeskWin='' Or $hSHELLDLL_DefView='' Then
; Look through a list of WorkerW windows - one will be the Desktop on Windows 7+ O/S's
$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
EndIf
; Parent->Child relationship: Desktop->SHELDLL_DefView->SysListView32
$hListView=ControlGetHandle($hSHELLDLL_DefView,'','[CLASS:SysListView32; INSTANCE:1]')
If $hListView='' Then Return SetError(-1,0,'')
Return SetExtended($hListView,$hDeskWin)
EndFunc
Edited by PlayHD

Share this post


Link to post
Share on other sites
mihaibr

wow, thank you very much PlayHD

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×