如何将control + L和control + C发送到另一个应用程序?

时间:2009-07-24 06:38:11

标签: c#

我正在使用c#进行win应用程序,我想发送 Ctrl + L Ctrl + C 当firefox处于活动状态时,找到地址栏并复制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);
}

这段代码给出了错误,请帮帮我。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

您可能需要考虑CodeProject上的this article。 MSDN上的SendKeys class似乎只允许您向当前活动的应用程序发送击键,这也可能对您有所帮助。