這個問題在這里已經有了答案: 在 .NET 中最大化另一個行程的視窗 (3 個回答) 7 天前關閉。
我有一個全屏應用程式,它隱藏了 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);
}
}
提前感謝您的提示
uj5u.com熱心網友回復:
您可以通過 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傳遞句柄和常量值給它:
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 :
//docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/315366.html
