DOBON.NET DOBON.NETプログラミング掲示板過去ログ

MoveFileWithProgressを使いたいのですが

環境/言語:[XP VB.net 2003]
分類:[.NET]

DVDにデータを移動する進捗を出したいのでMoveFileWithProgressというWIN32API
を使おうと思ったのですが、WIN32API自体も使ったことがない為よくわかりません。
WEB上での情報集めも限界を感じたのでどなたか少しでも良いので情報をもらえないでしょうか
お世話になります。

■No17853に返信(BlackWingさんの記事)
> DVDにデータを移動する進捗を出したいのでMoveFileWithProgressというWIN32API
> を使おうと思ったのですが、WIN32API自体も使ったことがない為よくわかりません。
> WEB上での情報集めも限界を感じたのでどなたか少しでも良いので情報をもらえないでしょうか

PINVOKE
http://www.pinvoke.net/default.aspx/kernel32/MoveFileWithProgress.html
で見つかったのを VB に翻訳しただけですけども。

Imports System.Runtime.InteropServices

...

Private Enum CopyProgressCallbackReason As UInteger
CALLBACK_CHUNK_FINISHED = &H0
CALLBACK_STREAM_SWITCH = &H1
End Enum

Private Enum CopyProgressResult As UInteger
PROGRESS_CONTINUE = 0
PROGRESS_CANCEL = 1
PROGRESS_STOP = 2
PROGRESS_QUIET = 3
End Enum

Private Delegate Function CopyProgressRoutine(ByVal TotalFileSize As Long, _
ByVal TotalBytesTransferred As Long, _
ByVal StreamSize As Long, _
ByVal StreamBytesTransferred As Long, _
ByVal dwStreamNumber As System.UInt32, _
ByVal dwCallbackReason As CopyProgressCallbackReason, _
ByVal hSourceFile As IntPtr, _
ByVal hDestinationFile As IntPtr, _
ByVal lpData As IntPtr) _
As CopyProgressResult

Private Enum MoveFileFlags
MOVEFILE_REPLACE_EXISTING = &H1
MOVEFILE_COPY_ALLOWED = &H2
MOVEFILE_DELAY_UNTIL_REBOOT = &H4
MOVEFILE_WRITE_THROUGH = &H8
MOVEFILE_CREATE_HARDLINK = &H10
MOVEFILE_FAIL_IF_NOT_TRACKABLE = &H20
End Enum

<DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function MoveFileWithProgress( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal lpProgressRoutine As CopyProgressRoutine, _
ByVal lpData As IntPtr, _
ByVal dwFlags As MoveFileFlags) As Boolean
End Function


サンプルは、VB6 ですけれども、
http://hem.spray.se/mattias.sjogren/samples_en/index.html

IProgressDialog が参考になるのでは。
■No17859に返信(なおこ(・∀・)さんの記事)

返信ありがとうございます。
いかんせん時間が無かったため周りの人に助力をいただき
違う方法を使いました。
今後、同じような場面にまた出くわすと思うので、参考にして
使いこなせるようにがんばりたいと思います。

DOBON.NET | プログラミング道 | プログラミング掲示板