Create Desktop

  • Hiho,

    es geht um die WinApiEx.au3:

    Mittels dem Beispiel

    Spoiler anzeigen
    [autoit]


    #Include <APIConstants.au3>
    #Include <WinAPIEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hDesktop, $hPrev, $pText, $tProcess, $tStartup

    [/autoit] [autoit][/autoit] [autoit]

    ; Retrieve a handle to the current desktop and create a new desktop named "MyDesktop"
    $hPrev = _WinAPI_GetThreadDesktop(_WinAPI_GetCurrentThreadID())
    $hDesktop = _WinAPI_CreateDesktop('MyDesktop', BitOR($DESKTOP_CREATEMENU, $DESKTOP_CREATEWINDOW, $DESKTOP_SWITCHDESKTOP))
    If Not $hDesktop Then
    MsgBox(16, 'Error', 'Unable to create desktop.')
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Switch to the newly created desktop
    _WinAPI_SwitchDesktop($hDesktop)

    [/autoit] [autoit][/autoit] [autoit]

    ; Run "calc.exe" on "MyDesktop" and wait until a process will not be closed by user
    $pText = _WinAPI_CreateString('MyDesktop')
    $tProcess = DllStructCreate($tagPROCESS_INFORMATION)
    $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

    [/autoit] [autoit][/autoit] [autoit]

    ; Switch to previous desktop and close "MyDesktop"
    _WinAPI_SwitchDesktop($hPrev)
    _WinAPI_CloseDesktop($hDesktop)

    [/autoit] [autoit][/autoit] [autoit]

    ; Free memory allocated for a string
    _WinAPI_FreeMemory($pText)

    [/autoit]

    Kann man bequem Desktops "erzeugen".
    Wie bekommt man jedoch die ganzen Icons und die Taskleiste hinzu?
    Hat dajemand schon mal daran gearbeitet? Oder eine andere Möglichkeit?