Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Anwendung zur Superbar hinzufügen (https://www.delphipraxis.net/186923-anwendung-zur-superbar-hinzufuegen.html)

greenmile 13. Okt 2015 09:33

Anwendung zur Superbar hinzufügen
 
Da ich schon länger danach gesucht habe, hier eine kurze und schnelle Möglichkeit, den Schnellstart einer Anwendung an die Superbar zu heften.

Code:
  procedure PinToTaskbar(strPath, strApp: AnsiString);
  var
    Buffer: array [0 .. 1023] of char;
    BufferLen: Integer;

    vShell, vFolder, vFolderItem, vItemVerbs: Variant;
    vPath, vApp: Variant;
    Count: Integer;
    dllHnd: LongInt;
    ItemName, FnkName: AnsiString;
  begin
    Try
      dllHnd   := SafeLoadLibrary('Shell32.dll');
      If dllHnd<32 then Exit;
      BufferLen := LoadString(dllHnd, 5386, Buffer, 255);
      FreeLibrary(dllHnd);

      if (BufferLen>0) then begin
        SetString(FnkName, Buffer, BufferLen);
        vShell := CreateOleObject('Shell.Application');
        vPath  := strPath;
        vFolder := vShell.NameSpace(vPath);
        vApp   := strApp;
        vFolderItem := vFolder.ParseName(vApp);
        vItemVerbs := vFolderItem.Verbs;

        for Count := 1 to vItemVerbs.Count do begin
          ItemName := vItemVerbs.Item(Count).Name;
          if (ItemName=FnkName) then begin
            vItemVerbs.Item(Count).DoIt;
            break;
          end;
        end;
      end;
    Except
    End;
  end;
Beispiel: PinToTaskbar('c:\windows','Notepad.exe');

Dalai 13. Okt 2015 13:45

AW: Anwendung zur Superbar hinzufügen
 
Nur als Hinweis: Es war Absicht von Microsoft, keine programmatische Möglichkeit einzubauen, mit denen Programme sich selbst (oder irgendwelche anderen Dinge) an die Taskleiste oder das Startmenü anheften. Mehr Infos zu den Hintergründen bei StackOverflow sowie The Old New Thing.

Um dennoch etwas in die "unerlaubte" Richtung zu sagen: Die Sache geht noch einfacher: ShellExecute mit den - offenbar komplett undokumentierten - Verbs "taskbarpin" bzw. "taskbarunpin". Ersteres funktioniert natürlich nur mit der zu pinnenden Datei, letzteres ausschließlich mit der entstandenen .lnk im entsprechenden Verzeichnis (Quick Launch\User Pinned\Taskbar).

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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