Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Program Files(x86) überhaupt noch sinngemäß

  Alt 21. Jan 2019, 19:38
Zitat:
wenn man das ITaskbarList3 Interface integriert mit und ohne Adminrechte vollkommen normal funktioniert
Wo du keinen Anteil dran hast oder?
Ich will damit sagen du verwendest fertig vorhandene Komponente.

Zitat:
auch mit den Buttons
Dann liest du nicht richtig was ich geschrieben habe.
Zitat:
VLC und andere Programme zeigen ja auch diese Buttons an und es klappt egal ob mit oder ohne Adminrechten
Ich weis nicht was du unter Button verstehst.. niemand hat geschrieben das die Button nicht angezeigt werden sie haben beim klick nur keine Auswirkung.

Für die Overlay Button..

Deaktiviere unter Personalisieren\Taskleiste.. Badges auf Taskleiste danach kannst du mir sagen ob es noch funktioniert!
Das hat nichts aber auch gar nichts mit meiner Implementierung zu tun sondern damit das Win10 sich in allem Einmischt. Warum braucht man dafür einen Systemsteuerungseintrag?
Welcher sinn steckt dahinter.

Da du anscheinend sehr viel zu wissen scheinst.. sage mir bitte was bei meiner Implementierung (Code) falsch sein soll.
Code:
[
  uuid(a8ce1d71-bfd6-4b55-990a-be75aeb926b8),
  helpstring("Taskbar API for VisualBasic (Windows 10)"),
  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 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(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);
  };
}
Bedenke es handelt sich hier um eine *.tlb Lib die im System registriert werden muss. (In Delphi auch? Denke mal nicht)
Und hier liegt der Unterschied bzw.. kann ein Problem entstehen wenn ich etwas registrieren muss mit Adminrechten die TypleLib sie aber nicht braucht.

PS:
Nochmal es hat immer funktioniert nur nicht unter Win10!

Zitat:
Von der Implementierung her sehe ich zwischen Delphi und VB6 (abgesehen von der ganz persönlich für mich schrecklichen VB6 Syntax)
Ich will dir nicht zu nahe treten aber sorry du hast einfach keine Ahnung von der Materie btw. den Unterschieden zwischen VB6\Delphi
Dafür muss man sich erstmal wirklich damit beschäftigt haben es gibt keine Interface Implementierung für ITaskbarList3 denn das ist schlichtweg in VB6 gar nicht möglich nur über eine eigens in C++ erstellte TypeLib.
Nun welche Syntax ist besser die von C++ oder diese von Delphi darüber kann man wahrlich streiten.


gruss

Geändert von EWeiss (21. Jan 2019 um 19:49 Uhr)
  Mit Zitat antworten Zitat