哦 “将BorderStyle设为0就行”可以使窗口对Win+M无效 再将窗口设为永在顶层可使Win+D无效 Private Declare Function SetWindowPos Lib "user32.dll" (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 Private Const HWND_TOPMOST As Long = -1 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOMOVE As Long = &H2Private Sub Form_Load() Call SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)End Sub
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Declare Function SetWindowPos Lib "user32.dll" (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 Private Const HWND_TOPMOST As Long = -1 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOMOVE As Long = &H2Private Sub Form_Load() Dim hWndPM As Long
“将BorderStyle设为0就行”可以使窗口对Win+M无效
再将窗口设为永在顶层可使Win+D无效
Private Declare Function SetWindowPos Lib "user32.dll" (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
Private Const HWND_TOPMOST As Long = -1
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2Private Sub Form_Load()
Call SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)End Sub
我必须让窗体置底。不能让它显示在顶部。
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Declare Function SetWindowPos Lib "user32.dll" (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
Private Const HWND_TOPMOST As Long = -1
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2Private Sub Form_Load()
Dim hWndPM As Long
'将自身窗体的父窗口设为桌面
hWndPM = FindWindow("Progman", vbNullString)
Call SetParent(Me.hWnd, hWndPM)
Call SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)End Sub
这样才能与桌面完美的融合但是这样正规软件的技术难度是远远超过你的想象的
这样才能与桌面完美的融合同意,就是这个意思
不过我看到“桌面天气秀”已经将这个问题解决了!
将BorderStyle设为0,将自身窗体的父窗口设为桌面,再永在顶层
发现不需要设置BorderStyle
只需:将自身窗体的父窗口设为桌面,再永在顶层
我的操作系统是WindowsXP sp2