C# запустить пакетный файл в верхней части окна Top Most
Я знаю, что этот вопрос задавался несколько раз, но все же я не мог заставить его работать.
У меня самое верхнее полноэкранное окно, в котором по нажатию кнопки нужно запустить командный файл с многочисленными командами, некоторые из которых открывают окно взаимодействия с пользователем.
Как стартер, просто чтобы убедиться, что я на правильном пути, я пытаюсь запустить командный файл с помощью команды call notepad
,
Моя цель состоит в том, чтобы блокнот был поверх окна моего звонящего.
Сейчас это в основном метод проб и ошибок, поэтому извините за странный код.
Объявления и минусы:
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
const UInt32 SWP_NOSIZE = 0x0001;
const UInt32 SWP_NOMOVE = 0x0002;
const UInt32 SWP_SHOWWINDOW = 0x0040;
Исполнение:
static void ExecuteCommand(string command)
{
Process process = new Process();
process = Process.Start("c:\\TestFolder\\runNotepad.bat");
SetForegroundWindow(process.MainWindowHandle);
SetWindowPos(process.MainWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetParent(process.MainWindowHandle, Process.GetCurrentProcess().MainWindowHandle);
}
runNotepad.bat:
call notepad
Ссылки, которые я посмотрел:
Спасибо!