我是靠谱客的博主 机灵猫咪,最近开发中收集的这篇文章主要介绍C#中利用剪贴板进行进程间通信,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这篇文章中主要讲了大致实现过程,详细原理可以参照我的下一篇博客。

一,这里首先介绍C#中的剪贴板操作:

Clipboard.SetDataObject(string);,//将字符串存入剪贴板,

//将信息存入剪贴板后,再在其他地方使用

IDataObject iData = Clipboard.GetDataObject();//从剪贴板中获取数据
if (iData.GetDataPresent(DataFormats.Text))//如果剪贴板中的数据是文本格式
{
      string text = (string)iData.GetData(DataFormats.Text);//检索与指定格式相关联的数据

}


二,另外要讲的问题就是如何将一个进程中的数据传给另一个进程。在上面,我们已经可以从剪贴板中获取所需要的信息,此处为一个字符串。

下面展示如何将这个字符串传递给另一个进程。


IntPtr hwnd = GetForegroundWindow();//取得目前系統中前景程式的視窗(Handle)


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#中利用剪贴板进行进程间通信所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部