这是方法定义:
[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();
除了我不希望将数据复制到剪贴板之外,我想做同样的事情。是否可以将数据复制到内存中的其他部分?如果是这样,怎么样?
答案 0 :(得分:3)
没有。您无法控制其他应用程序在收到消息时将执行的操作。您可以获得目标窗口对该消息的任何行为,而不是其他任何内容(除非您也控制目标,否则您自己可以处理它)。
WM_COPY
只是一条消息(也是标准的消息,以特定的方式处理) - 有些窗口会处理它,有些则不会。在MSDN上定义WM_COPY将保存文本以进行编辑控制。
应用程序将WM_COPY消息发送到编辑控件或组合框,以CF_TEXT格式将当前选择复制到剪贴板。
如果你正在实现自己的处理WM_COPY的应用程序,你可以在任何你想要的地方复制数据,如果对编辑控件进行子类化,那么保持默认行为会很有意义......
答案 1 :(得分:0)
如果剪贴板不是选项,您可以将其写入文件。