2012-04-28 90 views
2

在我的vb.net窗體窗體應用程序中,我想製作一個按鈕,當用戶點擊按鈕時,應該顯示桌面(顯示桌面按鈕)。在VB.NET中顯示桌面按鈕Windows窗體

考慮表單名稱爲form1,它有一個像「顯示桌面」這樣的按鈕,當用戶單擊時,所有的應用程序都應該最小化,並且應該顯示桌面,是否有任何VB.NET Windows Form應用程序的代碼。

回答

3

在C#中它是這樣的:

using System; 
using System.Runtime.InteropServices; 

namespace ConsoleApplication1 { 
class Program { 
    [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] 
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
    [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true)] 
    static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam); 

    const int WM_COMMAND = 0x111; 
    const int MIN_ALL = 419; 
    const int MIN_ALL_UNDO = 416; 

    static void Main(string[] args) { 
     IntPtr lHwnd = FindWindow("Shell_TrayWnd", null); 
     SendMessage(lHwnd, WM_COMMAND, (IntPtr)MIN_ALL, IntPtr.Zero); 
     System.Threading.Thread.Sleep(2000); 
     SendMessage(lHwnd, WM_COMMAND, (IntPtr)MIN_ALL_UNDO, IntPtr.Zero); 
    } 
} 
} 

我用了一個online converter tool轉換上面的代碼,請驗證它是否工作

Imports System 
Imports System.Runtime.InteropServices 

Namespace ConsoleApplication1 
    Class Program 
     <DllImport("user32.dll", EntryPoint := "FindWindow", SetLastError := True)> _ 
     Private Shared Function FindWindow(lpClassName As String, lpWindowName As String) As IntPtr 
     End Function 
     <DllImport("user32.dll", EntryPoint := "SendMessage", SetLastError := True)> _ 
     Private Shared Function SendMessage(hWnd As IntPtr, Msg As Int32, wParam As IntPtr, lParam As IntPtr) As IntPtr 
     End Function 

     Const WM_COMMAND As Integer = &H111 
     Const MIN_ALL As Integer = 419 
     Const MIN_ALL_UNDO As Integer = 416 

     Private Shared Sub Main(args As String()) 
      Dim lHwnd As IntPtr = FindWindow("Shell_TrayWnd", Nothing) 
      SendMessage(lHwnd, WM_COMMAND, DirectCast(MIN_ALL, IntPtr), IntPtr.Zero) 
      System.Threading.Thread.Sleep(2000) 
      SendMessage(lHwnd, WM_COMMAND, DirectCast(MIN_ALL_UNDO, IntPtr), IntPtr.Zero) 
     End Sub 
    End Class 
End Namespace 
1

檢查此鏈接。這包含代碼以最小化顯示桌面的所有窗口。 http://www.dreamincode.net/code/snippet2109.htm

Public Sub ShowDesktop() 
keybd_event(VK_LWIN, 0, 0, 0) 
keybd_event(77, 0, 0, 0) 
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0) 
End Sub 

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ 
ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 
Private Const KEYEVENTF_KEYUP = &H2 
Private Const VK_LWIN = &H5B 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles Button1.Click 
Call ShowDesktop() 
End Sub 
+0

非常感謝你這對我來說工作得很好.. – 2012-04-28 06:14:32

+0

歡迎您。請將其標記爲已回答。 – Harsh 2012-04-28 06:15:38