【发布时间】:2023-03-23 05:51:02
【问题描述】:
我正在尝试使用 WinAPI 模拟一些关键事件。我想按 WIN 键,但我的代码不起作用。在示例中,我为每个 proc 使用 VK_F1。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ConsoleApplication69
{
class Program
{
const UInt32 WM_KEYDOWN = 0x0100;
const UInt32 WM_KEYUP = 0x0101;
const int VK_F1 = 112;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
static void Main(string[] args)
{
Process[] processes = Process.GetProcesses();
foreach (Process proc in processes)
{
SendMessage(proc.MainWindowHandle, WM_KEYDOWN, new IntPtr(VK_F1), IntPtr.Zero);
SendMessage(proc.MainWindowHandle, WM_KEYUP, new IntPtr(VK_F1), IntPtr.Zero);
}
}
}
}
【问题讨论】:
-
我一直用
PostMessage而不是SendMessage,也许它也适合你。
标签: c# .net windows winapi pinvoke