Используйте PowerShell для отправки сообщения в окно управления - PullRequest
0 голосов
/ 10 мая 2019

Как с помощью powershell отправить сообщение в окно управления?У меня есть пример отправки под C #, но я не знаю, как написать код в powershell.

//using System.Runtime.InteropServices;

[DllImport("user32.dll", EntryPoint = "SendMessageW", CharSet = CharSet.Unicode)]
internal static extern IntPtr SendMessageS(IntPtr hWnd, int Msg, uint wParam, string lParam);

[DllImport("user32.dll", EntryPoint = "FindWindowW", CharSet = CharSet.Unicode)]
internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

static void TestQm2SendMessage()
{
    var hwnd = FindWindow("QM_Editor", null);
    if(hwnd == default(IntPtr)) return;
    SendMessageS(hwnd, 12, 1, "Q ' M 'Macro295' C test C#");
}

Я пытался преобразовать код C # в код powershell, но это не сработало.Любые предложения приветствуются

$code = @'
[DllImport("user32.dll", EntryPoint = "SendMessageW", CharSet =  CharSet.Unicode)] public static extern IntPtr SendMessageS(IntPtr hWnd, int Msg, uint wParam, string lParam);
[DllImport("user32.dll", EntryPoint = "FindWindowW", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
'@
$myAPI = Add-Type -MemberDefinition $code -Name myAPI -PassThru
$myAPI::SendMessageS($myAPI::FindWindow("QM_Editor", $Null), 12, 1, "Q ' M 'Macro295' C test C#");

1 Ответ

0 голосов
/ 10 мая 2019

Вы можете использовать .NET System.Windows.Forms.MessageBox . Это также будет работать в Powershell.

[System.Windows.Forms.MessageBox]::Show("Your message here!", 'This is my title', 'YesNo', 'Information')
...