Startmenü eintrag
Hallo,
ich möchte einen Eintrag ins Startmenü von windows vista und xp machen und zwar dort, wo man auch die systemsteuerung oder ähnliches einblenden kann. ist dies mit delphi möglich? wenn ja, wie? wäre über antworten sehr erfreut! :) gruß |
Re: Startmenü eintrag
Start->rechtsklick->Eigenschaften->Startmenü->Startmenü anpassen
Da musste ma schaun, vielleicht hilft dir das |
Re: Startmenü eintrag
er wird wohl eher eine API zum hinzfügen selbstdefinierter Menüpunkte meinen.
Naja... schau am besten mal beim MSDN nach. Ich hab noch nie gehört/gelesen, daß sowas möglich ist.. aber wer weiß? Auf alle Fälle wird es (wenn es geht) wohl auf einen COM-Server (ähnlich eines Deskband) oder eine Shell extension hinauslaufen. Viel Spaß damit *evil grin* |
Re: Startmenü eintrag
Das funktioniert auf jeden Fall, nur leider weiß ich nicht wie :D
|
Re: Startmenü eintrag
Hier ist die Procedure dazu:
Delphi-Quellcode:
Hab jetzt nur nicht die Zeit, das näher zu erläutern, sorry.
function CreateShortcut(SourceFileName: string; // the file the shortcut points to
Location: ShortcutType; // shortcut location SubFolder, // subfolder of location WorkingDir, // working directory property of the shortcut Parameters, Description: string): // description property of the shortcut string; const SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer'; QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv'; var MyObject: IUnknown; MySLink: IShellLink; MyPFile: IPersistFile; Directory, LinkName: string; WFileName: WideString; Reg: TRegIniFile; begin MyObject := CreateComObject(CLSID_ShellLink); MySLink := MyObject as IShellLink; MyPFile := MyObject as IPersistFile; MySLink.SetPath(PChar(SourceFileName)); MySLink.SetArguments(PChar(Parameters)); MySLink.SetDescription(PChar(Description)); LinkName := ChangeFileExt(SourceFileName, '.lnk'); LinkName := ExtractFileName(LinkName); // Quicklauch if Location = _QUICKLAUNCH then begin Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT); try Directory := Reg.ReadString('MapGroups', 'Quick Launch', ''); finally Reg.Free; end; end else // Other locations begin Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT); try case Location of _OTHERFOLDER : Directory := SubFolder; _DESKTOP : Directory := Reg.ReadString('Shell Folders', 'Desktop', ''); _STARTMENU : Directory := Reg.ReadString('Shell Folders', 'Start Menu', ''); _SENDTO : Directory := Reg.ReadString('Shell Folders', 'SendTo', ''); end; finally Reg.Free; end; end; if Directory <> '' then begin if (SubFolder <> '') and (Location <> _OTHERFOLDER) then WFileName := Directory + '\' + SubFolder + '\' + LinkName else WFileName := Directory + '\' + LinkName; if WorkingDir = '' then MySLink.SetWorkingDirectory(PChar(ExtractFilePath(SourceFileName))) else MySLink.SetWorkingDirectory(PChar(WorkingDir)); MyPFile.Save(PWChar(WFileName), False); Result := WFileName; end; end; |
Re: Startmenü eintrag
Liste der Anhänge anzeigen (Anzahl: 1)
hm.... ahbe mir mal den source angeschaut
und die werte in der registry und im dateisystem mal nachvollzogen. allerdings bin ich der meinung, dass dies nicht das gesuchte ist. ich möchte einen eintrag im startmenü haben und zwar dort, wo z.b. "Ausführen" oder "Arbeistplatz" steht. diese optinen kann man ja festlegen. nun suche ich nach einer möglichkeit, dort eine programmverknüpfung anzulegen, oder noch besser gleich eine ordnerstruktur, welche dann in einer liste ausklappt, so wie z.b. die systemsteuerung. näheres siehe anhang. gruß |
Re: Startmenü eintrag
hm, mit diesen Startmenu-Einträgen hab ich mich noch nie beschäftigt.
Ich weiss nur, dass z.B. Programme und alles was darunter steht, auch nur Verzeichnisse sind, die dann *.lnk-Dateien enthalten. Bei der Systemsteuerung ist das sicher anders realisiert. Da kann ich leider nicht helfen :cry: |
Re: Startmenü eintrag
ja das mit den programmen weiß ich auch... :(
wenn es überhaupt nicht geht ist es auch nicht so schlimmm, aber das wäre auf jeden fall die sauberste und schönste lösung. hat noch jemand eine idee? gruß |
Re: Startmenü eintrag
Zitat:
|
Re: Startmenü eintrag
ich habe so ein programm leider auch noch nie gesehen... :(
aber wenn es möglich ist, wäre das auch nur eine alternative zu anderen optionen der darstellung. der user wird sich das aussuchen können. weiß jemand nach was ich suchen könnte? kann man vielleicht windows vortäuschen, dass die ordner durch andere ersetzt wurden und damit darauf zugreifen? gruß |
Re: Startmenü eintrag
Das ist nicht möglich. Und das hat auch einen ganz einfachen Grund. Denn was wäre, wenn es möglich wäre? Dann würde sich jedes Programm dort eintragen, weil es der Meinung ist, es sei das wichtigste und müsse unbedingt dort hin. Die Folge wäre, dass das Startmenü überladen wäre und sich niemand mehr dort zu recht finden würde. Programme gehören nun mal in den Startmenüordner "Programme". Ich hoffe, ich habe Raymond Chen (TheOldNewThing) korrekt wieder gegeben.
|
Re: Startmenü eintrag
Zitat:
|
Re: Startmenü eintrag
und wenn ich z.b. windows vortäusche,
dass der ordner "Bilder wo anders liegt? geht das dann? gruß |
Re: Startmenü eintrag
Zumindest ich wäre als Anwender sauer, wenn irgendein Programm meine Startmenülinks umbiegt und ich keinen Zugriff mehr auf "eigene bilder" habe... egal ob freiwillig oder nicht.
|
Re: Startmenü eintrag
naja der anwender wird ja darüber informiert was genau passiert,
und kann sich dann überlegen wie er fortfahren möchte. es gibt mit sicherheit viele benutzer, die eigene bilder oder musik nicht nutzen. für diese nutzer wäre das dann ideal. also: kann mir jemand sagen, ob ich den verweis des eigene bilder ordners auf einen anderen ordner umleiten kann? und wenn ja, wie? vielen dank. gruß |
Re: Startmenü eintrag
Ja, das geht. Das Stichwort ist 'Ordnerumleitung' und wird über ein Gruppenrichtlinienobjekt durchgesetzt.
|
Re: Startmenü eintrag
okay das hab ich verstanden, nur wie realisiere ich das jetzt mit delphi?
ich habe auch in dem spezifischen ordner eigenschaften die option des umleiten des pfades gesehen. kann ich das irgendwie in der registry verändern? wenn ja wo? gruß |
Re: Startmenü eintrag
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\Shell Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\User Shell Folders Einfach mal mit Regedit gesucht... Ich würde dir aber auch stark davon abraten, da irgendwelche Sachen zu ändern. Edit: Das da oben ist wohl nur ein Teil.. such mal selber deine Registry nach "Eigene Bilder" durch.. |
Re: Startmenü eintrag
okay gut danke! das müsste so passen! :)
gibt es einen befehl zum zurücksetzen oder standardwerte in der registry oder muss ich mir die beim ändern merken? gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz