タイトル エクスプローラにドロップしてファイルのコピー・移動をする
対象言語 VB5.0以降
動作確認OS Windows95,98
使用関数
改築日 1999/08/24(1999/02/14)
Source Download

エクスプローラにドロップしてファイルをコピー・移動をさせます。


クリップボードにファイル型のデータオブジェクトを作成するだけで、
後はエクスプローラにドロップすると、コピー・移動処理はエクスプローラが
やってくれます。

ドロップの際、
コピー元とコピー先のドライブが同じ場合、
デフォルトで「移動」
[Ctrl]キーを押すと「コピー」

別ドライブの場合、
デフォルトで「コピー」、
[Shift]キーを押すと「移動」になります。

下のサンプルは、ファイルリストボックス内にファイルをエクスプローラにドロップすると、
ファイルのコピー・移動をします。

NTの場合、処理は完了しますが、なぜかエラーが出ます。
この件について情報をお持ちの方、是非教えて下さい。

1. フォームを作成しディレクトリボックス(Dir1)、ファイルリストボックス(File1)を貼り付けてください。


Option Explicit
Private Const vbDropEffectLink = 4

Private Sub Dir1_Change()

  With Me!File1
    .Path = Dir1
    .MultiSelect = 2
    .DragMode = 0
  End With

End Sub


Private Sub File1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'ドラッグ開始
  If Button = vbLeftButton Then
    File1.OLEDrag
  End If

End Sub


Private Sub File1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)

  Dim File As String
  Dim i As Integer

'クリップボードのDataObjectオブジェクト内 Files型の初期化
  Data.Files.Clear

  For i = 0 To File1.ListCount - 1
    If File1.Selected(i) = True Then
      If Right$(Dir1, 1) = "\" Then
        File = Dir1 & File1.List(i)
      Else
        File = Dir1 & "\" & File1.List(i)
      End If
      If Dir(File) <> vbNullString Then
      'クリップボードに Files型のデータを作成
        Data.SetData , vbCFFiles
        Data.Files.Add File
      End If
    End If
  Next

'コピー、移動を可能とし、同じドライブ内なら移動、違うドライブならコピー
  AllowedEffects = vbDropEffectCopy Or vbDropEffectMove Or vbDropEffectLink

End Sub





Copyright (C)1997-2001 空耳工房 MY2Project All rights reserved.