对于不知道原理的兄弟们,也许很难理解这种程序是怎么实现的,但是我们知道了原理就知道其实真的很简单!
大家可以跟着我的文章做一遍,自行尝试下,高手绕过!
我们总共用到三个API: - FindWindow:根据窗口名或类名获得窗口句柄。
- SetParent:该函数改变某个子窗口的父窗口。
- GetDesktopWindow:获得桌面窗口的句柄。
我们先用SPY++获得桌面画面的窗口名和类名:
我们可以看到 窗口名:Program Manager
类名:Progman
我们以VB6.0为例写代码: - 把桌面画面作为子窗口:
hw = FindWindow(vbNullString, "Program Manager") MsgBox hw SetParent hw, Me.hwnd
2.还原桌面画面到桌面 SetParent hw, GetDesktopWindow
VB6.0完整代码: Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Dim hw As Long Private Sub Command1_Click() ''把桌面作为子窗口 hw = FindWindow(vbNullString, "Program Manager") MsgBox hw SetParent hw, Me.hwnd End Sub Private Sub Command2_Click() ''还原桌面画面到桌面 SetParent hw, GetDesktopWindow End Sub
我们运行程序看下效果: 看!效果实现了!这样我们就可以打造自己的个性桌面了!是不是很简单呢?只需要三个简单的API就可以搞定了! 大家有什么建议和问题可以留言给我!
有喜欢编程技术、游戏外挂技术可以关心我哦!
|