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

Ссылки, которые я посмотрел:

Спасибо!

0 ответов

Другие вопросы по тегам