我有一个全屏应用程序,这是隐藏Windows自己的任务栏(它应该)。我有一个按钮方法,我启动IE进程
Process.Start(pathWayToIE);
它工作得很好,但是当最小化该窗口时,我无法再次访问它,因为任务栏正在隐藏,因为我想要它这样做。是否有一种方法可以找到相同的过程,并在同一按钮单击上最大化该窗口,而不是打开IE的新窗口?
我确实有这个语句来查看一个窗口是否已经打开
var proc = Process.GetProcesses();
for(var i = 0; i < proc.Length; ++i)
{
if(proc[i].ProcessName == "msedge")
{
appName = proc[i].ProcessName;
appId = proc[i].Id;
}
}
int count = Process.GetProcesses().Where(p => p.ProcessName == appName).Count();
if (count > 1)
{
MessageBox.Show("A window is already open!");
}
因此,看看一个窗口是否实际打开工作,但如何最大化它再次我挣扎。
整个方法是这样的:
private void IE_Button_Click(object sender, RoutedEventArgs e)
{
var startEdge = @"pathwayToIE";
var appName = "";
var appId = 0;
var proc = Process.GetProcesses();
for(var i = 0; i < proc.Length; ++i)
{
if(proc[i].ProcessName == "msedge")
{
appName = proc[i].ProcessName;
appId = proc[i].Id;
}
}
Process myEdgeProcess = new Process();
ProcessStartInfo procStartInfo = new ProcessStartInfo(startEdge);
myEdgeProcess.StartInfo.FileName = startEdge;
int count = Process.GetProcesses().Where(p => p.ProcessName == appName).Count();
int currentRunningInstance = Process.GetProcesses().Where(c => c.Id == appId).Count();
if (count > 1)
{
MessageBox.Show("A window is already open!");
}
else
{
Process.Start(procStartInfo);
}
}
提前感谢提示
您可以通过p/InvokeShowWindow
方法最大化进程窗口。将以下代码添加到您的类中:
const int SW_SHOWMAXIMIZED = 3;
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
您需要获取进程句柄,可以这样实现:
IntPtr handle = Process.GetProcesses()
.FirstOrDefault(p => p.ProcessName == "YourProcessName")
.MainWindowHandle;
然后调用ShowWindow
,传递句柄和const值给它:
ShowWindow(handle, SW_SHOWMAXIMIZED);
完成:
static void Main(string[] args)
{
Process yourProcess = Process.GetProcesses()
.FirstOrDefault(p => p.ProcessName == "Viber");
IntPtr handle = yourProcess.MainWindowHandle;
ShowWindow(handle, SW_SHOWMAXIMIZED);
Console.WriteLine("Process " + yourProcess.ProcessName + " window maximized!");
Console.ReadKey();
}
关于ShowWindow
,你可以在这里阅读:https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow