【发布时间】:2017-10-08 03:13:23
【问题描述】:
**编辑:当我在 MinimizePlayer() 方法中放置一个断点并逐步执行它时,它会最小化 wmplayer 进程。但它并非没有经过。我不知道为什么。 **
我的 Linux 机器上有一个类似的脚本,我在其中自动化了一些我每次启动时使用的任务。我能够启动 Rhythmbox,开始播放我的播放列表,并最小化这个过程。
好吧,我正在我的新 Windows 10 机器上尝试同样的事情,但我不知道如何从我的脚本中最小化 wmplayer.exe 进程。
这是我目前所拥有的。它工作正常,我只想最小化 wmplayer:
using System;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
namespace Playlist
{
class Program
{
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, WindowShowStyle nCmdShow);
private enum WindowShowStyle:uint
{
Hide = 0,
ShowMinimized = 2,
Minimize = 6
}
static void Main(string[] args)
{
Run();
}
public static void Run()
{
String username = Environment.UserName;
username = char.ToUpper(username[0]) + username.Substring(1);
Console.WriteLine("Hello " + username);
Thread.Sleep(2000);
Console.WriteLine("Opening Playlist...");
Thread.Sleep(2000);
Process.Start("wmplayer.exe", "C:\\Users\\" + username + "\\Music\\A_ChillstepMix.mp3");
//Thread.Sleep(2000);
//Console.WriteLine("Opening your IDE...");
//Thread.Sleep(2000);
//Process.Start("C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\Common7\\IDE\\devenv.exe");
//Thread.Sleep(2000);
MinimizePlayer();
Thread.Sleep(2000);
Console.WriteLine("Goodbye...");
Thread.Sleep(2000);
System.Environment.Exit(0);
}
public static void MinimizePlayer()
{
Process[] ps = Process.GetProcesses();
foreach(Process p in ps)
{
if(p.ProcessName.Contains("wmplayer"))
{
IntPtr h = p.MainWindowHandle;
ShowWindow(h, WindowShowStyle.Minimize);
}
}
}
}
}
【问题讨论】:
-
抱歉,我不认为?我只想在 Windows Media Player 启动时最小化它。第二个例子是使用 WinForms。我正在控制台应用程序中执行此操作。
-
看看第二个链接上的答案,您可以在其中使用 Win32API 函数,
SetWindowPos和ShowWindow。控制台应用程序或 Winform 无关紧要
标签: c# automation console-application