是否可以发送一个WM_COPY消息,复制除剪贴板以外的其他地方的文本?

时间:2012-11-26 17:01:05

标签: c# .net winapi sendmessage

这是方法定义:

  [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr lparam, IntPtr wparam);

这是对SendMessage的调用:

 //WM_COPY = 0x0301
 SendMessage(handle, WM_COPY, IntPtr.Zero, IntPtr.Zero);

这就是我检索数据的方式:

string text = System.Windows.Forms.Clipboard.GetText();

除了我不希望将数据复制到剪贴板之外,我想做同样的事情。是否可以将数据复制到内存中的其他部分?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:3)

没有。您无法控制其他应用程序在收到消息时将执行的操作。您可以获得目标窗口对该消息的任何行为,而不是其他任何内容(除非您也控制目标,否则您自己可以处理它)。

WM_COPY只是一条消息(也是标准的消息,以特定的方式处理) - 有些窗口会处理它,有些则不会。在MSDN上定义WM_COPY将保存文本以进行编辑控制。

  

应用程序将WM_COPY消息发送到编辑控件或组合框,以CF_TEXT格式将当前选择复制到剪贴板。

如果你正在实现自己的处理WM_COPY的应用程序,你可以在任何你想要的地方复制数据,如果对编辑控件进行子类化,那么保持默认行为会很有意义......

答案 1 :(得分:0)

如果剪贴板不是选项,您可以将其写入文件。