VB6实现动态壁纸功能全解析,含原理及实现步骤

Windows桌面视频播放_VB6动态壁纸实现_win7设置动态桌面壁纸

效果前言

壁纸在我们生活中很常见,有一天我突发奇想要用VB6实现动态壁纸功能,但我去网上搜了一下,发现我找不到相关教程,所以当时遇到了很大的困难。为了不让以后和我有同样想法人遭遇和我一样的处境,我将动态壁纸的实现方法整理起来。

原理分析

打开spy++,按下”窗口”图标的按钮,展开桌面窗口,将右侧滚动条向下拉到底,可以发现一个窗口

” ” 是桌面窗口,所有的壁纸设置都与它有关。其中 “” 是显示桌面图标的窗口。

当我们给窗口 ” ” 发送 &H52c 消息时,它就会分裂成三个窗口

VB6动态壁纸实现_Windows桌面视频播放_win7设置动态桌面壁纸

可以看到 “” 被移动到了第一个 窗口,所以该窗口显示桌面图标;而第二个 窗口以前主要显示静态壁纸,在现在版本的 中我不清楚她的作用。

要实现动态壁纸,我们可以在桌面窗口上播放视频,再隐藏掉第二个 窗口,就可以显示出播放的视频,从而实现动态壁纸。

实现

创建一个 “标准EXE工程”, 在工程中添加一个模块。

这是因为无法取得在窗体中的回调函数的地址。

模块的代码如下:

通过菜单栏上的 “工程””部件” 引入 ” Media ” 控件。

切换到Form1, 在窗体上添加一个 ” Media ” 控件和一个 “Timer” 控件。

单击窗体, 将窗体的 “” 属性修改为 “0 – None”, 将窗体的 “” 属性修改为 “2 – “。

单击窗体上的控件, 通过属性窗口中的 “自定义” 设置需要的属性。

窗体的代码如下:

<pre data-lang="shell@shell@Shell" codecontent="Option Explicit
Public hProgman
Public FilePath
Private Sub Form_Activate()
WindowsMediaPlayer1.Top = 0
WindowsMediaPlayer1.Left = 0
WindowsMediaPlayer1.Width = Me.ScaleWidth
WindowsMediaPlayer1.Height = Me.ScaleHeight
End Sub
Private Sub Form_Load()
FilePath = "X:WMSystemprmWMExplorerVideoPlayer可爱的美露莘_60fpsFX.mp4"
'将文件路径替换为你需要播放视频的路径
'测试用视频来自 BV1kQ4y1E7Fv
hProgman = FindWindow("Progman", vbNullString)
If hProgman = 0 Then
MsgBox "Fail to find Progman", 4114, ""
End
End If
SendMessage hProgman, &H52C, 0, 0
SetParent Me.hwnd, hProgman
EnumWindows AddressOf EnumWindowsProc, 0
WindowsMediaPlayer1.URL = Replace(FilePath, Chr(34), "")
WindowsMediaPlayer1.Controls.play
Timer1.Interval = 100
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
'这是为了循环播放
'WindowsMediaPlayer1.playState 为 1 意味着播放已停止
If WindowsMediaPlayer1.playState = 1 Then
WindowsMediaPlayer1.URL = Replace(FilePath, Chr(34), "")
WindowsMediaPlayer1.Controls.play
End If
End Sub
” class=” language-shell”>

保存工程, 按下运行按钮, 体验美好生活(大雾)。

可能遇到的问题

Q – 当运行编译出应用程序播放视频时, 应用程序崩溃。如果在IDE中直接运行, 则 Basic 也崩溃。

S – 检查显示设置, 如果你的系统中有多张显卡, 最好将当前显示器所连接的显卡(如 “集成图形”)作为应用程序的图形处理器使用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注