Hi,
ich bin momentan am testen von Win 7 Ultimate RC 64bit.
Da habe ich dieses kleine Skript, welches die Desktopicons speichert und wiederherstellt.
Spoiler anzeigen
#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]$inifile = "IconFreezer.ini"
WinActivate("Program Manager")
WinWaitActive("Program Manager")
$hWnd_LV = ControlGetHandle("[CLASS:Progman]", "", "SysListView321")
If Not FileExists($inifile) Then
_SaveIcons()
Else
_RestoreIcons()
EndIf
Func _SaveIcons()
FileClose(FileOpen($inifile, 2))
For $i = 0 To _GUICtrlListView_GetItemCount($hWnd_LV) - 1
$iconposx = _GUICtrlListView_GetItemPositionX($hWnd_LV, $i)
$iconposy = _GUICtrlListView_GetItemPositionY($hWnd_LV, $i)
$iconname = _GUICtrlListView_GetItemText($hWnd_LV, $i)
IniWriteSection($inifile, $iconname, "X=" & $iconposx & @LF & "Y=" & $iconposy)
Next
EndFunc ;==>_SaveIcons
Func _RestoreIcons()
For $i = 0 To _GUICtrlListView_GetItemCount($hWnd_LV) - 1
$iconpos = IniReadSection($inifile, _GUICtrlListView_GetItemText($hWnd_LV, $i))
If IsArray($iconpos) Then
$iconposx = _GUICtrlListView_GetItemPositionX($hWnd_LV, $i)
$iconposy = _GUICtrlListView_GetItemPositionY($hWnd_LV, $i)
If $iconposx <> $iconpos[1][1] Or $iconposy <> $iconpos[2][1] Then _GUICtrlListView_SetItemPosition($hWnd_LV, $i, $iconpos[1][1], $iconpos[2][1])
EndIf
$iconpos = 0
Next
EndFunc ;==>_RestoreIcons
Funktion:
Wird das Skript ausgeführt und die Datei "IconFreezer.ini" existiert noch nicht, so werden die Positionen der Desktopicons in der Datei gespeichert.
Wird das Skript nochmal ausgeführt und die "IconFreezer.ini" besteht bereits, so werden die Desktopicons an ihren ursprünglichen (gespeicherten) Ort wiederhergestellt.
Wenn ich das Skript in 64bit kompiliere und starte wird folgende "IconFreezer.ini" erstellt. (korrekt)
[Papierkorb]
X=1844
Y=2
[Explorer]
X=404
Y=84
[Neustart]
X=164
Y=2
[PC aus]
X=44
Y=2
Alles anzeigen
Wenn ich das Skript in 32bit kompiliere und starte wird folgende "IconFreezer.ini" erstellt. (falsch)
So wie es aussieht erkennt AutoIt den Namen der Desktopicons nicht.
Aber warum
Warum geht es mit 64bit und nicht mit 32bit ![]()