是否可以发送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的应用程序,你可以在任何你想要的地方复制数据,如果子类化编辑控件,保持默认行为会很有意义……
如果剪贴板不是选项,您可以将其写入文件。