Suche API Calls "Zuletzt verwendete Elemente" aus dem Windows Explorer & Outlook

Probleme mit dem Desktop oder dem Datei Explorer?
Antworten
Grendelbox
Beobachter
Beobachter
Beiträge: 1
Registriert: 18.10.2017, 06:13
Gender:

Suche API Calls "Zuletzt verwendete Elemente" aus dem Windows Explorer & Outlook

Beitrag von Grendelbox » 17.05.2023, 14:29

Hi ,

ich frage hiermit für meinen Kollegen mal auf gut Glück in die Runde. :)

Hat jemand Programmiertechnische Infos zu API-(whatever)-Calls für die

„Zuletzt verwendeteten Elemente“ wie aus dem Windows Explorer & Outlook ???
(Siehe Screenshots)
Mein Kollege würde diese geniale Funktion gerne auch in unseren Programmen als Aufruf nutzen.

Bild

Bild


Danke im voraus :dankeschoen:

Tante Google

Suche API Calls "Zuletzt verwendete Elemente" aus dem Windows Explorer & Outlook

Beitrag von Tante Google » 17.05.2023, 14:29


Jim
Berater
Berater
Beiträge: 249
Registriert: 23.02.2019, 19:42
Hat sich bedankt: 1 Mal
Danke erhalten: 23 Mal

Re: Suche API Calls "Zuletzt verwendete Elemente" aus dem Windows Explorer & Outlook

Beitrag von Jim » 19.05.2023, 00:17

hi,

ich habe ChatGPT gefragt
zeige mir den api befehl wie man einen link unter "Schnellzugriff" anlegt in harbour programm sprache
und diese Antwort erhalten ( CODE für harbour)
Um einen Link unter "Schnellzugriff" in Windows programmatisch hinzuzufügen, müssen Sie systemeigene Windows-APIs oder Frameworks verwenden. In der Harbour-Programmiersprache können Sie das Windows Shell COM-Objekt verwenden, um den Link hinzuzufügen. Hier ist ein Beispielcode, der einen Link zum "Schnellzugriff" in Windows hinzufügt:

Code: Alles auswählen

#include "hbapi.h"
#include "hbapierr.h"
#include "hbapirdd.h"
#include "hbapiitm.h"
#include <windows.h>
#include <objbase.h>
#include <comdef.h>
#include <shobjidl.h>
#include <shlguid.h>

HB_FUNC(ADD_LINK_TO_QUICK_ACCESS)
{
    LPCSTR path = hb_parc(1);
    LPCSTR linkName = hb_parc(2);
    HRESULT result;

    CoInitialize(NULL);
    IShellItem* item;
    IShellItem* folder;
    result = SHCreateItemFromParsingName(path, NULL, IID_PPV_ARGS(&item));
    if (SUCCEEDED(result))
    {
        result = SHGetKnownFolderItem(FOLDERID_Links, KF_FLAG_CREATE, NULL, IID_PPV_ARGS(&folder));
        if (SUCCEEDED(result))
        {
            result = folder->BindToHandler(NULL, BHID_SFUIObject, IID_PPV_ARGS(&folder));
            if (SUCCEEDED(result))
            {
                IShellLink* link;
                result = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&link));
                if (SUCCEEDED(result))
                {
                    link->SetIDList(item);
                    link->SetDescription(linkName);
                    IPersistFile* file;
                    result = link->QueryInterface(IID_PPV_ARGS(&file));
                    if (SUCCEEDED(result))
                    {
                        WCHAR path[MAX_PATH];
                        SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path);
                        wcscat_s(path, MAX_PATH, L"\\Microsoft\\Windows\\Links\\");
                        wcscat_s(path, MAX_PATH, linkName);
                        wcscat_s(path, MAX_PATH, L".lnk");
                        result = file->Save(path, TRUE);
                        file->Release();
                    }
                    link->Release();
                }
                folder->Release();
            }
            item->Release();
        }
    }
    CoUninitialize();

    if (SUCCEEDED(result))
    {
        hb_retnl(1);
    }
    else
   

Antworten