1.vb 打开后还显示桌面,只有几个窗口在,背景还是桌面咋办

2.在VB中如何读取到桌面的路径?

3.用VB 怎么读取桌面的快捷方式

4.VB获取桌面背景

5.VB制作桌面主题程序

6.用VB怎么编写双桌面切换

7.vb.net 模拟 Win + D 显示桌面

vbs显示桌面,vb电脑系统桌面

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\

在该注册表项下建立名为 System 的项(如在Policies分支下已有System项,则无须此步骤)

在 System 项下建立名为 Wallpaper 和 WallpaperStyle 的两个“字串符值”

对于字串符值定义的解释:

Wallpaper 有两个可以定义的值:

空 或 某具体路径位置及文件名(路径可以允许设为本地路径或 UNC 路径)

如果 Wallpaper 字串符值为空,则桌面背景固定为添加该字串符值前所设的,且在“显示属性”中的“桌面”选项卡中的“背景”框中呈不可操作状。并且在“资源管理器”中浏览时,右键.jpg、.bmp文件中的上下文菜单的“设为桌面背景”操作将无效。但是该法有一缺点,使用第三方工具如ACDSee依旧可以更改桌面背景。

(注:此项比“组策略”法中的"阻止更改桌面"策略略强,能使得上下文菜单中的“设为桌面背景”无效)

如果 Wallpaper 字串符值设置为某或Html文件的路径及文件名(如F:\abc.jpg或F:\abc.html),那么桌面背景将强制更改为该值中所指定的文件或Html文件(例如F:\abc.jpg或F:\abc.html) 因此在VB中只需要操作注册表,把这个Wallpaper的值改成你需要指向的html文件即可

vb 打开后还显示桌面,只有几个窗口在,背景还是桌面咋办

'事先在工程菜单中引用Windows Script Host Object Model

'读取快捷方式属性

Private Sub Command1_Click()

Dim WSH As New IWshRuntimeLibrary.WshShell

Dim Urllink As WshShortcut

Dim DeskPath As String

Dim lnkName As String

DeskPath = WSH.SpecialFolders("Desktop") '获得桌面路径

'得到快捷方式 这个...看情况吧也许有的人有用.

lnkName = Dir(DeskPath & "\*.lnk")

Debug.Print lnkName

While Len(lnkName)

Debug.Print lnkName

lnkName = Dir

Wend

'现在开始建立....

'可以用wsh_shell.expandenvironmentstrings("%windir%")获得windows路径

Set Urllink = WSH.CreateShortcut(DeskPath & "\Test.lnk")

With Urllink

.TargetPath = "d:\test.txt" '目标

.IconLocation = WSH.ExpandEnvironmentStrings _

("%SystemRoot%\system32\SHELL32.dll,70") '图标,可以是自己的ico

.Hotkey = "ctrl+shift+F" '快捷键

.WorkingDirectory = "d:\" '起始位置

.WindowStyle = 1 '运行方式

.Description = "微软公司ayruifeng制作" '备注

End With

Urllink.Save '保存快捷方式

End Sub

在VB中如何读取到桌面的路径?

你是否确定你的VB安装文件没有问题,以及你的系统类型

如果以上都没有问题,请检查是否有病毒

还有就是你所说的问题不是太清楚,是不是说第二次打开时,就和没有打开一样?

如果是这样请看以下TASKMGR中有没有多于一个VB6.EXE,如果有,说明你的VB6 在DR32后失去焦点或者被屏蔽

考虑病毒情况

工具栏上的"工具">>"选项">>"高级" 祛除选项"SDI开发环境"的选择 就可以了

重新打开VB就不会在出现背景是桌面的问题了!

用VB 怎么读取桌面的快捷方式

VB6.0可用DriveListBox 控件和DirListBox 控件组合使用来获取桌面的路径。

DriveListBox 控件,在运行时,由于有DriveListBox控件,所以可选择一个有效的磁盘驱动器。该控件用来显示用户系统中所有有效磁盘驱动器的列表。可以创建对话框,通过它从任一可用驱动器的磁盘文件列表中打开文件。

DirListBox 控件,在运行时,DirListBox控件显示目录和路径。这个控件可以显示分层的目录列表。例如,可以创建对话框,在所有可用目录中,从文件列表打开一个文件。

代码实例:

Private Sub Dir1_Change()

File1.Path = Dir1.Path

Text1 = Dir1.Path

End Sub

Private Sub Drive1_Change()

On Error GoTo usErr

Dir1.Path = Drive1.Drive

File1.Path = Dir1.Path

usErr:

End Sub

操作方法:

运行程序,在DriveListBox 控件中选系统分区磁盘(C:),在DirListBox 控件选下拉目录中选Users(Win7或Win8)-Administrator-Desktop,双击选定的Desktop目录就可获得桌面的路径。

也可使用CommonDialog 控件(“打开”、“另存为”对话框)来获取桌面路径。

CommonDialog控件(“打开”、“另存为”对话框)通过使用 CommonDialog 控件的 ShowOpen 和 ShowSave方法可显示“打开”和“另存为”对话框。

两个对话框均可用以指定驱动器,目录,文件扩展名和文件名。除对话的标题不同外,另存为对话外观上与打开对话相似。

VB获取桌面背景

'在窗体上放置一个FileListBox控件和一个Label控件。把下列代码复制

'进去。Label控件里显示的就是桌面的快捷方式的个数

'FileListBox里显示的是你桌面上的所有的快捷方式的名称(快捷方式

’的扩展名(后缀)是*.lnk)

'程序经过测试,可以运行

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long

Dim S As String

Private Sub Form_Load()

File1.Pattern = "*.lnk"

Dim sBuffer As String

Dim lSize As Long

sBuffer = Space$(255)

lSize = Len(sBuffer)

Call GetUserName(sBuffer, lSize)

Dim A As String

If lSize > 0 Then

A = Left$(sBuffer, lSize)

A = Left(A, Len(A) - 1)

S = "c:\Documents and settings\" & A & "\桌面\"

Else

A = vbNullString

End If

File1.Path = S

Label1.Caption = File1.ListCount

End Sub

VB制作桌面主题程序

貌似 SystemParametersInfo 只能用 SPI_SETDESKWALLPAPER 参数设置桌面背景,而无法获取

可以用注册表相关 API 获取 HKCU\Control Panel\Desktop\Wallpaper 的值

Private Declare Function SHGetValueSZ Lib "shlwapi.dll" Alias "SHGetValueA" (ByVal hkey As Long, ByVal pszSubKey As String, ByVal pszValue As String, ByRef pdwType As Long, ByVal pvData As String, ByRef pcbData As Long) As Long

Private Const HKEY_CURRENT_USER = &H80000001

Private Const REG_SZ = 1 ' Unicode nul terminated string

Private Sub Form_Load()

Dim s As String * 255

SHGetValueSZ HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", REG_SZ, s, Len(s)

MsgBox s

End Sub

SystemParametersInfo 函数的参数详细说明:

常数 含义

SPI_GETACCESSTIMEOUT lpvParam是一个ACCESSTIMEOUT结构,其中要载入辅助访问特性计时信息。在调用函数之前,uParam必须设为ACCESSTIMEOUT结构的大小

SPI_GETANIMATION lpvParam是一个ANIMATIONINFO结构,将在其中载入窗口最小化和恢复时的动画信息。不能在NT 3.51中使用

SPI_GETBEEP lpvParam是一个Long型数据,若打开了响铃声,则设为TRUE

SPI_GETBORDER lpvParam是一个Long型数据,用于接收一个乘数(倍数),对大小可变的窗口的边框尺寸进行控制

SPI_GETDEFAULTINPUTLANG lpvParam是一个Long型数据,用于接收默认键盘布局的一个32位句柄。不能用于NT 3.51

SPI_GETDRAGFULLWINDOWS lpvParam是一个Long型数据,如在整个窗口上拖动,就会设为TRUE。如果只拖出了一个矩形轮廓,则为FALSE。要求NT 4.0 或 Windows 95支持。其中,Windows 95必须有Plus!支持,或直接安装Windows 95 OSR2

SPI_GETFASTTASKSWITCH lpvParam是一个Long型数据,如允许快速任务切换,则为TRUE。在Windows 95 和 NT 4.0中肯定是TRUE

SPI_GETFILTERKEYS lpvParam是一个FILTERKEYS结构,用于装载与键盘有关的辅助访问特性信息

SPI_GETFONTSMOOTHING lpvParam是一个Long型数据,如打开了边缘修饰特性(让字体更圆润),则为TRUE。只适用于 NT 4.0 和带 Plus! 支持的 Windows 95

SPI_GETGRIDGRANULARITY lpvParam是一个Long型数据,会设为网格间隔尺寸值

SPI_GETHIGHCONTRAST lpvParam是一个HIGHCONTRAST结构,用于装载与用户显示器有关的辅助访问特性信息。仅适用于Win95

SPI_GETICONMETRICS lpvParam是一个ICONMETRICS结构,用于装载与图标比例及排列有关的信息。仅适用于Windows 95 及 NT 4.0

SPI_GETICONTITLELOGFONT lpvParam指向一个LOGFONT结构,设置内容取决于图标标题采用的字体

SPI_GETICONTITLEWRAP lpvParam是一个Long型数据,如允许对图标标题进行自动换行,则设为TRUE

SPI_GETKEYBOARDDELAY lpvParam是一个Long型数据,设为键盘重复延时

SPI_GETKEYBOARDPREF lpvParam是一个Long型数据,如用户更喜欢用键盘而不是鼠标,则设为TRUE。如这个参数为真,windows会显示出附加的键盘接口信息,只适用于win95

SPI_GETKEYBOARDSPEED lpvParam是一个Long型数据,设为键盘的重复速率

SPI_GETMENUDROPALIGNMENT lpvParam是一个Long型数据,若弹出式菜单左对齐(默认),则设为FALSE。否则为TRUE

SPI_GETMINIMIZEDMETRICS lpvParam是一个MINIMIZEDMETRICS结构,用于装载与最小化窗口的比例及排列有关的信息。仅适用于win95

SPI_GETMOUSE lpvParam是三元素Long数组的头一个条目,条目0设为用户配置MouseThreshold1字段,条目1设为MouseThreshold2字段,条目2设为MouseSpeed

SPI_GETMOUSEKEYS lpvParam是一个MOUSEKEYS结构,要在其中装载与鼠标有关的辅助访问信息。不能在 NT 3.51中使用

SPI_GETNONCLIENTMETRICS lpvParam是一个NONCLIENTMETRICS结构,要在其中装载有关字体和环境有关的信息;这些信息会在描绘窗口非客户区域时涉及到,如边框、标题等。只适用于win95

SPI_GETSCREENSAVEACTIVE lpvParam指向一个整数;倘若屏幕保护程序处于活动状态,则设为TRUE;否则设为FALSE

SPI_GETSCREENSAVETIMEOUT lpvParam指向一个整数;它设为屏幕保护延时(以秒为单位)

SPI_GETSERIALKEYS lpvParam是一个SERIALKEYS结构,用于装载与输入设备(用于模拟键盘输入)有关的辅助访问特性信息。只适用于win95

SPI_GETSHOWSOUNDS lpvParam是一个Long型数据,倘若应用程序应该用可视线索来代替声音,则设为TRUE。它的作用与GetSystemMetrics函数的SM_GETSHOWSOUNDS选项是相同的

SPI_GETSNAPTODEFBUTTON lpvParam是一个Long型数据,倘若鼠标会自动移到新对话框的默认按钮,则设为TRUE。只适用于NT 4.0

SPI_GETSOUNDSENTRY lpvParam是一个SOUNDSENTRY结构,用于装载让windows提供可视标志(而不是系统声音)时涉及的辅助访问特征信息。调用之前,必须将uParam设为SOUNDSENTRY结构的长度

SPI_GETSTICKYKEYS lpvParam是一个STICKYKEYS结构,用于装载允许一名用户顺序按键(而不是同时按下)时涉及的辅助访问特征信息。同时按键的例子包括Shift+, Ctrl+, Alt+ 等。调用之前,必须将uParam设为STICKYKEYS结构的长度

SPI_GETTOGGLEKEYS lpvParam是一个TOGGLEKEYS结构,要在其中装载按下一个开关键(NumLock,CapsLock,ScrollLock)后播放声音提示时涉及的辅助访问特征信息。windows会用一个不同的声音指出开或关状态。调用之前,必须将uParam设为TOGGLEKEYS结构的长度

SPI_GETWORKAREA lpvParam是一个RECT结构,用于装载屏幕的工作区

SPI_ICONHORIZONTALSPACING 如lpvParam为NULL,则uParam代表桌面图标新的水平间隔距离,以像素为单位

SPI_ICONVERTICALSPACING 与SPI_ICONHORIZONTALSPACING相似,只不过指定图标的垂直间距

SPI_LANGDRIVER lpvParam是一个字串,用于容纳新的语言驱动程序文件的名称

SPI_SETACCESSTIMEOUT 与SPI_GETACCESSTIMEOUT的参数相同

SPI_SETANIMATION 与SPI_GETANIMATION的参数相同

SPI_SETBEEP uParam为TRUE时打开响铃,FALSE关闭

SPI_SETBORDER uParam代表一个乘数,用于控制尺寸可变的的窗口边框的大小

SPI_SETDEFAULTINPUTLANG 与SPI_GETDEFAULTINPUTLANG的参数相同

SPI_SETDESKPATTERN 从注册表或win.ini中强制窗口恢复当前的桌面方案

SPI_SETDESKWALLPAPER lpvParam代表一个字串,用于容纳作为桌面墙纸使用的一个位图文件的名称

SPI_SETDOUBLECLICKTIME uParam代表连续两次单击被当作一次双击处理时需要间隔的时间(以毫秒为单位)

SPI_SETDOUBLECLKHEIGHT uParam代表新的双击高度,可参考GetSystemMetrics函数的注解

SPI_SETDOUBLECLKWIDTH uParam代表新的双击宽度,可参考GetSystemMetrics函数的注解

SPI_DRAGFULLWINDOWS uParam为TRUE时打开全窗口拖动,否则为FALSE。仅适用于win95

SPI_SETDRAGHEIGHT uParam代表一个矩形的高度(以像素为单位),用于决定拖动操作何时开始。只适用于win95

SPI_SETDRAGWIDTH uParam代表一个矩形的宽度(以像素为单位),用于决定拖动操作何时开始。只适用于win95

SPI_SETFASTTASKSWITCH uParam为TRUE时打开快速任务切换,FALSE则关闭

SPI_FILTERKEYS 参数与 SPI_GETFILTERKEYS 相同

SPI_SETFONTSMOOTHING uParam为TRUE时打开字体修饰(圆润)。只能在NT 4.0 和得到 Plus! 支持的 Win95(或 Windows 95 OSR2)中使用

SPI_SETGRIDGRANULARITY uParam代表新的网格间距

SPI_SETHIGHCONTRAST 参数与 SPI_GETHIGHCONTRAST 相同

SPI_SETICONMETRICS 参数与 SPI_GETICONMETRICS 相同

SPI_SETICONTITLELOGFONT lpvParam是一个LOGFONT结构,用于定义图标标题采用的字体。uParam指定LOGFONT结构的大小。如两者均为NULL,则采用系统启动时定义的字体

SPI_SETICONTITLEWRAP uParam为TRUE时打开图标标题自动换行

SPI_SETKEYBOARDDELAY uParam代表新的键盘重复延时

SPI_SETKEYBOARDPREF 若uParam为TRUE,表明用户相比键盘和鼠标更喜欢用前者。参考SPI_GETKEYBOARDPREF

SPI_SETKEYBOARDSPEED uParam代表新的键盘重复速率

SPI_SETLANGTOGGLE 令窗口从系统注册表中重新装载热键信息,以便在键盘布局之间交换

SPI_SETLOWPOWERACTIVE uParam为TRUE时允许节能屏幕保护程序模式。只适用于win95

SPI_SETLOWPOWERTIMEOUT uParam代表新的节能屏幕保护程序延时。只适用于win95

SPI_SETMENUDROPALIGNMENT uParam为FALSE时设置弹出菜单左对齐,TRUE则右对齐

SPI_SETMINIMIZEDMETRICS 参数与SPI_GETMINIMIZEDMETRICS一样

SPI_SETMOUSE lpvParam是一个三元素整数数组的头一个条目,其中包含了鼠标设置。参考SPI_GETMOUSE

SPI_SETMOUSEBUTTONSWAP uParam为TRUE时交换左右鼠标按钮的功能;如果为FALSE,则使用原来的值

SPI_SETMOUSEKEYS 参数与SPI_GETMOUSEKEYS一样

SPI_SETNONCLIENTMETRICS 参数与SPI_GETNONCLIENTMETRICS一样

SPI_SETPENWINDOWS uParam为TRUE时载入笔窗口,FALSE则卸载

SPI_SETPOWEROFFACTIVE uParam为TRUE时允许停电屏幕保护模式。只适用于win95

SPI_SETPOWEROFFTIMEOUT uParam代表新的停电屏幕保护程序延时。只适用于win95

SPI_SETSCREENREADER uParam为TRUE时表示正在运行一个屏幕阅读程序。参考SPI_GETSCREENREADER

SPI_SETSCREENSAVEACTIVE uParam为TRUE时激活屏幕保护程序;FALSE表示禁止

SPI_SETSCREENSAVETIMEOUT uParam代表新的屏幕保护延迟时间,以秒为单位

SPI_SETSERIALKEYS 参数与 SPI_GETSERIALKEYS 相同

SPI_SETSHOWSOUNDS uParam为TRUE时允许窗口开启声音提示辅助访问特性。参考SPI_GETSHOWSOUNDS

SPI_SETSNAPTODEFBUTTON 如鼠标应自动移到新对话框的默认按钮,则uParam为TRUE。只适用于NT 4.0

SPI_SETSOUNDSENTRY 与 SPI_GETSOUNDSENTRY 相同

SPI_SETSTICKYKEYS 与 SPI_GETSTICKYKEYS 相同

SPI_SETTOGGLEKEYS 与 SPI_GETTOGGLEKEYS 相同

SPI_SETWORKAREA 与 SPI_GETWORKAREA 相同

用VB怎么编写双桌面切换

<<如何编程应用桌面主题>>

更改一个桌面主题需要一项一项更改以下提到的所有内容,包括壁纸、窗口标题栏、窗口字体、文字颜色、菜单属性等等:

有些用API直接设置,例如API"SystemParametersInfo()"更改壁纸;

大部分用修改注册表的方法实现。

一个主题的内容太多了,只能在百度一项一项的搜索更改每个内容的详细方法:

搜索"vb 设置壁纸"

搜索"注册表 窗口字体"

... ...等等

==============

<<<桌面主题的构成:>>>

(更详细可看这里:

一个XP的桌面主题可以包含好几个部分,风格、壁纸、屏保、鼠标指针、系统声音事件、图标,除了风格是必须的之外,其他部分都是可选的。风格可以义的内容是大家在Windows里所能看到的一切,例如窗口的外观、字体、颜色,按钮的外观等等等等,一个桌面主题里

风格就决定了大家所看到的Windows的样子。

大家可以打开 X:\Windows\Resources\Themes 目录,这个目录就是XP中存放桌面主题的目录。你能看到有很多 xxx.theme文件,你在显示属性的“主题”列表里看到有多少个主题里就有多少个 .theme 文件,它就是Windows主题文件,一个桌面主题的总定义文件,它的内

容不多,是文本格式的,以XP的默认官方主题 Luna 为例,大家用任何一个文本编辑器打开Luna.theme ,可以很直观的看到其内容。

[Theme] 部分是定义我的电脑、我的文档、网络邻居以及回收站这几个主要部件的图标,Luna.theme 中 My Computer 定义的图标就是 X:\Windows\explorer.exe,0 ,也就是explorer.exe 中包含的第一个图标,没有包含特定图标的主题这里一般都是这个值。这里

即可以指向程序文件,也可以指向DLL文件或者图标文件。

[Control Panel\Colors] 部分定义的是各个Windows部件如标题栏、窗口背景、文字等的颜色,这里定义的颜色大部分时候是无关紧要的,因为系统会优先按照色彩方案中的配色显示,这在后面的部分会讲到。

[Control Panel\Cursors] 定义的就是鼠标指针了,每一行定义一个指针文件,例如 Arrow 定义箭头光标,Wait 定义等待光标。Luna中这里是空的,代表使用Windows默认的鼠标指针,这里的定义必须是具体的 .cur 光标文件或者 .ani 动画光标文件。

[Control Panel\Desktop] 定义桌面的显示,包括壁纸的位置,显示方式,以及是否激活屏保。Luna中的 Wallpaper=%WinDir%web\wallpaper\Bliss.bmp 就是大家看得最多的“菜地蓝天”了 。

这里的 ScreenSaveActive=X 和下面的 [boot] 部分SCRNSAVE.EXE=XXX 是对应的,前者管是否允许屏保,后者是屏保的具体地址。

[VisualStyles] 就是最关键的部分了,这里指向的就是一个桌面主题的核心部分:.msstyles 可视化外观风格文件,Luna中指的就是 Path=%WinDir%resources\Themes\luna\luna.msstyles ,后面会讲到。

再往下走就是定义声音事件的了,和我们在 控制面板 → 声音和音频设备 → 声音 中设置的项目是一样的。

一般来说一个完整的主题基本文件结构就是一个 .theme 文件和一个放置风格文件等其他文件的文件夹,在 [VisualStyles] 部分可以找到这个文件夹的名字。了解了 .theme 文件的结构之后,大家就完全可以按照自己的喜好编辑了,只是要确认所有文件的指向都必须是有

效的,否则主题无法使用。

需要说明的是, .theme 文件不是必须的,.msstyles 风格文件才是。因此,有些主题只有.msstyles 文件,没有 .theme 文件,一样可以照常使用。只是在显示属性的主题列表中是看不到的,必须到“外观”中才可能看到。

下面,根据 [VisualStyles] 中的路径我们再打开 Luna 文件夹,现在可以看到luna.msstyles 风格文件了。.msstyles 是一个桌面主题的最主要的部分,它的内容一般包含了几乎大家所有在Windows里看到的一切,包括窗口、工具栏、按钮等等的颜色、背景图案、立体效果、字体之类,它基本可以确定一个主题的效果。有兴趣的朋友可以用StyleBuilder 这个也是由 TGT Soft 出品的专门编辑风格文件的工具打开来看看。就了解.msstyles 的重要作用了。这就是为什么有很多主题就只有这一个文件却能够实现非凡的效果。这里有一点很重要,就是 .msstyles 文件只能放置在 X:\Windows\Resources\Themes目录的子目录下,并且所在的子目录名称必须和本身的文件名(不包括后缀名)一致,例如 Luna.msstyles 必须放在 X:\Windows\Resources\Themes\Luna 下才有效,大家可以试试将目录或者文件其中一项改名,就会发现该风格已经无法正常使用了。

大部分主题目录里还会有一个 Shell 目录,这里还是以官方主题 Luna 为例,和Luna.msstyles 在一起的就有一个 Shell 目录,打开 Shell 目录能够看到三个子目录,分别是 Homestead、NormalColor、Metallic,正好分别对应 Luna 主题中的三个色彩方案:橄榄绿、默认(蓝)、银色。三个目录每个下面都有一个 shellstyle.dll 文件。shellstyle.dll 的作用比较简单,它定义的是资源管理器中左边的公共栏的样式,包括位图、字体和颜色配置,例如关闭和打开“详细信息”的按钮,以及大家打开音乐文件夹时文件列表右下角背景中显示的音符图案等。一般一个主题中有几个色彩方案就会有几个shellstyle.dll 文件,每个 shellstyle.dll 的内容都是配合所针对的色彩方案的,不尽相同。

和 .theme 文件一样, Shell 文件夹和 shellstyle.dll 都不是必须的,很多主题就没有这个内容。即便将已有 shellstyle.dll 删除也不会对主题产生太大的影响,只是在该色彩方案下它所定义的内容会变成系统默认的。大家完全可以尝试在一个色彩方案中用其他色彩

方案的 shellstyle.dll 文件替换,甚至可以自己用 Resource Hacker 之类的工具自己编辑里面的位图和颜色、字体定义等,有时候可以达到意想不到的效果。

==================

这方面我也不是很熟悉,所以更具体详细的就无能为力了,SORRY。

vb.net 模拟 Win + D 显示桌面

DeferWindowPos

VB声明

Declare Function DeferWindowPos Lib "user32" Alias "DeferWindowPos" (ByVal hWinPosInfo As Long, ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

说明

该函数为特定的窗口指定一个新窗口位置,并将其输入由BeginDeferWindowPos创建的结构,以便在EndDeferWindowPos函数执行期间更新

返回值

Long,返回一个新句柄,它指向的结构包含了位置更新信息。这个句柄应在对DeferWindowPos的后续调用以及对EndDeferWindowPos的结束调用中用到。如出错,则返回零值

参数表

参数 类型及说明

hWinPosInfo Long,由BeginDeferWindowPos为后续对DeferWindowPos的调用返回的句柄

hwnd Long,欲定位的窗口

hWndInsertAfter Long,窗口句柄。在窗口列表中,窗口hwnd会排列于这个窗口后面。也可用下述值之一:

HWND_BOTTOM 将窗口置于窗口列表底部

HWND_TOP 将窗口置于Z序列顶部;Z序列是窗口针对分级结构中一个给定级别显示的顺序

HWND_TOPMOST 将窗口置于列表顶部,位于任何最顶级窗口的前面(请参考WS_EX_TOPMOST样式位)

HWND_NOTOPMOST 将窗口置于列表顶部,位于任何最顶级窗口的后面

x Long,窗口新的x坐标。如hwnd是个子窗口,那么x用父窗口的客户区坐标表示

y Long,窗口新的y坐标。如hwnd是个子窗口,那么y用父窗口的客户区坐标表示

cx Long,指定新窗口宽度

cy Long,指定新窗口高度

wFlags Long,包含了旗标的一个整数,如下所示:

SWP_DRAWFRAME 围绕窗口画一个框

SWP_HIDEWINDOW 隐藏窗口

SWP_NOACTIVATE 不激活窗口

SWP_NOMOVE 保持当前位置(x和y设定将被忽略)

SWP_NOREDRAW 窗口不自动重画

SWP_NOSIZE 保持当前大小(cx和cy会被忽略)

SWP_NOZORDER 保持在窗口列表的当前位置(hWndInsertAfter会被忽略)

SWP_SHOWWINDOW 显示窗口

SWP_NOOWNERZORDER 不改变Z序列的所有者

SWP_NOSENDCHANGING 窗口不发出WM_WINDOWPOSCHANGING消息

注解

请参考对SetWindowPos函数的注解。同时参考BeginDeferWindowPos和EndDeferWindowPos

把所有都隐藏 就到另个桌面了, 再把隐藏的显示回来,把显示的隐藏就到另个桌面了

显示桌面的本质是个系统 Shell(IShellDispatch4.ToggleDesktop()),所以只需要调用这个 Shell 就好了,用不着模拟按键。

项目引用 C:\Windows\System32\shell32.dll,参考代码:

Dim?objShel?As?Shell32.ShellClass?=?New?Shell32.ShellClass()

CType(objShel,?Shell32.IShellDispatch4).ToggleDesktop()