概述
这篇文章中主要讲了大致实现过程,详细原理可以参照我的下一篇博客。
一,这里首先介绍C#中的剪贴板操作:
Clipboard.SetDataObject(string);,//将字符串存入剪贴板,
//将信息存入剪贴板后,再在其他地方使用
IDataObject iData = Clipboard.GetDataObject();//从剪贴板中获取数据
if (iData.GetDataPresent(DataFormats.Text))//如果剪贴板中的数据是文本格式
{
string text = (string)iData.GetData(DataFormats.Text);//检索与指定格式相关联的数据
}
二,另外要讲的问题就是如何将一个进程中的数据传给另一个进程。在上面,我们已经可以从剪贴板中获取所需要的信息,此处为一个字符串。
下面展示如何将这个字符串传递给另一个进程。
IntPtr CThreadId = GetCurrentThreadId();// 本程序的线程ID
IntPtr WTProcessId = GetWindowThreadProcessId(hwnd, IntPtr.Zero);//当前窗口的线程ID
IntPtr a = AttachThreadInput(WTProcessId, CThreadId, 1);//附加输入线程
ParenthWnd = GetFocus();//得到当前键盘光标所在的窗口
AttachThreadInput(WTProcessId, CThreadId, 0);//取消附加的输入线程
if (!ParenthWnd. Equals( IntPtr.Zero))
{
bool judge = false;
for (int i = 0; i < text.Length;i++ )
{
judge = PostMessage(ParenthWnd, WM_CHAR, ( IntPtr)(text[i] & 0xFF), ( IntPtr)0);
}
//按字符形式,将每个字符输入光标所在文本框
//也可以采用将整个字符串发送过去的形式
//模拟回车,以实现自动回车的功能
PostMessage(ParenthWnd, WM_KEYDOWN, (IntPtr)VK_RETURN, (IntPtr)0);
}
最后
以上就是机灵猫咪为你收集整理的C#中利用剪贴板进行进程间通信的全部内容,希望文章能够帮你解决C#中利用剪贴板进行进程间通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复