从Outlook附件拖放到VB6应用程序

时间:2010-07-27 16:41:47

标签: vb6 outlook drag-and-drop ole

我正在尝试从Outlook电子邮件附件拖放到自定义应用程序。它适用于C#,但现在我想让它在VB6中运行。我的测试代码看起来像这样:

Private Sub grdLis_OLEDragDrop(Data As MSFlexGridLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim FileDropped As String * 256
Dim lCF_FILEGROUP As Long
Dim CF_FILEGROUP As Integer
Dim lCF_FILECONTENTS As Long
Dim CF_FILECONTENTS As Integer
Dim bData() As Byte
Dim bFileNameData(256) As Byte
Dim bData2() As Byte

  lCF_FILEGROUP = RegisterClipboardFormat("FileGroupDescriptor")
  MoveMemory CF_FILEGROUP, lCF_FILEGROUP, 2

  bData() = Data.GetData(CF_FILEGROUP)

  j = 0
  For i = 76 To 76 + 256
    bFileNameData(j) = bData(i)
    j = j + 1
  Next i
  FileDropped = Trim(StrConv(bFileNameData, vbUnicode))

  lCF_FILECONTENTS = RegisterClipboardFormat("FileContents")
  MoveMemory CF_FILECONTENTS, lCF_FILECONTENTS, 2

  bData2() = Data.GetData(CF_FILECONTENTS)

这可以获取文件名,但它会在Data.GetData(CF_FILECONTENTS)调用时抛出异常,并且错误消息显示“自动化错误无效”。

我在VB6上没有太多经验,我不知道该错误消息的含义或操作方法。任何帮助或见解将不胜感激。

1 个答案:

答案 0 :(得分:2)

查看Get dropped attachments from Outlook messages了解更多提示。它大量使用OLE。