Нужно на Powershell получить событие открытия окна Run(которое win+R). Подскажите как можно такое сделать
PHP: $pinvokes = @'[DllImport("user32.dll", CharSet=CharSet.Auto)]public static extern IntPtr Connect(string className, string Notepad);[DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]public static extern bool SetForegroundWindow(IntPtr hWnd);[DllImport("user32.dll", SetLastError = true)]static extern IntPtr FindWindow(string lpClassName, string lpWindowName);'@Add-Type -AssemblyName System.Windows.Forms# Using Passthru for example to show you how to return type directly $t = Add-Type -MemberDefinition $pinvokes -Name NativeMethods -Namespace MyUtils -PassThru$hwnd = $t::FindWindow("#32770", "Выполнить")
Спасибо, если добавить public к FindWindow, то работает. А можно ли сделать без привязки к тайтлу? Ибо если язик системы не русский, то все сломается. Если передать null вместо названия, то ищет по классу, но #32770 - стандартный класс модальных окон
PHP: [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);...public struct RECT { public int Left; // x position of upper-left corner public int Top; // y position of upper-left corner public int Right; // x position of lower-right corner public int Bottom; // y position of lower-right corner } Ищешь окно по классу #32770 Получаешь размер через GetWindowRect и сравниваешь по размеру. Мне в голову только такой вариант приходит