簡體   English   中英

如何將自定義格式添加(附加)到剪貼板

[英]how can i add (append) custom format to clipboard

我嘗試創建一個剪貼板監控程序,我需要檢測何時從我的應用程序中設置數據,然后我可以忽略它們,為此,我嘗試將自定義格式添加到剪貼板,因此首先使用以下代碼注冊新格式:

 int iii = RegisterClipboardFormat("ClipboardManagerIgnoreItem");


[DllImport("user32.dll")]
private static extern int RegisterClipboardFormat(string Format);

然后在將dataobject設置為剪貼板之前,將新格式設置為dataobject,如下所示:

 var data = dic_clip[key];//get source data 
 var data2 = data as DataObject;
 data2.SetData("ClipboardManagerIgnoreItem",false, "");//add new format 

最后將數據設置到剪貼板:

Clipboard.SetDataObject(data2, true);

但是在設置之前和之后,當我在應用程序中檢查剪貼板數據時,我沒有任何自定義格式!

var dt = data2.GetFormats(false);

怎么了 ?

據我所知,不需要“注冊”自定義剪貼板類型。 這些類型只是字符串,應用程序將只采用他們仍然知道的類型。 如果要將自定義程序中的自定義數據放在剪貼板上,則可以使用使用[Serializable]屬性的類 ,並按對象類型進行操作,也可以將其作為原始字節流放在剪貼板上。

此答案詳細說明了這兩種方法。 最初的示例是Byte[]對象,但是任何可序列化的類都應該起作用,並且在您的情況下,我假設您需要自定義類。

我個人從未嘗試過回收從剪貼板中獲得的DataObject ,而僅向其中添加新的東西,但是我想那可能行得通。 當然,其他程序會清除它,但是我認為這很重要,您可以執行此操作以指示您的工具是否已掃描了當前剪貼板數據。 我可以看到這將是一種有效的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM