最小化C#中所有打开的窗口

ano*_*ard 13 .net c# window minimize

我在论坛上看到了这个C++代码,它最小化了所有打开的窗口

#define MIN_ALL        419
#define MIN_ALL_UNDO   416

int main(int argc, char* argv[])
{
    HWND lHwnd = FindWindow("Shell_TrayWnd",NULL);
    SendMessage(lHwnd,WM_COMMAND,MIN_ALL,0);
    Sleep(2000);
    SendMessage(lHwnd,WM_COMMAND,MIN_ALL_UNDO,0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何在C#.net中访问FindWindow和SendMessage API函数以及HWND类型?

Sta*_*zev 28

PInvoke.net是你的朋友:-)

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);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

  • 如果我想最小化除我正在运行的应用程序之外的所有窗口该怎么办? (2认同)

J. *_*een 6

网站www.pinvoke.net提供了您需要的大量信息.例如,关于SendMessage和FindWindow的这篇文章:

http://www.pinvoke.net/default.aspx/user32.SendMessage http://www.pinvoke.net/default.aspx/user32.FindWindow

它当然是技术性的 - 但基本上你使用p/invoke调用FindWindow和SendMessage API函数来完成你想要的.=)