public partial class Form1 : Form
{
[DllImport("user32.dll", EntryPoint = "PostMessage")]
public static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("User32.dll ", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
private static extern int SendMessage(IntPtr HWnd, uint Msg, int WParam, int LParam);
public const int WM_SYSCOMMAND = 0x112;
public const int SC_MINIMIZE = 0xF020;
public const int SC_MAXIMIZE = 0xF030;
public const uint WM_SYSCOMMAND2 = 0x0112;
public const uint SC_MAXIMIZE2 = 0xF030;
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab);
public Form1()
{
InitializeComponent();
Process pr = new Process();//声明一个进程类对象
pr.StartInfo.FileName = @"D:filetftpd32.exe";//指定运行的程序,我的QQ的物理路径。
//方案1
//pr.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
pr.Start();
//pr.WaitForInputIdle(10000);
Thread.Sleep(1000);//根据软件启动时间可适当延长
//方案2
IntPtr handle = FindWindow(null, pr.MainWindowTitle);
PostMessage(handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
//pr.Close();
//pr.CloseMainWindow();
//pr.Kill();
}
}
当方案1无法生效时,使用方案2
当最小化失败时,有可能软件还未完全启动导致,请适当延长Sleep时间进行尝试



