ClipBoard在运行时不起作用

时间:2013-06-24 07:49:19

标签: vb.net clipboard

我之前问过Question,但似乎没有人可以回答。 所以,我现在改变了我的问题。我发现实际上这个代码工作并将图片复制到剪贴板。但是当代码在WinXp上运行时,它似乎无法正常工作,甚至无法检测到Clipboard.ContainImage。那么有谁知道如何解决这个或任何指南?

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

更新

实际上我在这些代码中没有错误。但问题是。当我在Win XP上运行此应用程序时。 Clipboard.ContainsImage无法检测到我的PictureBox无法获取剪贴板中包含的图像。我试图粘贴到Paint,它可以,但是通过程序运行,它不能。在Win 7中运行时,运行良好。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您无法(可靠地)期望将数据复制到剪贴板,然后立即将其粘贴。其他应用程序正在对剪贴板更新做出反应,同时可能会发生很多其他应用程序。您可能/可能无法粘贴图像,因为某些其他应用程序已打开剪贴板进行粘贴。您可以在复制后引入sleep(),然后躲开它。 请记住,以这种方式使用剪贴板是不礼貌的。提供剪贴板是为了方便用户而不是PROGRAMMER。

答案 2 :(得分:-1)

尝试替换

的所有实例
sp.copy()

my.computer.clipboard.setimage(sp)

可以在此处找到setImage方法文档:http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setimage.aspx