Sign in to follow this  
Followers 0
mihaibr

Custom Desktop

4 posts in this topic

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



#2 ·  Posted (edited)

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

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  
Followers 0