Seite 1 von 1
Suche API Calls "Zuletzt verwendete Elemente" aus dem Windows Explorer & Outlook
Verfasst: 17.05.2023, 14:29
von Grendelbox
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.
Danke im voraus

Re: Suche API Calls "Zuletzt verwendete Elemente" aus dem Windows Explorer & Outlook
Verfasst: 19.05.2023, 00:17
von Jim
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