Ich möchte das ein Programm mehrere Einträge in der Superbar haben kann.
Laut
diesem Blogpost (Figure 3) geht das via
SHGetPropertyStoreForWindow.
Dazu habe ich den Code unten gefunden.
Der macht aber an allen Ecken und Enden Ärger.
Es beginnt damit, dass ich nicht finde in welcher
Unit IPropertyStore und tPROPVARIANT deklariert werden.
Delphi-Quellcode:
function SHGetPropertyStoreForWindow(
hwnd: HWND;
const riid: TGUID;
out ppv: IPropertyStore
): HResult; stdcall;
procedure TForm2.SetAppID(aHWND: hWnd; aAppID: string);
var pps,propsys:IPropertyStore ;
pv:tPROPVARIANT;
hr:HRESULT;
begin
hr:= SHGetPropertyStoreForWindow (self.Handle , IID_IPropertyStore ,@pps) ;
if Succeeded( hr) then
begin
if aAppID <>'' then
begin
hr:= InitPropVariantFromString(aAppID ,pv);
end
else
ZeroMemory(@pv,SizeOf(pv));
if Succeeded(hr) then
begin
pps.SetValue(PKEY_AppUserModel_ID,pv);
PropVariantClear(@pv);
end;
end;
end;