Delphi-PRAXiS
Seite 1 von 2  1 2      

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ß


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Seite 1 von 2  1 2      

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