VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/03/01(Tue) 22:30
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^3: SHFileOperation

fAnyOperationsAborted As Integer の後続の アライメント調整が必要なのでは?


手元にWin2000環境が無いので確認できませんが、
こんな感じで取得できないでしょうか。

Option Explicit

Private Const FO_COPY As Long = &H2&

Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String
End Type

'Private Declare Function SHFileOperation Lib "shell32" Alias "SHFileOperationA" _
    (ByRef lpFileOp As SHFILEOPSTRUCT) As Long

Private Declare Function SHFileOperationForBin Lib "shell32" Alias "SHFileOperationA" _
    (ByRef lpFileOp As Byte) As Long

Private Declare Sub MoveMemory Lib "KERNEL32" Alias "RtlMoveMemory" _
    (ByRef Dest As Any, ByRef Source As Any, ByVal length As Long)

Private Sub Form_Load()
    Dim sh          As SHFILEOPSTRUCT
    Dim lngRet      As Long
    
    'FD出力
    With sh
        .hWnd = Me.hWnd
        .wFunc = FO_COPY
        .pFrom = "C:\test.dat"
        .pTo = "A:\test.dat"
    End With
    
    Dim forVB(31) As Byte, forAPI(29) As Byte
    MoveMemory forVB(0), sh, 32
    MoveMemory forAPI(0), forVB(0), 18
    MoveMemory forAPI(18), forVB(20), 12

    lngRet = SHFileOperationForBin(forAPI(0))

    Erase forVB
    MoveMemory forVB(0), forAPI(0), 18
    MoveMemory forVB(20), forAPI(18), 12
    MoveMemory sh, forVB(0), 32
    
    If lngRet = 0 And sh.fAnyOperationsAborted = 0 Then
        MsgBox "コピー完了!"
    End If
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -