Obtient le handle du bureau affecté au thread spécifié
#include <WinAPIProc.au3>
_WinAPI_GetThreadDesktop ( $iThreadID )
$iThreadID | L'identifiant du thread. Les fonctions _WinAPI_CreateProcess() et _WinAPI_GetCurrentThreadId() retournent les identifiants des threads. |
Succès: | Retourne le handle du bureau associé au thread spécifié. |
Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations supplémentaires sur l'erreur. |
Vous n'avez pas besoin d'appeler la fonction _WinAPI_CloseDesktop() pour fermer le handle retourné.
_WinAPI_CreateProcess, _WinAPI_GetCurrentThreadID
Consultez GetThreadDesktop dans la librairie MSDN.
#include <APIProcConstants.au3> #include <APISysConstants.au3> #include <MsgBoxConstants.au3> #include <WinAPIMem.au3> #include <WinAPIProc.au3> #include <WinAPISys.au3> ; Récupére le handle du bureau actuel et crée un nouveau bureau nommé "MyDesktop" Local $hPrev = _WinAPI_GetThreadDesktop(_WinAPI_GetCurrentThreadId()) Local $hDesktop = _WinAPI_CreateDesktop('MyDesktop', BitOR($DESKTOP_CREATEWINDOW, $DESKTOP_SWITCHDESKTOP)) If Not $hDesktop Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Error', 'Unable to create desktop.') Exit EndIf ; Bascule sur le bureau nouvellement créé _WinAPI_SwitchDesktop($hDesktop) ; Exécute "calc.exe" sur "MyDesktop" et attend jusqu'à ce qu'un processus soit fermé par l'utilisateur Local $pText = _WinAPI_CreateString('MyDesktop') Local $tProcess = DllStructCreate($tagPROCESS_INFORMATION) Local $tStartup = DllStructCreate($tagSTARTUPINFO) DllStructSetData($tStartup, 'Size', DllStructGetSize($tStartup)) DllStructSetData($tStartup, 'Desktop', $pText) If _WinAPI_CreateProcess('', @SystemDir & '\calc.exe', 0, 0, 0, $CREATE_NEW_PROCESS_GROUP, 0, 0, DllStructGetPtr($tStartup), DllStructGetPtr($tProcess)) Then ProcessWaitClose(DllStructGetData($tProcess, 'ProcessID')) EndIf ; Bascule sur le bureau précédent et ferme "MyDesktop" _WinAPI_SwitchDesktop($hPrev) _WinAPI_CloseDesktop($hDesktop) ; Libère la mémoire allouée pour une chaîne _WinAPI_FreeMemory($pText)