Qualcuno mi sa dare qualche info di base su come usare la API ShFileOperation?
Grazie
:master:
Qualcuno mi sa dare qualche info di base su come usare la API ShFileOperation?
Grazie
:master:
È un casino. Devi usare pesantemente gli attributi di PInvoke per definire tutte le strutture necessarie; se possibile, è meglio evitarla, a meno di non stare usando C o C++, nel qual caso invece si rivela molto comoda.
Amaro C++, il gusto pieno dell'undefined behavior.
Io ho semplicemente bisogno che durante la copia di alcunui file il mio programma visualizza la progressionbat di windows XP....
è cosi incasinato??...help!![]()
![]()
![]()
![]()
![]()
Se mi dai un paio di giorni cerco il libro su cui avevo visto del buon codice di esempio... sarà comunque un casino, mi ricordo che questa API era portata come API difficilissima da chiamare da .NET per come sono allineati i membri della struttura.
Amaro C++, il gusto pieno dell'undefined behavior.
Codice preso dal libro programmare vb.net 2003 di balena:
Private Declare Ansi Function SHFileOperation Lib “shell32.dll” _
Alias “SHFileOperationA” (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer
<StructLayout(LayoutKind.Explicit)> _
Private Structure SHFILEOPSTRUCT
<FieldOffset(0)> Public hwnd As IntPtr
<FieldOffset(4)> Public wFunc As Integer
<FieldOffset(8)> Public pFrom As String
<FieldOffset(12)> Public pTo As String
<FieldOffset(16)> Public fFlags As Short
<FieldOffset(18), MarshalAs(UnmanagedType.Bool)> _
Public fAnyOperationsAborted As Boolean
<FieldOffset(22)> Public hNameMappings As Integer
<FieldOffset(26)> Public lpszProgressTitle As IntPtr
End Structure
Function CopyFile(ByVal source As String, ByVal dest As String) As Integer
Dim sh As SHFILEOPSTRUCT
sh.wFunc = 2
sh.hwnd = IntPtr.Zero
sh.pTo = dest
sh.pFrom = source & ControlChars.NullChar
sh.fFlags = &H48
Dim res As Integer = SHFileOperation(sh)
If res = 0 Then
Return 0
ElseIf sh.fAnyOperationsAborted Then
Return 1
Else
Return 2
End If
End Function
Select Case CopyFile(“c:\Docs\*.*", “c:\Backup”)
Case 0: MessageBox.Show(“All files were copied correctly.”)
Case 1: MessageBox.Show(“User canceled the operation.”)
Case 2: MessageBox.Show(“An error occurred.”)
End Select
![]()
--------------------HkProj------------------
Ecco, è quel libro lì!
Amaro C++, il gusto pieno dell'undefined behavior.