Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Startmenü eintrag (https://www.delphipraxis.net/102634-startmenue-eintrag.html)

Diamondback2007 1. Nov 2007 14:01


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ß

BullsEye 1. Nov 2007 14:27

Re: Startmenü eintrag
 
Start->rechtsklick->Eigenschaften->Startmenü->Startmenü anpassen

Da musste ma schaun, vielleicht hilft dir das

MarcoWarm 1. Nov 2007 14:31

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*

Aurelius 1. Nov 2007 14:41

Re: Startmenü eintrag
 
Das funktioniert auf jeden Fall, nur leider weiß ich nicht wie :D

Progman 1. Nov 2007 14:51

Re: Startmenü eintrag
 
Hier ist die Procedure dazu:
Delphi-Quellcode:
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;
Hab jetzt nur nicht die Zeit, das näher zu erläutern, sorry.

Diamondback2007 1. Nov 2007 17:20

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ß

Progman 1. Nov 2007 18:13

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:

Diamondback2007 1. Nov 2007 19:32

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ß

MarcoWarm 2. Nov 2007 04:19

Re: Startmenü eintrag
 
Zitat:

Zitat von xX0815Xx
Das funktioniert auf jeden Fall, nur leider weiß ich nicht wie :D

Wieso bist du dir so sicher? Hast du schon mal ein Programm gesehen, das sich dort verewigt? Ich nicht. Würde mich interessieren, wer sowas schon mal gemacht hat. Außerdem macht das ganze nur Sinn, wenn der User das erweiterte Startmenü aktiviert hat, sonst sieht er die Punkte dort überhaupt nicht.

Diamondback2007 2. Nov 2007 08:10

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ß

Luckie 2. Nov 2007 08:22

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.

Aurelius 2. Nov 2007 08:29

Re: Startmenü eintrag
 
Zitat:

Zitat von MarcoWarm
Zitat:

Zitat von xX0815Xx
Das funktioniert auf jeden Fall, nur leider weiß ich nicht wie :D

Wieso bist du dir so sicher? Hast du schon mal ein Programm gesehen, das sich dort verewigt? Ich nicht.

Sorry, ich hatte mich vertan bzw. den Text falsch verstanden. :oops:

Diamondback2007 2. Nov 2007 08:31

Re: Startmenü eintrag
 
und wenn ich z.b. windows vortäusche,
dass der ordner "Bilder wo anders liegt?
geht das dann?

gruß

Florian H 2. Nov 2007 09:54

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.

Diamondback2007 3. Nov 2007 10:13

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ß

Phoenix 3. Nov 2007 10:27

Re: Startmenü eintrag
 
Ja, das geht. Das Stichwort ist 'Ordnerumleitung' und wird über ein Gruppenrichtlinienobjekt durchgesetzt.

Diamondback2007 3. Nov 2007 12:41

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ß

wicht 3. Nov 2007 12:53

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..

Diamondback2007 3. Nov 2007 13:03

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 04:24 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