Что нового

Дополнительный рабочий стол

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Возможно ли создать дополнительный рабочий стол средствами AutoIt?
С пуском и всем остальным.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
У меня нет примера, но все, что для этого понадобится, это следующие функции:

_WinAPI_CreateDesktop()
_WinAPI_OpenDesktop()
_WinAPI_CloseDesktop()
_WinAPI_EnumDesktops()
_WinAPI_SwitchDesktop()

Как создать рабочий стол есть в примерах WinAPIEx.au3, но здесь могут возникнуть другие сложности...
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Yashied
Вот у вас в примерах нашёл скрипт:
Код:
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

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

; 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_CREATEWINDOW, $DESKTOP_SWITCHDESKTOP))
If Not $hDesktop Then
	MsgBox(16, 'Error', 'Unable to create desktop.')
	Exit
EndIf

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

; 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

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

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

А как сделать его в окне? Или хотя бы сворачиваемым?

P.S. Класная библиотека!
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Yashied,
Почему бы вам не сделать полноценную программку для смены/выбора рабочего стола ?
Было бы офигено :smile:
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Zaramot
Да, поддерживаю! :smile:

Yashied
При запуске этого скрипта можно через диспетчер задач запустить explorer.exe и вот и будет второй рабочий стол! ;D
Ну если бы как-нибудь можно было бы объединить открытые во втором рабочем столе процессы, то было бы круто! :smile:


Добавлено:
Сообщение автоматически объединено:

Хорошая штучка для ботоводов, для игры в два окна :thumbs_up:
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
_Lexa98_
Посмотрите здесь:
http://autoit-script.ru/index.php/topic,4829.0.html
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Как я понял тема больше не обсуждается. :(
Тема решена
 
Верх