| |
|
|
Thomas Freier | Da selbst kein WIN7 und nichts probieren kann: Hat einer einen Code, mit dem alle Desktopverknüpfungen ermittelt werden können? Anlegen und das Ziel ggf. ändern, habe ich schon mit Andreas Ole_ShellLink.inc, unter WIN7 bei einem erfolgreich testen lassen. Nur das Auflisten ging gegenüber XP voll daneben. |
|
|
| |
|
|
|
| Hab kein Win7 zur Hand -
hast Du sinngemäß aber mit XProfan schon folgendes Versucht... ?
und dann einfach in alle gelisteten Verzeichnisse\Desktop gehen. |
|
|
| |
|
|
|
Thomas Freier | Ich denke.
'Rekursive Suche nach Dateien
'aufgeschrieben von Thomas Glockmann unter Mithilfe
'von David Strutz und Frank Abbing
Def FindFirstFile(2) !"kernel32","FindFirstFileA"
Def FindNextFile(2) !"kernel32","FindNextFileA"
Def FindClose(1) !"kernel32","FindClose"
Def Desktop(0) ReadIni$("Hkey_1","Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Desktop")
Def StartMenueProgramme(0) ReadIni$("Hkey_1","Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Programs")
Struct WIN32_FIND_DATA=dwFileAttributes&,ftCreationTime#(8),ftLastAccessTime#(8),\
ftLastWriteTime#(8),nFileSizeHigh&,nFileSizeLow&,dwReserved0&,dwReserved1&,\
cFileName#(260),cAlternate#(14)
Declare Pos&
Declare HandleA&[]
Declare HandleA$[]
Declare Verz&
Declare Datei&
Declare FH&
Declare FindData#
Declare PM$
Dim FindData#, Win32_Find_Data
Declare Pfad$
Declare Maske$
Proc DateiListe
Parameters Pfad$,Maske$
PM$ = Pfad$ + "\\" + Maske$
FH& = FindFirstFile(Addr(PM$),FindData#)
While (Pos& >= 1) And (FH& >= 0) = 1
Repeat
If (@String$(FindData#,44) <> ".") And (@String$(FindData#,44) <> "..")
If (FindData#.dwFileAttributes& & $10) = $10
Inc Verz&
HandleA&[Pos&] = FH&
HandleA$[Pos&] = Pfad$
Pfad$ = Pfad$ + "\\" + @String$(FindData#,44)
Inc Pos&
Dateiliste(Pfad$,Maske$)
Else
Inc Datei&
AddString(DAT_LV%,Pfad$ + "\\" + @String$(FindData#,44))
EndIf
EndIf
Until FindNextFile(FH&,FindData#) = 0
Dec Pos&
If Pos& >= 1
FH& = HandleA&[Pos&]
Pfad$ = HandleA$[Pos&]
Case FindNextFile(FH&,FindData#) = 0 : Break
Else
Break
EndIf
EndWhile
EndProc
Pos& = 1
Cls
var font&=CreateFont("Arial",16,0,0,0,0)
var DAT_LV%=CreateListBox(%hwnd,"",10,30,610,376)
SetFont DAT_LV%,font&
var a$=translate$(Desktop(0),"\","\\")
Print "Suche..."+a$
DateiListe(a$,"*")
FindClose(FH&)
WaitInput
DeleteObject font&
end
|
|
|
| |
|
|
|
| Warum sol höllenkompliziert bzw. was spricht dagegen ... ?
Windows-Versionen mit UAC können dabei natürlich das Wechseln in die Verzeichnisse verhindern. |
|
|
| |
|
|
|
Thomas Freier | Geht um ein Update bei einem DAU. Hatte schon früher vor Ort mehrere Altversionen gefunden. Zukünftig wollte ich via Email und Programm updaten. Also erst einmal alle alten ***.exe suchen und umbennen. Um den gültigen Arbeitsordner zu erfahren dann das Ziel der Verknüpfung auf dem Desktop ermitteln. . Deshalb der etwas "höllenkomplizierte" Code, der, hier entfernt, alle gefundenen Verknüpfungen und ***.exe in eine **.txt schreibt, die ich dann bekomme für die Updateanpassung.
Nachtrag Im Prinzip sollte es so seinWindows 7: Pfad zum Desktop
Der Desktop des gerade angemeldeten Benutzers ist im folgenden Ordner zu finden:
Original-Windows-7-Pfad: C:\Users\[Benutzername]\Desktop Pfad-Bezeichnung in der deutschen Windows-7-Version: C:\Benutzer\[Benutzername]\Desktop
Pfad unter Windows XP, 2000, 2003 (dt.): C:\Dokumente und Einstellungen\[Benutzername]\Desktop
In der erzeugten **.txt fand ich dann eine Zeile, die vermutlich die gesuchte Verknüpfung sein könnteC:\Users\Lund\AppData\Roaming\\\\\\\Microsoft\Windows\Recent\JLKurier.lnk Damit kann ich vermutlich die alte ***.lnk nicht löschen. |
|
|
| |
|
|
|
Andreas Miethe
| Wenn ich das richtig verstehe willst Du alle *.lnk auflisten und den Pfad extrahieren ?
Anbei eine Include und ein kleiner Testcode |
|
|
| XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 15.12.2012 ▲ |
|
|
|
|
Thomas Freier | Danke Andreas, auf WIN7 hast du es sicher getestet. Bei mir mit XP kommt alles wie erwartet (nicht).....eine Endlosschleife....da keine *.lnk vorhanden. Bitte einmal anpassen:
|
|
|
| |
|
|
|
Andreas Miethe
| Dann versuch doch mal den Pfad für alle Benutzer
GSFP(0,ADDR(Desktop$),25,0)'Pfad Alle Benutzer-Desktop
Es gibt ja mehrere Möglichkeiten.
Bei mir funktioniert das übrigens auch mit XP |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 15.12.2012 ▲ |
|
|
|
|
Thomas Freier | Andreas, ist doch alles super. Ich habe keine *.lnk . Die gängigen Programme sind im Launcher . Und die Schleife endet nicht bei:
Gönnst du deiner Ole_ShellLink.inc noch einen kleinen Hinweis auf den letzten Stand.
|
|
|
| |
|
|
|
Andreas Miethe
| Ok, ich habe das mal für X2 angepasst. Die Include sowie die Beispiele.
Bei Dir sollte jetzt auch etwas beim Auslesen angezeigt werden, da im Beispiel das Startmenü ausgelesen wird. |
|
|
| XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 16.12.2012 ▲ |
|
|
|
|
Thomas Freier | Danke, läuft alles wie es soll. |
|
|
| |
|
|