2013-05-11 26 views
0

我有一個全球註冊熱鍵的正常工作,該熱鍵裏面下面的代碼:我怎樣才能以清晰的方式將圖像添加到剪貼板並粘貼它們?

 { 
      Clipboard.SetDataObject(Properties.Resources.cookie); 
      SendKeys.SendWait("^v"); 
     } 

它添加了cookie的圖像到我的剪貼板並將其粘貼在不斷窗口被激活。但它只能在第一次正常工作並粘貼圖像。

我第二次獲得: 類型的 'System.Runtime.InteropServices.COMException' 第一次機會異常出現在System.Windows.Forms.dll中

這個彈出:

enter image description here

但是,只有當程序有這個選項時纔會彈出,否則沒有任何反應(但我仍然會遇到異常錯誤)。

但是,如果我手動按CTRL + V ...它屢試不爽:S

回答

0

Clipboard類有不同的方法,可能更好地爲你:

Clipboard.SetImage(...); 

當只設置DataObject ,你也可以指定對象的類型。這也是一個可行的選擇,可能工作方式完全相同,但使用適當的方法似乎......很合適。

另一個重要提示:

Clipboard法關於「單人公寓」線程唯一的工作,所以如果你不執行在UI線程上的動作,你應該確保線程的狀態設置爲STA

+0

我剛剛注意到剪貼板中的未壓縮位圖版本是10倍大。是否有可能將實際的png保存到剪貼板而不是圖像數據? – user2078674 2013-05-11 15:20:25

+0

您可以嘗試使用一些Windows API,但它可能會像'Clipboard.SetImage'方法一樣工作。當你說10倍大,你的意思是寬度和高度? – SimpleVar 2013-05-11 15:21:59

+0

沒有kb,如果使用剪貼板查看器(http://www.thewindowsclub.com/windows-clipboard-manager-viewer)將圖像加載到剪貼板,然後將圖像從剪貼板查看器保存爲200k而不是20k。我需要它儘可能小...(因爲剪貼板中的圖像被解壓縮?)。順便說一句:SetImage給出了相同的結果。 – user2078674 2013-05-11 15:25:18