タイトル | エクスプローラにドロップしてファイルのコピー・移動をする |
対象言語 | 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. |