如何从剪贴板粘贴文本?

时间:2012-02-20 08:06:10

标签: c++ winforms postmessage

我有代码;

HWND MShwnd = FindWindowA("MapleStoryClass", NULL);
        PostMessage(MShwnd, WM_KEYDOWN, 0x09, MapVirtualKeyA(0x09, 0) << 16);

效果很好。在此之前,我将一个文本复制到剪贴板。

我想知道的是如何使用postmessage并粘贴文本。

我到处搜索,不明白。

感谢。

1 个答案:

答案 0 :(得分:1)

这是一个C#代码转换它或用我的代码制作一个c#dll: (您需要添加引用Microsoft.VisualBasic

public string GetClipboardText()
{
    Microsoft.VisualBasic.Devices.Computer c = new Microsoft.VisualBasic.Devices.Computer();
    return c.Clipboard.GetText();
}

public void SetClipboardText(string stext)
{
    Microsoft.VisualBasic.Devices.Computer c = new Microsoft.VisualBasic.Devices.Computer();
    c.Clipboard.SetText(stext);
}

更新C ++代码:

System::String^ GetClipboardText()
{
    Microsoft::VisualBasic::Devices::Computer^ c = gcnew Microsoft::VisualBasic::Devices::Computer();
    return c->Clipboard->GetText();
}

void SetClipboardText(System::String^ stext)
{
    Microsoft::VisualBasic::Devices::Computer^ c = gcnew Microsoft::VisualBasic::Devices::Computer();
    c->Clipboard->SetText(stext);
}

更新2

我想你需要本机代码,所以你没有使用那些不需要句柄的代码,如果你实现了HWND MShwnd = FindWindowA("MapleStoryClass", NULL);所以你有一个句柄......我建议的任何方式最后一种方法如下:

keybd_event(0x11, 0, 0, 0); // press ctrl
keybd_event(0x56, 0, 0, 0); // press v
keybd_event(0x56, 0, 2, 0); // release v
keybd_event(0x11, 0, 2, 0); // release ctrl