Entwickler-Ecke

Freeware Projekte - StartMenuCleaner


maxk - Mo 20.10.03 18:29
Titel: StartMenuCleaner
Hi,
vor einiger Zeit habe ich ein Programm geschrieben, dass im StartMenü nach Toten Links, versteckten Dateien, leeren Gruppen etc. sucht. Nun möchte ich euch bitten, dieses Programm mal zu testen.

Der Link: Die aktuelle Version ist momentan nur hier veröffentlicht
Screenshot: Wird folgen

Das Programm erstellt unter %APPDATA%\ einen Ordner StartMenuCleaner für das Backup, der nicht automatisch entfernt wird.

Thx,
maxk

Seit Version 3 steht das Programm unter der GPL. Der Sourcecode ist auf Anfrage erhältlich. Momentan ist es nur in der EE veröffentlicht, da noch nicht alles getestet ist.


Andreas L. - Mo 20.10.03 19:16

Das Programm is nützlich, mein Startmenü is jetzt kleiner *freu*

Hat alles gefunzt!

Greetz


thebe - Mo 20.10.03 20:58

das Tool is sehr nützlich und sauber programmiert, hat aber nen Denkfehler.

Wenn man tote Links aus ner Gruppe löscht und z.b. nur TXT oder HTML Dateien zurückbleiben, dann wird die Gruppe nicht entfernt. Der Link is weg, aber die Gruppe bleibt voll und wird nicht gelöscht.

Nun sind bei mir die ganzen toten Links weg, die Gruppen Anzahl (die nun eigentlich um 60 - 70% kleiner sein sollte) hat sich aber nicht verändert.


maxk - Di 21.10.03 20:04

Danke für die Anregung. Ich stell mir das so vor: Wird ein Link gelöscht, so wird geguckt, ob andere Links einen ähnlichen Namen haben (z.B. Windows -> Windows deinstallieren). Leider weiß auch das inteligenteste Programm nicht, was noch gebraucht wird und was nicht (jedenfalls nicht mit Sicherheit)....
Wird demnächst integriert!


Delete - Mi 22.10.03 14:04

Hallo.

Ich habe mir mal dein Programm angesehen und hätte folgendes:

Wenn du daran arbeitest, könntest du mich evtl. dazu bewegen, dem Programm einen dauerhaften Platz auf der Platte zu geben. Ansonsten muss ich´s selbst programmieren und dich durch Veröffentlichung des Quellcodes aus dem Geschäft drängen. :twisted: Tja, meine Initialen (MS) kommen sicher nicht von ungefähr. ;)

Gruß.


maxk - Mi 22.10.03 19:06

MathiasSimmack hat folgendes geschrieben:
Dein Programm bemängelt, dass in meinem Autostart nur eine einzige Verknüpfung drin ist. Ich persönlich finde das gut. Du solltest evtl. den Autostart-Ordner von dieser Prüfung ausnehmen, da er nun mal eine Sonderrolle spielt. Immerhin gibt es eine spezielle CSIDL-Konstante (CSIDL_STARTUP bzw. CSIDL_COMMON_STARTUP), mit der man ihn direkt erreichen kann (über Shell-Befehle, aber das ist jetzt nicht das Thema). Tote Links usw. prüfen ist okay, aber die Anzahl zu testen und das Verschieben anzubieten, halte ich in diesem Fall für einen Fehler.
Eigentlich werden alle Sonderordner von der dieser Prüfung ausgenommen. Werde den Fehler sofort suchen.
MathiasSimmack hat folgendes geschrieben:
Was bedeutet "Doppeltes Uninstall"? Der Sinn ist mir in dem Fall nicht klar, denn a) es gibt keinen zweiten Link gleichen Namens. You can take my word! Ich habe alles durchsucht. Und b) kann es ein identisches Programm ja ohnehin nicht geben (es sei denn, es wäre in einem anderen Ordner, aber das ist hier nicht der Fall, und dann wäre die Frage, ob es wirklich das selbe ist, oder ob es nur zufälligerweise den selben Namen trägt). Ein paar Informationen im Programm (Hilfe- oder Textdatei) wären prima.
D.h. dass ein Uninstall auch über Systemsteuerung/Software möglich ist.
MathiasSimmack hat folgendes geschrieben:
Und wie sieht´s bei Ordnern aus? Ich bekomme die Meldung "Toter Link", obwohl die Verknüpfung auf ein existierendes und anzeigbares Verzeichnis zeigt. Da hast du es dir wahrscheinlich zu einfach gemacht und lediglich mit fileexists geprüft. :)
Stimmt, danke dafür.
MathiasSimmack hat folgendes geschrieben:
Nur aus persönlichem Interesse: Was macht´n das Ding unter Mehrbenutzersystemen? Richtig. Es ignoriert das Startmenü, das allen Benutzern zur Verfügung steht. Daher kommt es zur Meldung, meine "Unterhaltungsmedien"-Gruppe wäre leer, obwohl sie das bei einem Blick ins Startmenü ganz offensichtlich nicht ist. Wüsste ich nicht, dass meine lokale Gruppe tatsächlich leer ist, und dass die angezeigten Einträge eigentlich aus der Gruppe aller User stammen, würde ich mich ganz schön wundern.
Es werden immer beide SMs gescannt und evtl. korrigiert. Einge Gruppe wird nicht gelöscht, wenn im anderen SM eine gleiche existiert!
MathiasSimmack hat folgendes geschrieben:
Das Design des Programms solltest du evtl. überdenken. Es wirkt sehr ... hm ... merkwürdig. Spricht etwas gegen ein "normales" Aussehen? Oder vielleicht gegen eine logisch bedienbare Oberfläche. Vielleicht so was wie ein Wizard (Assistent), wo du schrittweise durch den Scan- und Bereinigungsvorgang geleitet wirst.
Ich find's ok. Was verstehst du unter einem "normalen Aussehen"?
MathiasSimmack hat folgendes geschrieben:

Wenn du daran arbeitest, könntest du mich evtl. dazu bewegen, dem Programm einen dauerhaften Platz auf der Platte zu geben. Ansonsten muss ich´s selbst programmieren und dich durch Veröffentlichung des Quellcodes aus dem Geschäft drängen. :twisted: Tja, meine Initialen (MS) kommen sicher nicht von ungefähr. ;)
Der Markt wird mir gehören :wink:
Also Danke für die Anregungen. Diese werden dann in Version 2 verwirklicht sein (außer vielleicht der "Design-Punkt").


Delete - Do 23.10.03 09:53

maxk hat folgendes geschrieben:
MathiasSimmack hat folgendes geschrieben:
Was bedeutet "Doppeltes Uninstall"? [...]
D.h. dass ein Uninstall auch über Systemsteuerung/Software möglich ist.

Aber das ist doch dann kein Fehler. Manche Programme verewigen sich eben zusätzlich im Startmenü. Ich mache so was auf Userwunsch, d.h. der Anwender kann entscheiden, ob er die Uninstall-Verknüpfung im Startmenü haben will oder nicht.

Zitat:
MathiasSimmack hat folgendes geschrieben:
Nur aus persönlichem Interesse: Was macht´n das Ding unter Mehrbenutzersystemen? [...]

Es werden immer beide SMs gescannt und evtl. korrigiert. Einge Gruppe wird nicht gelöscht, wenn im anderen SM eine gleiche existiert!

Das kann nicht stimmen, sonst hätte das Programm doch nicht meine leere Gruppe bemängelt.

Zitat:
Ich find's ok. Was verstehst du unter einem "normalen Aussehen"?

Na ja: Weiter -> Weiter -> upps -> Zurück -> Weiter -> Fertig stellen. :) So was in der Art passt besser. Bei deinem Design möchte ich dich nur mal auf die drei Buttons verweisen (Sicherung anlegen, usw.) und die Art, in der Sie angeordnet sind. Speziell, wenn man das Fenster vergrößert usw.

Gruß.


maxk - Sa 25.10.03 07:49

Hmm komisch. Ich werde das erstmal korrigieren. (Auch das Design).

PS: Aktualisierte Version ist online.


Delete - Sa 25.10.03 09:01

Hi. Noch ein bisschen Kritik, sorry

Hast du ... äh, Lust, dir meine Variante mal anzusehen? ;)


maxk - Sa 25.10.03 11:36

Über sinnvolle Kritik bin ich immer erfreut. Ich habe jetzt erstmal alles integriert (Design, Multiusermenüs, ...). Das Auffinden ählicher Files ist noch nicht integriert - Sorry.

http://www.maxk.keepfree.de/download/StartMenuCleaner.rar

PS: Klar bin ich an anderen Varianten interessiert.


Anonymous - Sa 25.10.03 11:42

ich bekomme eine Acces Violation wenn ich ein einzelnes "Einzelnes Item" auswähle


Delete - Sa 25.10.03 14:23

maxk hat folgendes geschrieben:
Das Auffinden ählicher Files ist noch nicht integriert - Sorry.

Hey, da habe ich dir ja was voraus. :)


maxk - Sa 25.10.03 20:29

obbschtkuche hat folgendes geschrieben:
ich bekomme eine Acces Violation wenn ich ein einzelnes "Einzelnes Item" auswähle
Problem fixed


umpani - Sa 25.10.03 21:31

Mir sind folgende Sachen aufgefallen:

1. Internetlinks werden als "Toter Link" angezeigt.
2. Es wird nicht geschaut, ob es sich bei dem Link um einen Wechseldatenträger handelt. Er wird einfach als "Toter Link" angezeigt
3. Das Einstellen nach dem Scannen ist ziemlich lästig. Hier würde ein Kontextmenü (rechte Maustaste) viel Arbeit erleichtern. Um mich ganz glücklich zu machen, sollten auch noch Checkboxen zum einstellen direkt neben den bemängelten Startmenueintrag sein. Dann muss man nicht mehr so viel mit der Maus hin und her springen.
4. Bevor der Startmenucleaner von selber festlegt, was er mit den gefundenen Mängeln macht, und man dann noch alles von Hand korigieren muss, sollte zuvor eine Einstellmöglichkeit wie "Alle toten Links löschen" bzw. "auf löschen stellen" etc. vorhanden sein.


ckurz - So 26.10.03 12:02

net schlecht das teil, gefällt mir!


maxk - Mo 27.10.03 21:37

umpani hat folgendes geschrieben:
1. Internetlinks werden als "Toter Link" angezeigt.
Komisch, bei mir funktioniert alles. Kannst du mir die Verknüpfungsdatei mal mailen (delphi_max@lycos.de). Für diese Hilfe wäre ich sehr dankbar. Alles andere wird natürlich von mir integriert werden.


focus - Di 28.10.03 14:32

Ansich nicht schlecht, was hälst du von einer Baumstruktur bei der Übersicht?
RootNodes könnten dann z.b. deine Items aus der ComboBox sein
Ich denke die Übersichtlichkeit der Auswertung würde dadurch stark zunehmen. (==>TVirtualStringTree)
Gruss
Michael

[edit]
warum scannt das Programm eigentlich nochmal (schon das 5x) wenn ich auf fertigstellen klicke???


maxk - Di 28.10.03 15:19

Ich habe noch nie mit Bäumen gearbeitet. Muss mich darin also erst mal einfummeln.

Das Programm scannt
Darin sollte es auch keine Probleme geben. Wenn doch bitte noch mal genau beschreiben, was du gemacht hast - Danke.


focus - Di 28.10.03 15:30

Und bei mir fängt er das neu Scannen an wenn ich auf fertigstellen klicke. :shock: irgendwas stimmt da nochnicht.. frag mich nicht was...
wenn ich auf Scan wiederholen klicke macht er genau das gleiche wie unter fertig..
Gruss
Michael
(w2k)


Delete - Di 28.10.03 16:28

Das mit den URLs ist mir auch aufgefallen, @maxk. Die Beispieldatei

Quelltext
1:
2:
3:
[InternetShortcut]
URL=http://www.blablublo.org/
Modified=E0FC86D05E9DC301F1

gespeichert als "blablublo.org.url" im Startmenü wird nicht als fehlerhaft erkannt. Oder habe ich das falsch verstanden und du suchst nach anderen URLs?

Wie dem auch sei, nach wie vor wird eine Uninstall-Verknüpfung nicht erkannt. Schau dir noch mal meinen Cleaner an. ;)

Was mich bei dem Programm noch irritiert, ist das "Fertigstellen" am Ende. Ich weiß, bei mir ist das auch so. Der Unterschied ist aber, dass du ganz gezielt auswählen und "Reparieren" musst. Klickst du bei mir nur auf "Fertig stellen" hat das keine Auswirkungen, selbst wenn du irgendwelche Objekte markiert hast.


maxk - Di 28.10.03 22:19

focus hat folgendes geschrieben:
Und bei mir fängt er das neu Scannen an wenn ich auf fertigstellen klicke. :shock:
Ja das meine ich mit Übernehmen, nachdem ändern, schaut er, ob sich noch etwas ergeben hat. Hat seine Richtigkeit. :D
Internetverknüpfungen (*.URL) werden nur auf Richtigkeit des Protokolls geprüft - sprich ob Windows weiß, welches Programm http:// öffnet.
Uninstallverknüpfungen A und B vollkommen identisch? Wenn nein, ist alles OK.
Fertigstellen werde ich noch umbenennen.

Ich habe mich nun für TCheckListBox entschieden. Da TTreeView keine Checkboxen anbietet - oder?

PS: Version 2.2 online


Delete - Mi 29.10.03 09:57

maxk hat folgendes geschrieben:
Uninstallverknüpfungen A und B vollkommen identisch? Wenn nein, ist alles OK.

a) Selbstverständlich sind beide Verknüpfungen identisch, sonst würde mein Programm das doch nicht erkennen. b) Du erhebst doch mit deinem Programm den Anspruch, Uninstall-Verknüpfungen zu finden. Und es gibt nachweislich einen NSIS-Uninstall-Link im Startmenü und in der Systemsteuerung. Und der Befehl ist in beiden Fällen der gleiche, es gibt keinen Unterschied - wie ich schon sagte.

Zitat:
Ich habe mich nun für TCheckListBox entschieden. Da TTreeView keine Checkboxen anbietet - oder?

Von dem API her kann man einen Tree-View auch mit Checkboxen ausstatten, aber wozu wolltest du den eigentlich nehmen? Ich finde eine listenartige Übersicht besser. Die Check-Listbox oder bspw. auch eine List-View mit Checkboxen ist IMHO eine sehr gute Wahl. Wozu ein Baum? Aha, ich sehe schon:
focus hat folgendes geschrieben:
RootNodes könnten dann z.b. deine Items aus der ComboBox sein

Das heißt, die gefundenen Probleme werden also unter den jeweils empfohlenen Aktionen angeordnet. Schön und gut, aber dann müsste es einen leeren Knoten "behalten" geben, und man müsste (der Einfachheit halber!) die Items per Drag&Drop verschieben können, wenn man sie bspw. behalten möchte.
Wie gesagt, die Listenansicht zum Auswählen via Checkbox ist einfacher.

maxk hat folgendes geschrieben:
Schaut auch ob die Icons existieren

Problem: "Geplante Tasks" (Win 98) hat angeblich ein nicht existierendes Symbol. Bei mir gibt´s aber sowohl Icon als auch die DLL, in der es steckt. Vielleicht solltest du auf diese (IMHO überflüssige) Prüfung verzichten?

Zitat:
Kopiert Icons von Wechsellaufwerken auf die Platte

Wozu soll´n das gut sein?

Zitat:
Erkennt Verknüpfungen auf Wechsellaufwerken

Auf Disketten: Ja. Auf CDs, bzw. im Netzwerk: Nein. ;) Und sag jetzt nicht, die letzten beiden sind keine Wechseldatenträger bzw. "permanente Ziele".


PS:
StartMenuCleaner.exe hat folgendes geschrieben:
Herzlich Willkommen beim
StartMenuCleaner - Das Original

:mrgreen: Ich habe nie abgestritten, dass die Anregung für mein Tool von dir ist.


Delete - Mi 29.10.03 10:31

PS: Die Sache mit den Datenträgern (Floppy, CD, Netzwerk, ...) kannst du relativ simpel prüfen. Ich poste mal einen Auszug aus meiner Scan-Funktion.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
// "GetLinkDestination" wirst du in ähnlicher Form haben.
// Diese Funktion liefert mir das Ziel der Verknüpfung.
// Aber in "lnkraw" steckt das Ziel auch noch im RAW-Format,
// und "lnkarg" enthält evtl. Parameter
lnk      := GetLinkDestination(ds.cFileName,lnkraw,lnkarg);

// Bevor der Einwand kommt: die API-Funktion, die hinter
// meinem "fileexists" steht, erlaubt auch das Prüfen von
// Ordnern.
fFound   := (lnk <> ''and (fileexists(lnk));

// Wenn das Verknüpfungsziel nun nicht gefunden wurde, ...
if(not fFound) or
// ... oder wenn die LNK-Datei eine Größe von 0 Bytes hat
  (ds.nFileSizeLow = 0then
begin
  // schauen, ob das Ziel auf einem Wechseldatenträger
  // liegt
  if(not fFound) and
    (GetDriveType(pchar(ExtractFileDrive(lnk) + '\'))
  // unterstützt werden Floppies, Netzlaufwerke und CD-Medien
      in[DRIVE_REMOVABLE,DRIVE_REMOTE,DRIVE_CDROM]) then
  // in dem Fall die nicht vorhandene Verknüpfung als
  // mögliches Problem melden (es ist ja keins mehr, wenn
  // bspw. die richtige CD im Laufwerk liegt)
    LV_ItemInsert(loop,path + '\' + ds.cFileName,
      'nicht verfügbarer Wechseldatenträger')

  // Nein, es ist keine Verknüpfung auf einem Wechsellaufwerk,
  // darum einfach nur das Problem anzeigen
  else
    LV_ItemInsert(loop,path + '\' + ds.cFileName,
      szProblemArray[ds.nFileSizeLow=0]);


  // "szProblemArray" ist ein bool-Array mit den beiden
  // möglichen Fehlern (nicht gefunden, bzw. 0-Byte-Datei).
  // Auf die Weise spare ich mir ein "if"

  // const
  //   szProblemArray   : array[boolean]of string =
  //     ('toter Link','0-Byte-Datei');

end;

Die eigentlich wichtige Funktion GetDriveType [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdrivetype.asp] ist eine API-Funktion und sollte sich problemlos in dein Programm übernehmen lassen.

Gruß.


maxk - Mi 29.10.03 21:43

:lol: Da war wirklich ein Fehler beim Uninstallfinden - Sorry.
Zitat:
Problem: "Geplante Tasks" (Win 98) hat angeblich ein nicht existierendes Symbol. Bei mir gibt´s aber sowohl Icon als auch die DLL, in der es steckt. Vielleicht solltest du auf diese (IMHO überflüssige) Prüfung verzichten?
Könntest du das vielleicht ein bisschen genauer erläutern? Ich habe auch unter W98 (vmWare) keine Probleme... PS: Was heißt "IMHO"?
Zitat:
Zitat:
Kopiert Icons von Wechsellaufwerken auf die Platte
Wozu soll´n das gut sein?
Wenn Windows die Gruppe öffnet sucht es nach den Icons. A) Die Diskette ist nicht eingelegt -> Windows findet kein Icon. B) Die Diskette ist zu langsam -> Windows braucht ewig zum öffnen der Gruppe.
Ich benutze GetDriveType bereits if not (GetDriveType in [DRIVE_FIXED,0,1) then ....


Delete - Mi 29.10.03 23:41

Das Problem (wenn´s ein ist) dürfte sein, dass das Icon aus der "mstask.dll" stammt, die DLL aber ohne Pfad als Icondatei angegeben ist. Windows selbst hat kein Problem damit, da es sein eigenes und das Systemverzeichnis ja kennt.
Aber dein Programm kann nichts damit anfangen und ist offensichtlich der Meinung, die DLL existiert nicht. Darum die fälschliche Meldung, das Icon existiert nicht.

Abhilfe: "FileSearch" (s. Hilfe). Du könntest bspw. das Windows- und das Systemverzeichnis, sowie den kompletten Inhalt von "PATH" als Suchliste übergeben. (Jeweils durch Semikolon getrennt.) Der erste Parameter ist der Dateiname, auf den du es abgesehen hast. Rückgabe ist Name inkl. Pfad, wenn die Datei irgendwo in einem Ordner aus der Suchliste (Windows+System+PATH) gefunden wurde.

Zitat:
Ich benutze GetDriveType bereits if not (GetDriveType in [DRIVE_FIXED,0,1) then ....

Warum Null und Eins? Warum benutzt du nicht die Konstanten, mit denen du auch nach Monaten noch was anfangen kannst? :)


focus - Do 30.10.03 09:44

Zitat:

Ja das meine ich mit Übernehmen, nachdem ändern, schaut er, ob sich noch etwas ergeben hat. Hat seine Richtigkeit. :D


Ich will dir ja echt nicht auf den Zeiger gehen aber nachdem ich zehnmal auf fertigstellen geklickt hab wird er ja wohl hoffentlich nichtsmehr finden oder? Ansonsten würde ich meine Programmstrategie nochmal überdenken...
Gruss
Michael


Delete - Do 30.10.03 12:39

Mache ich aber genauso, @focus. Es kann ja sein, dass sich durch das Beheben eines Problems ein anderes ergeben hat. Ich habe bspw. spaßeshalber eine Verknüpfung erstellt und das Ziel (war eine Kopie von Notepad in einem anderen Ordner) gelöscht.

Folglich hat mein Programm den toten Link gefunden. Ich habe ihn aber nicht löschen lassen, sondern ich habe die Dialogbox von Windows aufgerufen, mit der du nach dem Verknüpfungsziel suchen lassen kannst (@maxk: s. "IShellLink.Resolve" ;)). Das originale Notepad im Windows-Ordner wurde gefunden und als passendes Ziel vorgeschlagen.

Und nach dem erneuten Scan (nach der Reparatur!) fand das Tool dann auch zwangsläufig zwei identische Verknüpfungen. Logisch, die verwiesen ja nun beide auf das Notepad im Windows-Ordner.

Insofern halte ich ein erneutes Scannen durchaus für sinnvoll. Es sollte bei max aber auch eine deutlich sichtbare Möglichkeit geben, das Programm abzubrechen. Der X-Knopf in der Titelleiste macht das zwar, fällt aber kaum auf. Ein deutliches "Abbrechen" o.ä. wäre IMHO besser.


maxk - Do 30.10.03 19:27

Ja, die Idee mit Resolve hatte ich auch schon. Mit FileSearch(,GetEnvironmentVariable('Path')); habe ich auch schon gearbeitet, weiß der Treufel, warum ich dann doch FileExists genommen habe...

PS: Ich lade am Wochenende eine neue Version hoch.
PPS: Ich habe schon einmal gefragt, was IMHO heißt :roll:


mirage228 - Do 30.10.03 22:54

Hi maxk,

IMHO heist In My Humble Opinion - Meiner bescheidenen Meinung nach

mfG
mirage228


maxk - Fr 31.10.03 21:39

:arrow: Ich danke vielmals!

Version 2.2 R2 hochgeladen.
Das sind die auffäligsten Änderungen!


Delete - Fr 14.11.03 11:32

Bei mir gibt´s übrigens meinen SMC + Quellcode.
Interessiert´s wen? ;)


mirage228 - Fr 14.11.03 15:01

[OT]Immer diese Leute, die Schleichwerbung machen :D[/OT]


Delete - Fr 14.11.03 18:56

Na ja, :oops:, auf Grund der Ähnlichkeit zum Tool von maxk wollte ich es nicht direkt anpreisen. Obwohl mich die ein oder andere Meinung durchaus interessieren würde. ;)


maxk - Fr 14.11.03 19:31


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
//
// Start Menu Cleaner
// inspired by maxk's "Start Menu Cleaner"
// (http://www.delphi-forum.de/viewtopic.php?t=17757)
// (c) 2003, Mathias Simmack
//
Ich danke vielmals :angel:


Chatfix - Fr 06.02.04 13:34

Also wenn man auf den Info-Button klickt (ganz am anfang) kommt man da nicht wieder raus...

Dann ist das Fenster extrem zu klein, oder du baust eine vertikale scrollleiste ein (ich kann die pfadangaben net lesen)


j-a-n@gmx.de - Di 25.01.05 10:55
Titel: target.lnk
noch was:

Zieh mal einen Ordner vom Explorer ins Startmenü.
Windows erstellt keine Verknüpfung sondern irgendwas spezielles, sodasss der Order im Startmenü aufgeklappt wird.
Das könntest Du deinem Programm noch beibringen.


Delete - Di 25.01.05 11:38

Was soll Max dem Programm beibringen? Solche Ordner anzulegen? Ich weiß nicht, immerhin soll der Cleaner das Startmenü ja von unnützen Dingen befreien. Aber wenn dich das Verfahren interessiert, bitte schön: klick [http://www.delphi-forum.de/viewtopic.php?t=27856]. :)


j-a-n@gmx.de - Di 25.01.05 11:47

MathiasSimmack hat folgendes geschrieben:
Was soll Max dem Programm beibringen? Solche Ordner anzulegen? Ich weiß nicht, immerhin soll der Cleaner das Startmenü ja von unnützen Dingen befreien.

ne.. natürlich nicht. obwohl das auch ein schönes programm wäre... ;-)
Max' programm erkennt nur die targed.lnk und will die verschieben und damit den ordner zerstören. das sollte er natürlich nicht tun.

MathiasSimmack hat folgendes geschrieben:

Aber wenn dich das Verfahren interessiert, bitte schön: klick [http://www.delphi-forum.de/viewtopic.php?t=27856]. :)

gibts dazu auch nen fertiges programm?


Delete - Di 25.01.05 12:05

j-a-n@gmx.de hat folgendes geschrieben:
Max' programm erkennt nur die targed.lnk und will die verschieben und damit den ordner zerstören. das sollte er natürlich nicht tun.

Oh, da muss ich doch glatt mal gucken ob meiner cleverer ist. :)

Zitat:
gibts dazu auch nen fertiges programm?

Was willst du denn machen? Ein Programm zum Erstellen solcher Verknüpfungen? Schreib´s doch selbst. Du brauchst doch nur die paar Quellcodezeilen in dein Programm einbinden. ;)


maxk - Di 25.01.05 12:15
Titel: Re: target.lnk
j-a-n@gmx.de hat folgendes geschrieben:
Zieh mal einen Ordner vom Explorer ins Startmenü.
Windows erstellt keine Verknüpfung sondern irgendwas spezielles, sodasss der Order im Startmenü aufgeklappt wird.
Ich habe es jetzt an 3 Rechner versucht und irgendwo funktioniert da was nicht so richtig. Vielleicht könntest du mir da einfach mal einen "Link" auf C:\Test erstellen und mir dein Startmenü mailen - Danke!


Delete - Di 25.01.05 12:19

PS:
MathiasSimmack hat folgendes geschrieben:
j-a-n@gmx.de hat folgendes geschrieben:
Max' programm erkennt nur die targed.lnk und will die verschieben und damit den ordner zerstören. das sollte er natürlich nicht tun.

Oh, da muss ich doch glatt mal gucken ob meiner cleverer ist. :)

Ist er. Allerdings weiß ich nicht warum. :gruebel: Mein Code enthält keine Prüfung auf die "target.lnk", und trotzdem bemängelt das Programm den Ordner nicht. Na ja, meine Programme wissen eben was ich von ihnen will. :mrgreen:


j-a-n@gmx.de - Di 25.01.05 12:31

MathiasSimmack hat folgendes geschrieben:
j-a-n@gmx.de hat folgendes geschrieben:
Max' programm erkennt nur die targed.lnk und will die verschieben und damit den ordner zerstören. das sollte er natürlich nicht tun.

Oh, da muss ich doch glatt mal gucken ob meiner cleverer ist. :)

kann ich das auch mal testen? schick mal nen link

MathiasSimmack hat folgendes geschrieben:

j-a-n@gmx.de hat folgendes geschrieben:
gibts dazu auch nen fertiges programm?

Was willst du denn machen? Ein Programm zum Erstellen solcher Verknüpfungen? Schreib´s doch selbst. Du brauchst doch nur die paar Quellcodezeilen in dein Programm einbinden. ;)

klar, aber soll jeder das rad neu erfinden?


Delete - Di 25.01.05 12:37

Wieso "Rad neu erfinden"? Streng genommen brauchst du die Funktion doch nicht in einem extra Programm, oder? Windows kann das von Haus aus (na ja, das Windows von maxk ist wohl die Ausnahme :mrgreen:). Und ansonsten würde mir nur ein Setup einfallen. Und da denke ich gerade an Inno Setup, das diese Verknüpfungen seit Version 5 unterstützt. Bei NSIS müsste man es vermutlich per Hand nachbauen. Habe ich nicht probiert, aber ich behaupte jetzt einfach mal, dass es geht.

So, und jetzt die Frage: Wenn du in Windows solche Verknüpfungen durch einfaches Ziehen des Ordners ins Startmenü, bzw. durch Setups anlegen kannst, wozu brauchst du dann überhaupt ein Tool dafür? :)


j-a-n@gmx.de - Di 25.01.05 12:44

MathiasSimmack hat folgendes geschrieben:
Wieso "Rad neu erfinden"? Streng genommen brauchst du die Funktion doch nicht in einem extra Programm, oder? Windows kann das von Haus aus (na ja, das Windows von maxk ist wohl die Ausnahme :mrgreen:). Und ansonsten würde mir nur ein Setup einfallen. Und da denke ich gerade an Inno Setup, das diese Verknüpfungen seit Version 5 unterstützt. Bei NSIS müsste man es vermutlich per Hand nachbauen. Habe ich nicht probiert, aber ich behaupte jetzt einfach mal, dass es geht.

So, und jetzt die Frage: Wenn du in Windows solche Verknüpfungen durch einfaches Ziehen des Ordners ins Startmenü, bzw. durch Setups anlegen kannst, wozu brauchst du dann überhaupt ein Tool dafür? :)


Weil ich die Verknüpfungen auch woanders braucht.
Beispiel:
Ich hasse diesen wulst von "Dokumente und Einstellungen"
Also liegen meine Eigenen Dateien unter c:/home/jan, eigene bilder unter c:\ablage\bilder und eigene videos und musik auf \\moviestar\videos bzw. musik.
vom notebook aus liegen die entsprechend auf \\workbox\home\jan \\workbox\bilder usw.
Jetzt erstell das mal, indem du alle aufs startmenü ziehst.


Delete - Di 25.01.05 13:28

Na also, das hört sich doch so an, als hättest du eine Programmidee fertig. :)


maxk - Di 25.01.05 14:39

Gut, ich möchte mich nochmal bei j-a-n@gmx.de für die Entdeckung der Fehlfunktion und das Mailen seines Startmenüs bedanken - ich habe die neue Version hochgeladen und sie scheint zu funktionieren....

Der SMC hatte die target.lnk immer als einzelnes Item erkannt, da er das Vorhandensein der desktop.ini ignoriert (da die ja eigentlich fast immer da ist). Nun prüft der SMC, ob eine desktop.ini existiert und ob die dort vorhandenen Einträge eine Ordnerverknüpfung "erstellen".

Gruß,
maxk


Delete - Di 25.01.05 14:52

maxk hat folgendes geschrieben:
(da die ja eigentlich fast immer da ist)

Ohne "eigentlich fast". In dem Fall muss sie da sein, sonst funktioniert diese spezielle Verknüpfung nicht.


maxk - Di 25.01.05 15:19

MathiasSimmack hat folgendes geschrieben:
maxk hat folgendes geschrieben:
(da die ja eigentlich fast immer da ist)

Ohne "eigentlich fast". In dem Fall muss sie da sein, sonst funktioniert diese spezielle Verknüpfung nicht.
Schon klar! Ich bezog das auf die gesamte Verzeichnisstruktur von Windows, in vielen Verzeichnissen findet man die desktop.ini - aber machnmal ist sie unnütz und wird nicht gebraucht! Egal!


maxk - Sa 10.12.05 14:21

Nach langem Nichtstun, habe ich mich hingesetzt und das ganze Programm nochmal neu geschrieben. Ich weiß noch nicht, ob alles funktioniert und würde euch daher mal bitten, es zu probieren ;) Ich hoffe, dass niemand bedenken hat - ansonsten würde ich es demnächst dann auch der Öffentlichkeit zumuten.

Der Download des Programms ist im ersten Post möglich!

PS: Da es den Source nur auf Anfrage gibt, gehört es wohl weiterhin in die Freewaresparte. Falls ich mich irre, wäre es nett, wenn ein Moderator es verschieben könnte :D