Hallo,
wie kann man unter Windows mit AutoIt eine Dateiendung samt Icon per Registry registrieren?
Hallo,
wie kann man unter Windows mit AutoIt eine Dateiendung samt Icon per Registry registrieren?
So trägst Du eine Dateiendung in die Registry ein:
;===============================================================================
; Requirement(s): keine
; Return Value(s): bei Erfolg: 1
; bei Fehler: 0 und @error = 1
;===============================================================================
$sFileType = ".abc" ; Dateierweiterung
$sDescription = "Tool" ; Beschreibung für die Datei
$sAppName = "" ; Anwendung für die Registriert werden
; soll, wird keine Anwendung angegeben
; wird die aktuelle Anwendung eingetragen
_RegisterFileType($sFileType, $sDescription, $sAppName)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _RegisterFileType($sFileType, $sDescription, $sAppName = "")
Dim $sTypeName
If $sFileType = "" Or $sDescription = "" Then
SetError(1)
Return 0
EndIf
If $sAppName = "" Then $sAppName = @ScriptFullPath
$sFileType = StringLower($sFileType)
If StringLeft($sFileType,1) <> "." Then
$sTypeName = $sFileType
$sFileType = "." & $sFileType
Else
$sTypeName = StringRight($sFileType, StringLen($sFileType) -1)
EndIf
$sTypeName = $sTypeName & "file"
RegWrite("HKEY_CLASSES_ROOT\" & $sFileType, "", "REG_SZ", $sTypeName)
RegWrite("HKEY_CLASSES_ROOT\" & $sTypeName, "", "REG_SZ", $sDescription)
RegWrite("HKEY_CLASSES_ROOT\" & $sTypeName & "\shell\open\command", "", "REG_SZ", $sAppName & " %1")
RegWrite("HKEY_CLASSES_ROOT\" & $sTypeName & "\DefaultIcon", "", "REG_SZ", $sAppName & ",0")
SetError(0)
Return 1
EndFunc
Ich meine das dieses von "bernd670" geschrieben wurde.
Danke Alina. Muss man dafür den Computer neustarten oder kann man den Explorer irgendwie aktualisieren?
Wenn man Explorer.exe beendet und wieder startet wird diese Einstellung übenommen aber wie kann man das anders machen?
DU kannst doch sicherlich den aktuellen Pfad wo Du gerade mit dem Explorer bst speichern und dann den Neustart durch laufen lassen un dann wieder den im Pfad angegebenen Bereich starten. Oder?
Das wäre möglich, aber irgendwie auch umständlich. Aber wenn ich immer neue Prpgramme installiere flackert das Desktop einmal und schon sind die Dateierweiterungen registriert. Wie soll man das denn mit AutoIt machen? Per DllCall!?!
Ich würde einfach ProcessClose("explorer.exe") und dann Run("explorer.exe") ausführen, wo ist der Unterschied?
Processclose und Run ist die Holzhammermethode. Das muss doch auch etwas ausgeklügelter funktionieren..
versuch mal das
[autoit]Func _RefreshIcons()
; Prog@ndy
; found information on http://www.codeproject.com/script/Forums/…985#xx2972025xx
Local Const $SHCNE_ASSOCCHANGED = 0x8000000
Local Const $SHCNF_IDLIST = 0
DllCall("shell32.dll", "none", "SHChangeNotify", "long", $SHCNE_ASSOCCHANGED, "uint", $SHCNF_IDLIST, "ptr", 0, "ptr", 0)
EndFunc
Danke progandy. Funktioniert genau so wie ich es mir vorgestellt habe.