C# 如何发送控件+;L和控制+;C到另一个应用程序?

C# 如何发送控件+;L和控制+;C到另一个应用程序?,c#,C#,我正在使用c#开发win应用程序,我想在firefox处于活动状态时发送Ctrl+L和Ctrl+c,以定位地址栏并复制Url并从剪贴板获取信息。我正在努力做到这一点。但我不能这样做 我该怎么做? 激活Firefox窗口,发送Ctrl+L(激活地址栏),发送Ctrl+C(复制选择,即URL到剪贴板)并读取剪贴板 [return: MarshalAs(UnmanagedType.Bool)] [DllImport("user32.dll", SetLastError = true)]

我正在使用c#开发win应用程序,我想在firefox处于活动状态时发送Ctrl+L和Ctrl+c,以定位地址栏并复制Url并从剪贴板获取信息。我正在努力做到这一点。但我不能这样做

我该怎么做? 激活Firefox窗口,发送Ctrl+L(激活地址栏),发送Ctrl+C(复制选择,即URL到剪贴板)并读取剪贴板

 [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("user32.dll", SetLastError = true)]
    static extern bool PostMessage(IntPtr hwnd, uint Msg, int wParam, int lParam);

    private const uint VK_CONTROL = 0x11;
    private const uint VK_L = 0x4C;
    private const uint VK_C = 0x43;


if (hwndfirfox == Process.GetProcessesByName("firefox")[0].MainWindowTitle)
       hwndfirfox = Process.GetProcessesByName("firefox")[0].MainWindowHandle;

if (hwndfirfox != null)
{
    PostMessage(hwndfirfox, VK_CONTROL, VK_L, 0);
    PostMessage(hwndfirfox, VK_CONTROL, VK_C, 0);
}

这个代码是错误的,帮助我。

你可能想考虑代码项目。MSDN上的仅允许您向当前活动的应用程序发送击键,这可能对您也有帮助。

我看到一篇帖子,其中指出PostMessage不应用于模拟键盘输入。您应该为此使用or。

我本打算建议使用相同的代码项目文章,但在questin中使用了格式化代码:)我不反对这个答案的唯一原因是,因为它承认OP的解决方案是最糟糕的方式。不过,
SendKeys
/
SendInput
几乎同样糟糕(它不考虑区域设置,例如,[Ctrl]+C不映射到复制操作)。如果要自动化UI,请使用。