Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Referenzauswertung

  Alt 28. Dez 2018, 08:29
Ok, das hatte ich falsch verstanden. Dabei ist das Verhalten bei mir genau wie von dir beschrieben, ja.
Ist aber seltsam oder ?
Den ganzen Ärger hatte ich unter Win7 wie gesagt nicht.
Da ist einiges sehr im argen..

Danke für das Testen.
Hier mal der Source der TypeLib damit ihr mal seht was unter VB6 für ein Aufwand betrieben werden musste um die TaskBarJumpList zu implementieren.

Code:
[
  uuid(a8ce1d71-bfd6-4b55-990a-be75aeb926b8),
  helpstring("Taskbar API for VisualBasic (Windows7)"),
  version(1.0)
]

library TaskbarAPI
{
  typedef struct UUID
  {
    long Data1;
    short Data2;
    short Data3;
    unsigned char Data4[8];
  } UUID;
  typedef UUID *REFGUID;
  typedef [public] UUID IID;
  typedef UUID *REFIID;
  typedef [public] UUID CLSID;
  typedef UUID *REFCLSID;
  typedef [public] UUID GUID;

  typedef struct RECT
  {
    long Left;
    long Top;
    long Right;
    long Bottom;
  } RECT;

  typedef struct FILETIME
  {
    long LowDateTime;
    long HighDateTime;
  } FILETIME;

  typedef struct WIN32_FIND_DATAW
  {
    long FileAttributes;
    FILETIME CreationTime;
    FILETIME LastAccessTime;
    FILETIME LastWriteTime;
    long FileSizeHigh;
    long FileSizeLow;
    long Reserved0;
    long Reserved1;
    unsigned char FileName[520];
    unsigned char AlternateFileName[28];
  } WIN32_FIND_DATAW;

  typedef struct PROPERTYKEY
  {
    UUID fmtid;
    long pid;
  } PROPERTYKEY;

  typedef struct PROPVARIANT
  {
    short vt;
    short wReserved1;
    short wReserved2;
    short wReserved3;
    long val;
  } PROPVARIANT;

  typedef enum SLGPConstants
  {
    SLGP_SHORTPATH = 0x1,
    SLGP_UNCPRIORITY = 0x2,
    SLGP_RAWPATH = 0x4,
    SLGP_RELATIVEPRIORITY = 0x8
  } SLGPConstants;

  typedef enum SIGDNConstants
  {
    SIGDN_NORMALDISPLAY                = 0x00000000,
    SIGDN_PARENTRELATIVEPARSING        = 0x80018001,
    SIGDN_DESKTOPABSOLUTEPARSING       = 0x80028000,
    SIGDN_PARENTRELATIVEEDITING        = 0x80031001,
    SIGDN_DESKTOPABSOLUTEEDITING       = 0x8004c000,
    SIGDN_FILESYSPATH                  = 0x80058000,
    SIGDN_URL                          = 0x80068000,
    SIGDN_PARENTRELATIVEFORADDRESSBAR  = 0x8007c001,
    SIGDN_PARENTRELATIVE               = 0x80080001 
  } SIGDNConstants;

  typedef enum SFGAOConstants
  {
    SFGAO_CANCOPY = 0x00000001,
    SFGAO_CANMOVE = 0x00000002,
    SFGAO_CANLINK = 0x00000004,
    SFGAO_STORAGE = 0x00000008,
    SFGAO_CANRENAME = 0x00000010,
    SFGAO_CANDELETE = 0x00000020,
    SFGAO_HASPROPSHEET = 0x00000040,
    SFGAO_DROPTARGET = 0x00000100,
    SFGAO_CAPABILITYMASK = 0x00000177,
    SFGAO_SYSTEM = 0x00001000,
   SFGAO_ENCRYPTED = 0x00002000,
    SFGAO_ISSLOW = 0x00004000,
    SFGAO_LINK = 0x00010000,
    SFGAO_SHARE = 0x00020000,
    SFGAO_READONLY = 0x00040000,
    SFGAO_GHOSTED = 0x00008000,
    SFGAO_HIDDEN = 0x00080000,
    SFGAO_DISPLAYATTRMASK = 0x000FC000,
    SFGAO_NONENUMERATED = 0x00100000,
    SFGAO_NEWCONTENT = 0x00200000,
    //SFGAO_CANMONIKER = ,
    //SFGAO_HASSTORAGE = ,
    SFGAO_STREAM = 0x00400000,
    SFGAO_VALIDATE = 0x01000000,
    SFGAO_REMOVABLE = 0x02000000,
    SFGAO_COMPRESSED = 0x04000000,
    SFGAO_BROWSABLE = 0x08000000,
    SFGAO_FILESYSANCESTOR = 0x10000000,
    SFGAO_STORAGEANCESTOR = 0x00800000,
    SFGAO_FOLDER = 0x20000000,
    SFGAO_FILESYSTEM = 0x40000000,
    SFGAO_HASSUBFOLDER = 0x80000000,
    SFGAO_CONTENTSMASK = 0x80000000,
    SFGAO_STORAGECAPMASK = 0x70C50008,
    SFGAO_PKEYSFGAOMASK = 0x81044000
  } SFGAOConstants;

  typedef enum SICHINTConstants
  {
    SICHINT_DISPLAY = 0x00000000,
    SICHINT_ALLFIELDS = 0x80000000,
    SICHINT_CANONICAL = 0x10000000
  } SICHINTConstants;
 
  typedef enum SIATTRIBFLAGSConstants
  {
    SIATTRIBFLAGS_AND = 0x00000001,
    SIATTRIBFLAGS_OR = 0x00000002,
    SIATTRIBFLAGS_APPCOMPAT = 0x00000003,
    SIATTRIBFLAGS_MASK = 0x00000003
  } SIATTRIBFLAGSConstants;

  typedef enum SLRConstants
  {
    SLR_NO_UI = 0x0001,
    SLR_UPDATE = 0x0004,
    SLR_NOUPDATE = 0x0008,
    SLR_NOSEARCH = 0x0010,
    SLR_NOTRACK = 0x0020,
    SLR_NOLINKINFO = 0x0040,
    SLR_INVOKE_MSI = 0x0080,
    SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
  } SLRConstants;

  typedef enum KNOWNDESTCATEGORYConstants
  {
    KDC_FREQUENT = 0x1,
    KDC_RECENT = 0x2
  } KNOWNDESTCATEGORYConstants;

  typedef enum TBPFLAG
  {
    TBPF_NOPROGRESS    = 0x00000000,
    TBPF_INDETERMINATE = 0x00000001,
    TBPF_NORMAL        = 0x00000002,
    TBPF_ERROR         = 0x00000004,
    TBPF_PAUSED        = 0x00000008,
  } TBPFLAG;


  [
    uuid(00000000-0000-0000-C000-000000000046),
    version(1.0),
    helpstring("IUnknown-Interface for Visual Basic"),
    odl
  ]
  interface IVBUnknown
  {
    long __stdcall QueryInterface([in] UUID* IID, [in,out] void* pObject);
    long __stdcall AddRef();
    long __stdcall Release();
  };

  [
    uuid(000214F9-0000-0000-C000-000000000046),
    version(1.0),
    helpstring("IShellLinkW-Interface for Visual Basic"),
    odl
  ]
  interface IVBShellLinkW : IVBUnknown
  {
    long __stdcall GetPath([in,out] LPWSTR Path, [in] int Pathsize, [in,out] WIN32_FIND_DATAW *FileData, [in] SLGPConstants Flags);
    long __stdcall GetIDList([in,out] long *pIDL);
    long __stdcall SetIDList([in] long pIDL);
    long __stdcall GetDescription([in,out] LPWSTR Descr, [in] int Buffersize);
    long __stdcall SetDescription([in] LPWSTR Descr);
    long __stdcall GetWorkingDirectory([in,out] LPWSTR WorkingDir, [in] int Buffersize);
    long __stdcall SetWorkingDirectory([in] LPWSTR WorkingDir);
    long __stdcall GetArguments([in,out] LPWSTR Args, [in] int Buffersize);
    long __stdcall SetArguments([in] LPWSTR Args);
    long __stdcall GetHotkey([in,out] short *Hotkey);
    long __stdcall SetHotkey([in] short Hotkey);
    long __stdcall GetShowCmd([in,out] int *ShowCmd);
    long __stdcall SetShowCmd([in] int ShowCmd);
    long __stdcall GetIconLocation([in,out] LPWSTR IconPath, [in] int IconPathSize, [in,out] int *iIcon);
    long __stdcall SetIconLocation([in] LPWSTR IconPath, [in] int iIcon);
    long __stdcall SetRelativePath([in] LPWSTR RelPath, [in] long reserviert);
    long __stdcall Resolve([in] long hWnd, [in] SLRConstants Flags);
    long __stdcall SetPath([in] LPWSTR Path);
  };

  [
    uuid(43826D1E-E718-42EE-BC55-A1E261C37BFE),
    version(1.0),
    helpstring("IShellItem-Interface for Visual Basic"),
    odl
  ]
  interface IVBShellItem : IVBUnknown
  {
    long _stdcall BindToHandler([in] long pIBindCtx, [in] UUID* rbhid, [in] UUID* riid, [in, out] void* ppvOut);
    long _stdcall GetParent([in, out] IVBShellItem** ppsi);
    long _stdcall GetDisplayName([in] SIGDNConstants sigdnName, [in, out] LPWSTR* ppszName);
    long _stdcall GetAttributes([in] SFGAOConstants sfgaoMask, [in, out] SFGAOConstants* psfgaoAttribs);
    long _stdcall Compare([in] IVBShellItem* psi, [in] SICHINTConstants hint, [in, out] int* piOrder);
  };

  [
    uuid(70629033-E363-4A28-A567-0DB78006E6D7),
    version(1.0),
    helpstring("IEnumShellItems-Interface for Visual Basic"),
    odl
  ]
  interface IVBEnumShellItems : IVBUnknown
  {
    long _stdcall Next([in] long Count, [in, out] IVBShellItem** Return, [in, out] long* Copied);
    long _stdcall Skip([in] long Count);
    long _stdcall Reset();
    long _stdcall Clone([in, out] IVBEnumShellItems** pReturn);
  };
 
  [
    uuid(787F8E92-9837-4011-9F83-7DE593BDC002),
    version(1.0),
    helpstring("IShellItemArray-Interface for Visual Basic"),
    odl
  ]
  interface IVBShellItemArray : IVBUnknown
  {
    HRESULT _stdcall BindToHandler([in] long pbc, [in] UUID* rbhid, [in] UUID* riid, [in, out] IVBUnknown** ppvOut);
    HRESULT _stdcall GetAttributes([in] SIATTRIBFLAGSConstants dwAttribFlags, [in] SFGAOConstants sfgaoMask, [in, out] SFGAOConstants* psfgaoAttribs);
    HRESULT _stdcall GetCount([in, out] long* pdwNumItems);
    HRESULT _stdcall GetItemAt([in] long dwIndex, [in, out] IVBShellItem** ppsi);
    HRESULT _stdcall EnumItems([in, out] IVBEnumShellItems** ppenumShellItems);
  };
 
  [
    uuid(886D8EEB-8CF2-4446-8D02-CDBA1DBDCF99),
    version(1.0),
    helpstring("IPropertyStore for Visual Basic"),
    odl
  ]
  interface IVBPropertyStore : IVBUnknown
  {
    long __stdcall GetCount([in] long* cProps);
    long __stdcall GetAt([in] long iProp, [in] PROPERTYKEY* pKey);
    long __stdcall GetValue([in] PROPERTYKEY* key, [in,out] PROPVARIANT* pv);
    long __stdcall SetValue([in] PROPERTYKEY* key, [in] PROPVARIANT* propvar);
    long __stdcall Commit();
  };

  [
    uuid(92CA9DCD-5622-4bba-A805-5E9F541BD8C9),
    version(1.0),
    helpstring("IObjectArray-Interface for Visual Basic"),
    odl
  ]
  interface IVBObjectArray : IVBUnknown
  {
    long __stdcall GetCount([out] long* pcObjects);
    long __stdcall GetAt([in] long uiIndex, [in] UUID* riid, [in,out] void* ppv);
  };

  [
    uuid(5632b1a4-e38a-400a-928a-d4cd63230295),
    version(1.0),
    helpstring("IObjectCollection-Interface for Visual Basic"),
    odl
  ]
  interface IVBObjectCollection : IVBObjectArray
  {
    long __stdcall AddObject([in] IVBUnknown* punk);
    long __stdcall AddFromArray([in] IVBObjectArray* poaSource);
    long __stdcall RemoveObjectAt([in] long uiIndex);
    long __stdcall Clear();
  };

  [
    uuid(6332debf-87b5-4670-90c0-5e57b408a49e),
    version(1.0),
    helpstring("ICustomDestinationList-Interface for Visual Basic"),
    odl
  ]
  interface IVBCustomDestinationList : IVBUnknown
  {
    long __stdcall SetAppID([in] long pszAppID);
    long __stdcall BeginList([out] long* pcMinSlots, [in] UUID* riid, [in,out] void* ppv);
    long __stdcall AppendCategory([in] long pszCategory, [in] IVBObjectArray* poa);
    long __stdcall AppendKnownCategory([in] KNOWNDESTCATEGORYConstants category);
    long __stdcall AddUserTasks([in] IVBObjectArray* poa);
    long __stdcall CommitList();
    long __stdcall GetRemovedDestinations([in] UUID* riid, [in,out] void* ppv);
    long __stdcall DeleteList([in] long pszAppID);
    long __stdcall AbortList();
  };

  [
    uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf),
    helpstring("ITaskbarList-Interface for Visual Basic"),
    odl
  ]
  interface IVBTaskbarList : IVBUnknown
  {
    long __stdcall HrInit();
    long __stdcall AddTab([in] LONG hwnd);
    long __stdcall DeleteTab([in] LONG hwnd);
    long __stdcall ActivateTab([in] LONG hwnd);
    long __stdcall SetActiveAlt([in] LONG hwnd);
    long __stdcall MarkFullscreenWindow([in] LONG hwnd,[in] LONG fFullscreen);
    long __stdcall SetProgressValue([in] LONG hwnd,[in] LONG ullCompleted_Low,[in] LONG ullCompleted_High,[in] LONG ullTotal_Low,[in] LONG ullTotal_High);
    long __stdcall SetProgressState([in] LONG hwnd,[in] TBPFLAG tbpFlags);
    long __stdcall RegisterTab([in] LONG hwndTab,[in] LONG hwndMDI);
    long __stdcall UnregisterTab([in] LONG hwndTab);
    long __stdcall SetTabOrder([in] LONG hwndTab,[in] LONG hwndInsertBefore);
    long __stdcall SetTabActive([in] LONG hwndTab,[in] LONG hwndMDI,[in] LONG dwReserved);
    long __stdcall ThumbBarAddButtons([in] LONG hwnd,[in] LONG cButtons,[in] LONG pButton);
    long __stdcall ThumbBarUpdateButtons([in] LONG hwnd,[in] LONG cButtons,[in] LONG pButton);
    long __stdcall ThumbBarSetImageList([in] LONG hwnd,[in] LONG himl);
    long __stdcall SetOverlayIcon([in] LONG hwnd,[in] LONG hIcon,[in] LONG pszDescription);
    long __stdcall SetThumbnailTooltip([in] LONG hwnd, [in] LONG pszTip);
    long __stdcall SetThumbnailClip([in] LONG hwnd, [in] RECT *prcClip);
  };
}
Batch Datei anlegen das reinschreiben und als Admin starten zum kompilieren.
Den Source natürlich als *.odl abspeichern

Code:
Mktyplib /nocpp TaskbarAPI.odl
PS:
Hmmm.. geht doch noch nicht.
Die Taskbar ja kann aber meine eigenen Plugins nicht mehr ausführen ohne Adminrechte und dann geht die Taskbar-Jumplist wieder nicht.
Langsam nervt es.
Jetzt muss ich mir einen Pfad aussuchen zur Installation der keine Adminrechte benötigt.
Was nehmen ProgramData, User\AppData\Local? (Entschuldigt: Aber was für ein Müll)

Habe es geändert meine Plugins die ich normalerweise über DllRegisterServer dynamisch einbinde registriere ich jetzt bei der Installation und gut ist.
Leider finde ich keine Möglichkeit diese Funktion mit Übergabe von Adminrechten zu starten.
Damit funktioniert es dann.

gruss

Geändert von EWeiss (28. Dez 2018 um 16:20 Uhr)
  Mit Zitat antworten Zitat