Windows中的桌面编程 常用API介绍——CreateDesktop
来源:互联网 发布:动态加载js文件并执行 编辑:程序博客网 时间:2024/06/13 01:44
CreateDesktop
The CreateDesktop function creates a new desktop, associates it with the current window station of the calling process, and assigns it to the calling thread. The calling process must have an associated window station, either assigned by the system at process creation time or set by the SetProcessWindowStation function.
To specify the size of the heap for the desktop, use the CreateDesktopEx function.
CreateDesktop 函数创建一个新的Desktop对象,关联到当前调用进程所在的窗口站中,并且分配给当前调用线程。调用进程必须有一个关联的窗口站对象,一般是由系统在进程创建时分配的或是通过调用SetProcessWindowStation 设置的。如果想指定窗口堆的大小,可以调用CreateDesktopEx 函数。
HDESK CreateDesktop( LPCTSTR lpszDesktop, LPCTSTR lpszDevice, LPDEVMODE pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa);
Parameters(参数说明)
- lpszDesktop
- [in] Pointer to a null-terminated string specifying the name of the desktop to be created. Desktop names are case-insensitive and may not contain backslash characters (/).
- 创建的窗口对象的名称。窗口对象名称是不区分大小写的,但不可以含有反斜杠(/)。
- lpszDevice
- Reserved; must be NULL.
- 预留,必须为NULL
- pDevmode
- Reserved; must be NULL.
- 预留,必须为NULL
- dwFlags
- [in] This parameter can be zero or the following value.
- 可以为0,或使用下面的值。
-
Value Meaning DF_ALLOWOTHERACCOUNTHOOK
0x0001Enables processes running in other accounts on the desktop to set hooks in this process.运行于其它账户的进行在当前Desktop对象中设置Hook。 - dwDesiredAccess
- [in] Access to the desktop. For a list of values, see Desktop Security and Access Rights.
This parameter must include the DESKTOP_CREATEWINDOW access right, because internally CreateDesktop uses the handle to create a window.
访问权限标志,值列表请参考:安全与访问权限。
这个参数必须包含:DESKTOP_CREATEWINDOW 权限,因为在CreateDesktop 内部会自动创建一个窗口。
- lpsa
- [in] Pointer to a SECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. If lpsa is NULL, the handle cannot be inherited.
The lpSecurityDescriptor member of the structure specifies a security descriptor for the new desktop. If this parameter is NULL, the desktop inherits its security descriptor from the parent window station.
SECURITY_ATTRIBUTES 结构指针,决定是否可以被子进程继承的句柄。如果为NULL,则句柄不可被继承。
这个结果的 lpSecurityDescriptor 成员属性 指定新的安全描述符给新的Desktop。如果为NULL,新建的Desktop将继承所属窗口站的安全描述符。
Return Values(返回值)
If the function succeeds, the return value is a handle to the newly created desktop. If the specified desktop already exists, the function succeeds and returns a handle to the existing desktop. When you are finished using the handle, call the CloseDesktop function to close it.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
函数调用成功,返回最新的被创建的Desktop对象的句柄,如果指定的Desktop已经存在,并且函数调用成功就返回存在的Desktop的句柄。
Remarks(备注)
If the dwDesiredAccess parameter specifies the READ_CONTROL, WRITE_DAC, or WRITE_OWNER standard access rights, you must also request the DESKTOP_READOBJECTS and DESKTOP_WRITEOBJECTS access rights.
The number of desktops that can be created is limited by the size of the system desktop heap, which is 48 MB. Desktop objects use the heap to store resources. You can increase the number of desktops that can be created by reducing the default heap reserved for each desktop in the interactive window station. This value is specified in the SharedSection substring of the following registry value: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/SubSystems/Windows. The default data for this registry value is as follows:
%SystemRoot%/system32/csrss.exe ObjectDirectory=/WindowsSharedSection=1024,3072,512 Windows=On SubSystemType=WindowsServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=OffMaxRequestThreads=16
- The first SharedSection value is the size of the shared heap common to all desktops, in kilobytes.
- The second SharedSection value is the size of the desktop heap needed for each desktop that is created in the interactive window station, WinSta0, in kilobytes.
- The third SharedSection value is the size of the desktop heap needed for each desktop that is created in a noninteractive window station, in kilobytes.
Requirements
Declared in Winuser.h; include Windows.h.
Link to User32.lib.
Implemented as CreateDesktopW (Unicode) and CreateDesktopA (ANSI).
See Also
Desktops, Window Station and Desktop Functions, CloseDesktop, CreateDesktopEx, SECURITY_ATTRIBUTES, SetProcessWindowStation, SwitchDesktop
- Windows中的桌面编程 常用API介绍——CreateDesktop
- CreateDesktop 创建虚拟桌面
- WINDOWS编程常用API函数
- 某病毒使用的API CreateDesktop
- Windows API 串口编程函数介绍
- Windows 文件、目录操作编程 常用API
- Windows 编程常用API函数 技巧笔记
- Windows 文件、目录操作编程常用API
- Windows 文件、目录操作编程常用API
- Windows 文件、目录操作编程 常用API
- C# Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法
- VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法
- Windows平台下常用的串行通信串口编程API
- Spark 常用api介绍
- appium 常用api介绍
- Windows API 介绍
- Windows中的桌面管理 Desktops
- 常用Windows API
- 自己动手实现纯Web远程监控系统
- Basic Concept and Theorem of Statistical Learning(二)
- c# excel文件导入到sqlserver中
- Object C 利用NSLog 打印日志,帮助调试程序
- 工作流(WF)编程入门
- Windows中的桌面编程 常用API介绍——CreateDesktop
- Flex与.NET互操作(一):基于Socket的网络连接
- 归并排序--基础的算法
- linux加载Windows机器上的共享文件夹
- C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- Flex与.NET互操作(二) 基于WebService的数据访问(上)
- 闪烁功能
- VoiceXML2.0规范
- Flex与.NET互操作(三) 基于WebService的数据访问(下)