hi,
ich möchte die API Call scripte in AutoIT übernehmen.
ich sehe selber das dort etwas fehlt doch wie setze ich es weiter um ?
oder ist mein kompletter anfang falsch ?
das script soll eine datei in den papierkorb verschieben.
Spoiler anzeigen
Das Script
API Declarations ' Structures
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 Long
End Type
' API
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
' Contants
Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10 ' Responds with "yes to all" for any dialog box that is displayed.
Private Const FOF_SILENT = &H4 ' Does not display a progress dialog box.
Module 'Move the file to the recycle bin
Public Sub SendFileToRecycleBin(FileName As String, Optional Confirm As Boolean = True, Optional Silent As Boolean = False)
Dim FileOp As SHFILEOPSTRUCT
'fills the file operation structure
With FileOp
.wFunc = FO_DELETE
.pFrom = FileName
.fFlags = FOF_ALLOWUNDO
If Not Confirm Then .fFlags = .fFlags + FOF_NOCONFIRMATION
If Silent Then .fFlags = .fFlags + FOF_SILENT
End With
SHFileOperation FileOp
End Sub
Usage ' Usage:
Private Sub Command1_Click()
SendFileToRecycleBin "C:\filename.ext", False
End Sub
Alles anzeigen
Spoiler anzeigen
Mein Script
[autoit]Global Const $FO_DELETE = "&H3" ;$FO_DELETE = 0x0003
Global Const $FOF_ALLOWUNDO = "&H40" ;$FOF_ALLOWUNDO = 0x0040
Global Const $FOF_NOCONFIRMATION = "&H10" ;$FOF_NOCONFIRMATION = 0x0010
Global Const $FOF_SILENT = "&H4" ;$FOF_SILENT = 0x0004
;Global $SHFILEOPSTRUCT
[/autoit] [autoit][/autoit] [autoit]Func SHFileOperation($FileOp)
$result = DllCall("shell32.dll", "none", "SHFileOperationA" _
,"long","hwnd" _
,"long","wFunc" _
,"str","pFrom" _
,"str","pTo" _
,"int","fFlags" _
,"long","fAnyOperationsAborted" _
,"long","hNameMappings" _
,"long","lpszProgressTitle" _
)
;DllStructCreate("long;long;str;str;int;long;long;long")
EndFunc
Func _SendFileToRecycleBin($FileName = "", $Confirm = True, $Silent = False)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Dim $FileOp
[/autoit] [autoit][/autoit] [autoit]With $FileOp
.wFunc = $FO_DELETE
.pFrom = $FileName
.fFlags = $FOF_ALLOWUNDO
If Not $Confirm Then .fFlags = .fFlags & $FOF_NOCONFIRMATION
If $Silent Then .fFlags = .fFlags & $FOF_SILENT
EndWith
SHFileOperation($FileOp)
EndFunc
[/autoit] [autoit][/autoit] [autoit]_SendFileToRecycleBin(@ScriptDir & "test.txt" ,False)
[/autoit]mir ist bewusst das man einfach FileRecycle() nehmen könnte aber mir geht es mehr darum es zuverstehen und es selbst zu machen...
mfg
u17