AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm in Win11 Startmenü eintragen

Ein Thema von dpKlaus · begonnen am 8. Feb 2025 · letzter Beitrag vom 10. Feb 2025
 
dpKlaus

Registriert seit: 1. Nov 2020
17 Beiträge
 
#1

Programm in Win11 Startmenü eintragen

  Alt 8. Feb 2025, 14:59
Guten Tag,
ich versuche ein Programm in das Win11 Startmenue einzutragen. Dazu nutze ich einen Funktionsaufruf der in Win10 noch funktionierte:

unit WinStartMenu;


interface

{uses Windows, ShlObj, SysUtils, ...}

// uses
// windows, ShlObj, SysUtils, Registry, ComObj, ActiveX;

uses
Windows, SysUtils, Dialogs;

// Function CreateFolder(Foldername:string):boolean;
// function CreateLink(lpszPathObj,lpszPathLink,lpszDesc:strin g):Boolean;
procedure ErzeugeWinStartMenu;

implementation

{$IFDEF VER90}
uses OLE2, ComObj, ShlObj;
{$ELSE}
uses ActiveX, ComObj, ShlObj;
{$ENDIF}

const
IID_IPersistFile : TGUID=(D1:$0000010B;D2:$0000;D3:$0000;D4$C0,$00, $00,$00,$00,$00,$00,$46));


function SpecialDirectory(ID:integer):string;
var pidl : PItemIDList;
Path : PChar;
begin
if SUCCEEDED(SHGetSpecialFolderLocation(0,ID,pidl)) then begin
Path:=StrAlloc(max_path);
SHGetPathFromIDList(pidl,Path);
Result:=String(Path);
if Result[length(Result)]<>'\' then
Result:=Result+'\';
end;
end; {SpecialDirectory}


Function CreateFolder(Foldername:string):boolean;
begin
Result:=false;
SetLastError(0);
CreateDirectory(PChar(Foldername), nil );
if (GetLastError()=0) or (GetLastError()=ERROR_ALREADY_EXISTS) then
Result:=true;
end; {CreateFolder}


function CreateLink(lpszPathObj,lpszPathLink,lpszDesc:strin g):Boolean;
var psl : IShellLink;
ppf : IPersistFile;
begin
Result:=false;
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,nil,CLS CTX_INPROC_SERVER, IID_IShellLinkA, psl)) then
begin
psl.SetPath(PChar(lpszPathObj));
psl.SetDescription(PChar(lpszDesc));
psl.SetWorkingDirectory(PChar (ExtractFilePath (lpszPathObj)));
if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,ppf) ) then
begin
ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
Result:=true;
end;
end;
end; {CreateLink}


// ************************************************** ********************
// Eintrag im WinStartMenue
// ************************************************** ********************
procedure ErzeugeWinStartMenu;
begin

CreateFolder(SpecialDirectory(CSIDL_Programs)+'Neu ');
// ->Erstellt die Programmgruppe "Neu" im Programs-Menü.

CreateLink('C:\neu\Programm.exe',SpecialDirectory( CSIDL_Programs)+'neu\'+'Programm.lnk','Programm');
// ->Erstellt einen Link mit dem Titel "Programm" auf die Datei "C:\Test\Programm.exe"
// in der Programs-Gruppe.

end;



Wenn ich ErzeugeWinStartMenu aufrufe landet "Programm", also die Verknüpfung zu Programm.exe, im StartMenu unter "P". Der Ordner "NEU" wird im StartMenu nicht angezeigt.

Was hat sich da geändert, bzw. was mache ich falsch???

Viele Grüße
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz