威尼斯www.9778.com-威尼斯正版官方网站

windows宗旨编程-Windows VC++编制程序难题,怎么着收获文件粘贴事件,在粘贴事件实践前做一些操作。威尼斯正版官方网

日期:2019-12-25编辑作者:编程人生

需求描述:我想实现office内容的复制粘贴功能,即在本机上复制文档某部分内容,然后粘贴到我的应用程序上,并且双击粘贴部分,又能以对应的Office软件打开这些内容。网上把搜索的都找遍了,关键字”OLE嵌入链接”,也没找到合适的资料。本来我是想读取OLE剪贴板内容,然后自己通过GDI绘制到界面上,但这种方法可行性不大,毕竟Office套餐软件那么多,如果能够直接操作OLE来实现的话,就方便多了。

2.本地复制,发送到远端文件列表信息更新剪贴板,远程端临时创建几个与被复制同名的文件,将剪贴板的信息设置为这几个临时文件,然后Hook住这几个文件的读写函数,等读取这几个文件的时候,通知控制端进行传输,传输完成后继续这几个文件的读取。

原文档与效果图:

Windows VC++编程问题,如何获取文件粘贴事件,在粘贴事件执行前做一些操作。 300C
Windows VC++编程问题,如何获取文件粘贴事件,在粘贴事件执行前做一些操作。
我在做一个远控软件,但我想让我的远控软件支持远程复制粘贴,在本地复制后,粘贴到远程桌面,但复制后不想立即传输到远程端电脑,我是希望能本地复制后,更新远端电脑的剪贴板信息,等远端执行粘贴命令时,传输到远程端,然后进行粘贴,不太清楚OLE剪贴板是否能解决我的问题,对OLE剪贴板我还不是很了解。

第五步:保存并重新打开文档。

本人最开始有以下两个计划,但总觉得Hook技术偶尔不是很稳定,希望能有不需要Hook的方法:
1.本地复制,发送到远程端文件列表信息更新剪贴板,然后判断到复制的是文件时,远程端Hook粘贴函数,等粘贴函数执行的时候,发送到控制端粘贴命令,然后发给远程端粘贴。

威尼斯正版官方网站 1 

本人看过VNC的源码,里面貌似没有文件远程复制粘贴功能,只有文件远程传输功能,但我想直接加入复制粘贴功能,跪求各位大神有没有什么好的方法,尽量不使用Hook进行文件传输,本人监控过TeamViewer的文件复制粘贴,但TV好像是注册了一种剪贴板数据类型,使用OLE剪贴板进行文件粘贴,但具体怎么实现的我不清楚。

 

文章写的比较简单,这里我还是使用了E-iceblue公司的免费Word控件,原因是它简单好用,而且我也使用的比较熟练了。接下来我还会研究它的其它功能,并用C#实现Office软件的其它功能。

第二步:遍历源word文档中的所有section并把它们的内容复制到目标word文档。

我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程序那就更好了。

 

Document doc2 = new Document();

在我的这个示例中,复制部分内容指的是复制一个word文档的部分段落(包括格式、图片和超链接等)到另一个word文档。

第二部分:复制全部内容

第三步:获取被复制文档doc1的第一个section以及第一、二个段落(图片和标题)。

C# 复制一个Word文档的部分或全部内容到另一个Word文档

结语:

Section s = doc1.Sections[0];
Paragraph p1 = s.Paragraphs[0];
Paragraph p2 = s.Paragraphs[1];

 

foreach (Section sec in sourceDoc.Sections)
{
    foreach (DocumentObject obj in sec.Body.ChildObjects)
    {
        destinationDoc.Sections[0].Body.ChildObjects.Add(obj.Clone());
    }
}

复制全部内容指的是将除header和footer以外的其他所有内容复制到另一个文档。

第二步:新建一个word文档对象doc2。

威尼斯正版官方网站 2                 

第四步:给doc2添加一个section,并将doc1的第一二段的内容和格式等复制到doc2中。

 

 

 

原文档截图:

Document doc1 = new Document();
doc1.LoadFromFile("sample.docx");

在word文档之间单独复制header和footer也可以实现的,如有需要可以在下面留言。

第一部分:复制部分内容:

 

第一步:新建两个word document对象,并加载待复制的源word文档和目标word文档。

 

目标文档效果图:

doc2.SaveToFile("copy.docx", FileFormat.Docx2010);
System.Diagnostics.Process.Start("copy.docx");

步骤参考:

destinationDoc.SaveToFile("target.docx");
System.Diagnostics.Process.Start("target.docx");

步骤参考:

 

第三步:保存并重启目标word文档。

威尼斯正版官方网站 3

 

威尼斯正版官方网站 4 

Section s2 = doc2.AddSection();
Paragraph NewPara1 = (Paragraph)p1.Clone();
s2.Paragraphs.Add(NewPara1);
Paragraph NewPara2 = (Paragraph)p2.Clone();
s2.Paragraphs.Add(NewPara2);

第一步:新建一个word文档对象doc1并加载需要复制的word文档。

Document sourceDoc = new Document("sample.docx");
Document destinationDoc = new Document("target.docx");

效果图:

 

 

扯远了,回到正题。复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只需要复制和粘贴就行了。这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个word文档,废话不多说,下面开始。

本文由威尼斯www.9778.com发布于编程人生,转载请注明出处:windows宗旨编程-Windows VC++编制程序难题,怎么着收获文件粘贴事件,在粘贴事件实践前做一些操作。威尼斯正版官方网

关键词:

C++ 向Excel中写字符串

我用的类是这几个:CApplicationapp;CWorkbookbook;//工作薄CWorkbooksbooks;//工作薄集合CWorksheetsheet;//工作表CWorksheetssheets;//工作...

详细>>

怎么使用com的回调

有2个类,CCDMAX和CCDMAXEvents。 classCCDMAX:publicCOleDispatchDriver{public:CCDMAX(){}//调用COleDispatchDriver默认构造函数CCDMAX(LPDISPAT...

详细>>

MFC操作word获取当前页的页码

COleVariantcovZero((short)0),covTrue((short)TRUE);wd.m_wdView.SetSeekView(10);//wdSeekCurrentPageFooter=10wd.m_wdParagraphFormat=wd.m_wdSel.GetParagrap...

详细>>

各位大佬,请帮忙看一下我这个程序,平台评测说是runtime erro

编了一个命令行输入式的矩阵计算器,是一个控制台程序,老师让改成可视化窗口式的程序,不太会,怎么在MFC中实...

详细>>