2013-06-24 78 views
1

我以前問過Question,但似乎沒有人能回答它。 所以,我現在改變我的問題。我發現實際上這個代碼工作並將圖片複製到剪貼板。但是,當代碼在WinXp上運行時,即使無法檢測到Clipboard.ContainImage,它似乎也無法正常工作。那麼有誰知道如何解決這個或任何指南?ClipBoard在運行時不起作用

For Each sp As EXCEL.Shape In xlsheet.Shapes 
        sp.Copy() 
        picname = sp.Name 
        If Strings.Left(picname, 5) = "Group" Then 
         If My.Computer.Clipboard.ContainsImage Then 
          xlPic = My.Computer.Clipboard.GetImage 
          PictureBox1.Image = xlPic 
          ImageList1.Images.Add(xlPic) 
         Else 
          sp.Copy() 
          xlPic = My.Computer.Clipboard.GetImage 
          PictureBox1.Image = xlPic 
          ImageList1.Images.Add(xlPic) 
         End If 
        End If 
       Next 

UPDATE

其實我得到了這些代碼沒有錯誤。但問題是。當我在Win XP上運行這個應用程序。 Clipboard.ContainsImage無法檢測到,並且我的PictureBox無法獲取剪貼板中包含的圖像。我試圖粘貼到Paint,它可以,但通過程序運行,它不能。在Win 7中運行時,運行良好。

+0

你得到了什麼錯誤,當您嘗試運行呢? – 5uperdan

+0

我更新了問題 – Kasnady

回答

0

你不能(可靠)預計將數據複製到剪貼板然後立即能夠粘貼它。其他應用程序正在對剪貼板更新作出反應,並且在此期間可能發生很多事情。您可能/可能無法粘貼圖像,因爲其他應用程序已打開剪貼板進行粘貼。你可以在複製之後引入一個sleep(),然後避開它。 請記住,以這種方式使用剪貼板是不切實際的。提供剪貼板是爲了方便用戶,而不是PROGRAMMER。

+0

對於你所說的,我很明白。其實我已經測試剪貼板,因爲它是我想要的或沒有。它實際上包含了我的內容。問題是爲什麼它不能在Win XP上工作。我通過關閉除我的程序之外的所有軟件進行測試] – Kasnady

1

試試這個,它爲我工作與Win XP,VS2010和Excel2007中:

appExcel = CreateObject("Excel.Application") 
wbExcel = appExcel.Workbooks.Open(Filename) 
wsExcel = wbExcel.Worksheets(1) 

For Each oShape As Shape In wsExcel.Shapes 

        If oShape.Name.StartsWith("Picture") Then 
         Clipboard.Clear() 
         oShape.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap) 

         If Clipboard.ContainsImage() Then 
          Dim img As Image 
          img = Clipboard.GetImage() 
          PictureBox1.Image = img 
          PictureBox1.Visible = True 
          Exit For 
        End If 
       Next oShape 
相關問題