找回密码
 加入
搜索
查看: 27268|回复: 51

[原创] 创建虚拟桌面

 火... [复制链接]
发表于 2010-9-4 19:48:21 | 显示全部楼层 |阅读模式
代码来源:HOOK
弱弱修改,只作参考用.
注意:貌似WIN7没有area.很不爽.


#include <WinAPI.au3>
Global Const $DESKTOP_ENUMERATE = 0x40
Global Const $SPI_GETSCREENSAVERRUNNING = 114
Global Const $DESKTOP_SWITCHDESKTOP = 0x100
$OriginalThread = DLLCall("kernel32.dll","int","GetCurrentThreadId")
$OriginalInput = DllCall('user32.dll', 'hwnd', 'OpenInputDesktop', 'int', 0, 'int', 0, 'int', 0x100)
$NewDesktopName=DllStructCreate('wchar[255]')
DllStructSetData($NewDesktopName,1,'DeskName')
$NewDesktop = DLLCall("user32.dll","hwnd","CreateDesktopW","ptr",DllStructGetPtr($NewDesktopName,1), "str",'',"ptr",0,"dword",0x1,"int",$GENERIC_ALL,"ptr",0)
MsgBox(32,'',_WinAPI_GetLastErrorMessage())
MsgBox(32,"创建的句柄",$NewDesktop[0])
DllCall('user32.dll', 'int', 'SetThreadDesktop', 'hwnd', $NewDesktop[0])
DLLCall("user32.dll","int","SwitchDesktop","int",$NewDesktop[0])
$Startup = DllStructCreate($tagSTARTUPINFO)
$Process = DllStructCreate($tagPROCESS_INFORMATION)
;~ $NewDesktopName
DllStructSetData($Startup, "Size", DllStructGetSize($Startup))
DllStructSetData($Startup, "Desktop", DllStructGetPtr($NewDesktopName,1))


_WinAPI_CreateProcess("", "C:\Windows\explorer.exe", 0, 0, False, 0, 0, "", DllStructGetPtr($Startup), DllStructGetPtr($Process))
Sleep(5000)
_WinAPI_CloseHandle(DllStructGetData($Process, "hProcess"))
_WinAPI_CloseHandle(DllStructGetData($Process, "hThread" ))
DLLCall("user32.dll","int","SwitchDesktop","int",$OriginalInput[0])
DllCall('user32.dll', 'int', 'SetThreadDesktop', 'hwnd', $OriginalThread[0])
DLLCall("user32.dll","int","CloseDesktop","int",$NewDesktop[0])

评分

参与人数 2金钱 +50 贡献 +5 收起 理由
Duvet + 30 + 5
pusofalse + 20 学习~

查看全部评分

发表于 2010-9-4 19:49:20 | 显示全部楼层
杀帅哥个发
发表于 2010-9-4 19:51:33 | 显示全部楼层
本帖最后由 afan 于 2010-9-4 19:58 编辑

第一次 explorer.exe 报两次错… 之后没报错, 可能和我自己的 explorer.exe 进程有关~ --- Xpsp3

这还真是个好东西~
发表于 2010-9-4 23:09:56 | 显示全部楼层
学习了, 一直没搞定这个问题。
发表于 2010-9-5 00:36:15 | 显示全部楼层
看看                                ok
发表于 2011-2-5 19:48:34 | 显示全部楼层
还没想到用这个干嘛 做个记号先 0.0
发表于 2011-2-6 13:37:47 | 显示全部楼层
感谢大大的分享唷........
发表于 2011-2-7 00:09:54 | 显示全部楼层
学习了, 一直没搞定这个问题。
发表于 2011-2-7 11:52:08 | 显示全部楼层
学习了,留名备查
发表于 2011-2-12 13:59:10 | 显示全部楼层
好东西~~copy了
发表于 2011-5-20 19:12:30 | 显示全部楼层
好啊。好啊。好啊。好啊。好啊。好啊。好啊。好啊。好啊。
发表于 2011-5-20 19:20:25 | 显示全部楼层
看看,支持一下
发表于 2011-5-23 09:58:54 | 显示全部楼层
回复 1# thesnow


    请问大大,创建了虚拟桌面以后,如何切换回真实的桌面呢?如果可以切换回真实的桌面,是不是可以把一些无法后台操作的程序放在虚拟桌面里面运行,而不影响当前的操作?
发表于 2011-5-23 10:13:01 | 显示全部楼层
测试了一下 存贮空间不足,无法处理此命令。
发表于 2011-5-23 23:35:09 | 显示全部楼层
小手一抖,金币带走
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:51 , Processed in 0.088139 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表