• 大小: 92KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: C#
  • 标签: emf剪贴板  

资源简介

从剪贴板提取EMF图元文件并保存的C#工程,绝对有用!

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;//Dllimport
using System.IO;

namespace 剪贴板监控
{
public partial class Form1 : Form
{
//private const int WM_DRAWCLIPBOARD = 776;
RichTextBox richTextBox1;
//Container componentss = null;
int count;

IntPtr nextClipboardViewer;

[DllImport(“User32.dll“)]
protected static extern int SetClipboardViewer(int hWndNewViewer);

[DllImport(“User32.dll“ CharSet = CharSet.Auto)]
public static extern bool ChangeClipboardChain(IntPtr hWndRemoveIntPtr hWndNewNext);

[DllImport(“user32.dll“ CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hwnd int wMsgIntPtr wParam IntPtr lParam);

[DllImport(“user32.dll“ CharSet = CharSet.Auto)]
public static extern int EnumClipboardFormats(UInt32 format);

//读取数据
[DllImport(“user32.dll“)]
public static extern IntPtr GetClipboardData(uint uFormat);
//拷贝文件
[DllImport(“gdi32.dll“)]
public static extern IntPtr CopyEnhmetaFile(IntPtr hEmf string s);
//打开剪贴板
[DllImport(“user32.dll“)]
public static extern bool OpenClipboard(IntPtr ptr);
//关闭剪贴板
[DllImport(“user32.dll“)]
public static extern bool CloseClipboard();

public enum ClipboardFormats : uint
{
CF_TEXT=1
CF_BITMAP=2
CF_metaFILEPICT=3
CF_SYLK=4
CF_DIF=5
CF_TIFF=6
CF_OEMTEXT=7
CF_DIB=8
CF_PALETTE=9
CF_PENDATA=10
CF_RIFF=11
CF_WAVA=12
CF_UNICODETEXT=13
CF_ENHmetaFILE=14


}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
// defined in winuser.h
const int WM_DRAWCLIPBOARD = 0x308;
const int WM_CHANGECBCHAIN = 0x030D;

switch (m.Msg)
{
case WM_DRAWCLIPBOARD:
DisplayClipboardData();
SendMessage(nextClipboardViewer m.Msg m.WParamm.LParam);
break;

case WM_CHANGECBCHAIN:
if (m.WParam == nextClipboardViewer)
nextClipboardViewer = m.LParam;
else
SendMessage(nextClipboardViewer m.Msg m.WParamm.LParam);
break;

default:
base.WndProc(ref m);
break;
}
}

void DisplayClipboardData()
{
//metafile mf;

try
{
IDataobject iData = new Dataobject();
iData = Clipboard.GetDataobject();


if (iData.GetDataPresent(DataFormats.Rtf))
richTextBox1.Rtf = (string)iData.GetData(DataFormats.Rtf);
else if (iData.GetDataPresent(DataFormats.Text))
richTextBox1.Text = (string)iData.GetData(DataFormats.Text);
else if (iData.GetDataPresent(DataFormats.metafilePict))
{
richTextBox1.Text = “是metafile“;
saveEMF();
}
else if (iData.GetDataPresent(DataFormats.FileDrop))
{
string[] ss=(string[]) iData.GetData(DataFormats.FileDrop);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-05-09 18:10  剪贴板监控\
     目录           0  2014-05-09 18:10  剪贴板监控\剪贴板监控\
     文件         891  2014-05-09 18:10  剪贴板监控\剪贴板监控.sln
     文件       17920  2014-05-10 23:01  剪贴板监控\剪贴板监控.suo
     目录           0  2014-05-09 18:09  剪贴板监控\剪贴板监控\bin\
     目录           0  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\
     目录           0  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\
     文件       25748  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\0.emf
     文件       25748  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\1.emf
     文件       25748  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\2.emf
     文件       25748  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\3.emf
     文件       25748  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\4.emf
     文件       25748  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\emf\5.emf
     文件       11776  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\剪贴板监控.exe
     文件       30208  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\剪贴板监控.pdb
     文件       11600  2014-05-10 22:56  剪贴板监控\剪贴板监控\bin\Debug\剪贴板监控.vshost.exe
     文件         490  2010-03-17 22:39  剪贴板监控\剪贴板监控\bin\Debug\剪贴板监控.vshost.exe.manifest
     目录           0  2014-05-09 18:09  剪贴板监控\剪贴板监控\bin\Release\
     文件        5206  2014-05-10 22:56  剪贴板监控\剪贴板监控\Form1.cs
     文件        1791  2014-05-10 22:39  剪贴板监控\剪贴板监控\Form1.Designer.cs
     文件        5817  2014-05-10 22:39  剪贴板监控\剪贴板监控\Form1.resx
     目录           0  2014-05-09 18:09  剪贴板监控\剪贴板监控\obj\
     目录           0  2014-05-09 18:09  剪贴板监控\剪贴板监控\obj\x86\
     目录           0  2014-05-10 22:56  剪贴板监控\剪贴板监控\obj\x86\Debug\
     文件        2152  2014-05-09 13:16  剪贴板监控\剪贴板监控\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        6223  2014-05-10 22:56  剪贴板监控\剪贴板监控\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件         604  2014-05-10 22:39  剪贴板监控\剪贴板监控\obj\x86\Debug\GenerateResource.read.1.tlog
     文件        1096  2014-05-10 22:39  剪贴板监控\剪贴板监控\obj\x86\Debug\GenerateResource.write.1.tlog
     目录           0  2014-05-09 18:09  剪贴板监控\剪贴板监控\obj\x86\Debug\TempPE\
     文件        2379  2014-05-10 22:56  剪贴板监控\剪贴板监控\obj\x86\Debug\剪贴板监控.csproj.FileListAbsolute.txt
     文件       11776  2014-05-10 22:56  剪贴板监控\剪贴板监控\obj\x86\Debug\剪贴板监控.exe
............此处省略13个文件信息

评论

共有 条评论

相关资源