在Windows 11中,以下代码能够运行并获取winver.exe
的主窗口句柄:
public IntPtr Start()
{
IntPtr id = 0;
using (Process process = Process.Start("c:\\Windows\\System32\\winver.exe"))
{
for (int i = 0; i < 10 && id == 0; i++)
{
Thread.Sleep(200);
try
{
process.WaitForInputIdle();
} catch { }
process.Refresh();
id = process.MainWindowHandle;
}
return id;
}
return 0;
}
然而,将“winver.exe”改为“calc.exe”、“notepad.exe”或任何商店下载应用程序都会导致窗口句柄为0,我认为这与UWP应用程序有关(但我远不是Windows相关领域的Maven)。
有没有办法从C#运行和获取UWP应用的主窗口句柄?
1条答案
按热度按时间pjngdqdw1#
您可以使用launch your UWP apps through URI,并使用GetForegroundWindow获取窗口句柄。
我使用了两种方法来启动UWP应用程序,第一种使用LaunchUriAsync,第二种使用
Process
启动。要从C#启动协议,请使用UseShellExecute=true启动Process对象。您不能使用Explorer.exe作为进程启动UWP。