Tag: 剪贴板

C# – System.Windows.Forms.Clipboard.GetDataObject()没有响应

有没有人知道为什么System.Windows.Forms.Clipboard.GetDataObject()在从主线程中调用System.Windows.Forms.Clipboard.Clear()之后从另一个线程调用它并且在主线程停止之前没有返回? 我写了一个示例程序来解释我的问题: public class ClipboardDemo { [STAThread] public static void Main(string[] args) { Thread.CurrentThread.Name = “MAIN_THREAD”; Thread clipboardViewerThread = new Thread(RunClipboardViewer); clipboardViewerThread.Name = “CLIPBOARD_VIEWER_THREAD”; clipboardViewerThread.SetApartmentState(ApartmentState.STA); Thread clipboardClearerThread = new Thread(RunClipboardClearer); clipboardClearerThread.Name = “CLIPBOARD_CLEARER_THREAD”; clipboardClearerThread.SetApartmentState(ApartmentState.STA); Console.WriteLine(“Starting ” + clipboardViewerThread.Name + “, expecting initial WM_DRAWCLIPBOARD message…”); clipboardViewerThread.Start(); Thread.Sleep(1000); Console.WriteLine(“Clearing clipboard from ” + clipboardClearerThread.Name + “, expecting […]

将剪贴板中的文本发送到应用程序,如记事本(C#或Powershell)

我希望能够将剪贴板(在Windows中)上的文本发送到应用程序。 例如,我正在写一个记事本中的文本文件,我想将一部分复制到一个新文件中..我想将它复制到剪贴板然后使用热键启动发送的应用程序或powershell脚本将文本复制到记事本的新实例。 如何在C#或Powershell中实现这一目标? 解决方案:使用AutoHotKey ^+c:: Send ^c Run Notepad WinWait Untitled – Notepad WinActivate Send ^v return

Clipboard.SetText(HTML)不再有效

我有一个代码,它在HTML标签之间添加某些生成的字符串,并使用HTML数据设置剪贴板。 如果我不是疯了但我确信此代码之前对我有用,没有对它进行任何更改,但它不再起作用了! 我找到了Clipboard HTML的文档并采用了这个例子,在下面进行了测试,它也不适用于我。 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim meh As String = _ “Version:0.9” & vbCrLf & _ “StartHTML:71” & vbCrLf & _ “EndHTML:160” & vbCrLf & _ “StartFragment:130” & vbCrLf & _ “EndFragment:150” & vbCrLf & _ “StartSelection:130” & vbCrLf & _ “EndSelection:150” & vbCrLf & _ […]

Clipboard.GetText会覆盖剪贴板吗?

这就是我想要做的事情:当我按下Ctrl-C时,有一些游戏会将鼠标光标下的项目信息写入剪贴板。 我试图抓住这些信息并从中选择一些我需要的东西。 我这样做: //at form load RegisterHotKey(this.Handle, 0, 0x002, (int)Keys.C); protected override void WndProc(ref Message m) { if (m.Msg == 0x0312) { int id = m.WParam.ToInt32(); if (id == 0) { System.Threading.Thread.Sleep(155); //ive thought if i add some delay it would help but it doesnt… string textFromClipboard = Clipboard.GetText(); if (textFromClipboard.Contains(“Itemlevel: “)) { // do […]

C#保存,然后通过剪贴板恢复数据

好的, 所以我有一个程序可以自动将数据复制到剪贴板然后复制到内存中。 我想要做的是,在我的程序运行之前保存剪贴板上的数据,然后在完成我需要做的事情之后将其复制回剪贴板。 我可以从剪贴板中获取数据: IDataObject currentClipboard = Clipboard.GetDataObject(); 但是,当我想将数据重新放回剪贴板时,我是否需要知道数据的格式是什么? 有没有办法做到这一点? 谢谢。

使用剪贴板的C#multithreading应用程序

我正在研究multithreading应用程序,我遇到了必须使用剪贴板的问题(我正在使用Qlikview API – 我需要将表复制到excel中)问题是我认为会发生什么是这样的:在线程#1上我打开QW文档并复制表,在我将它粘贴到excel表之前,线程#2出现并使用剪贴板从其文档中复制表。 我很好奇是否可以使用multithreading应用程序中的剪贴板? 我已经阅读了有关使用剪贴板的各种事情,我理解的唯一明确的事情是该方法必须是STA(?)。 所以我现在很困惑。 谢谢

如何保存剪贴板的副本然后还原到它?

我正在通过模拟高亮和复制文本所需的按键来在文本框中阅读单词。 当我完成后,我希望剪贴板正是我找到它的方式。 我希望我能做到这样的事情: IDataObject clipboardBackup = Clipboard.GetDataObject(); Clipboard.Clear(); //Save other things into the clipboard here, etc// Clipboard.SetDataObject(clipboardBackup); 但这似乎不起作用。 看起来你可以走专门尝试文本,音频,图片等的路线,然后相应地保存它们。 (我猜’数据对象’在我的例子中也是专门的,我希望它是通用的。) 我不希望对每种可能类型的剪贴板数据都使用案例,既要更简洁,又要确保不管格式如何都不会丢失数据。 抓住任何和所有剪贴板然后恢复它的任何提示?

在活动窗口中获取所选项目

我正在使用C#开发一个与剪贴板一起工作的应用程序,想知道是否可以获取用户在当前窗口中选择的内容,无论它是什么窗口(例如可能是FireFox,记事本等) )。

从剪贴板中获取Word ML

我正在拦截richtextbox的粘贴事件,以便在粘贴之前处理内容。 如果它包含表格或图像等我需要做一些自定义的东西。 如果复制的选择来自Word 2010并且由混合内容(例如,文本和表格/图像)组成,则Word会以多种格式将内容放置在剪贴板上。 这些包括HTML和RTF,但我宁愿使用WordML。 我使用ClipSpy检查实际放在剪贴板上的格式和数据,“嵌入源”格式似乎是包含WordML的格式。 我认为这可以作为一个包打开: var stream = Clipboard.GetData(“Embed Source”) as MemoryStream; var package = Package.Open(stream); 它抛出一个EndOfStreamException,我认为migth被包装在其他东西中。 我可以将流写入磁盘并使用7-zip打开它,看看内容是否符合预期。 所以基本上有两个问题:“嵌入源代码”是否是正确的DataObject来获取WordML? 如果是,我该如何反序列化呢?

允许用户从图片框中复制图像并将其保存到任何地方

在我的应用程序中,我有一个显示图像的pictureBox 。 当用户右键单击pictureBox并从上下文菜单中选择Copy ,我想将图像复制到剪贴板中,以便用户可以将其粘贴到文件夹和其他任何位置。 我怎样才能做到这一点? 编辑:我使用此代码但该用户只能将图像粘贴到word中。 var img = Image.FromFile(pnlContent_Picture_PictureBox.ImageLocation); Clipboard.SetImage(img);