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

这是方法定义:

[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(); 

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

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

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

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

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

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