У меня есть довольно простой код для открытия файлов с помощью объекта Process:
var proc = new Process();
proc.StartInfo.FileName = attachmentPath;
proc.StartInfo.UseShellExecute = true;
proc.Start();
Время от времени окно, открывающееся из этого процесса, начинает открываться за всеми моими открытыми в настоящее время окнами. Я не вижу какой-либо закономерности или последовательности, почему это происходит. У кого-нибудь есть идея, почему это происходит, или как я могу обойти это? Спасибо!
Windows не поощряет приложения от кражи фокуса на некоторое время; правила вокруг него на самом деле не документированы, по-видимому, для предотвращения использования приложений.
Однако вы можете попробовать:
var proc = new Process();
proc.StartInfo.FileName = attachmentPath;
proc.StartInfo.UseShellExecute = true;
proc.Start();
//Wait for window to spin up
proc.WaitForInputIdle();
BringWindowToTop(proc.MainWindowHandle);
Определить BringWindowToTop с p/invoke.