tak jeste abych to uzavrel a uz koncim:
jeste to nebyla konecna, protoze trida CVirtualDesktopManager je implementace, ale ne interface (ma mnohem vic metod a i poradi je jiny), ja hledam ve skutecnosti IVirtualDesktopManagerInternal2 (zrejme).
pustil jsem ghidru na to dll a sel hledat vtables od toho interface, kterej me zajima a vskutku jej nasel. ghidra z toho dll a pdb v podstate vyrobilo zpetne tu classu a rovnou vtable dekodovala do citelny formy, abych to nemusel delat manualne (to mi na tom druhym softu chybelo.. ono to umi python pluginy, ale to uz je placeny).
zde je videt: nalevo dekompilovana trida, napravo vtable, prvni tri volani jsou od IUnknown baze, ten zelenej zbytek je to co me zajima:
coz odpovida interfacu (a to je muj cil):
struct IVirtualDesktopManagerInternal : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE GetCount (UINT *pCount) = 0;
virtual HRESULT STDMETHODCALLTYPE MoveViewToDesktop (IApplicationView * pView, IVirtualDesktop * pDesktop) = 0;
virtual HRESULT STDMETHODCALLTYPE CanViewMoveDesktops (IApplicationView * pView, int * pfCanViewMoveDesktops) = 0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentDesktop (IVirtualDesktop ** desktop) = 0;
virtual HRESULT STDMETHODCALLTYPE GetDesktops (IObjectArray ** ppDesktops) = 0;
virtual HRESULT STDMETHODCALLTYPE GetAdjacentDesktop (IVirtualDesktop * pDesktopReference, AdjacentDesktop uDirection, IVirtualDesktop ** ppAdjacentDesktop) = 0;
virtual HRESULT STDMETHODCALLTYPE SwitchDesktop (IVirtualDesktop * pDesktop) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateDesktopW(IVirtualDesktop ** ppNewDesktop) = 0;
virtual HRESULT STDMETHODCALLTYPE MoveDesktop(IVirtualDesktop * desktop, HMONITOR monitor, INT32 index);
..
};
MIDL_INTERFACE("EF9F1A6C-D3CC-4358-B712-F84B635BEBE7") // build 10130
IVirtualDesktopManagerInternal10130: public IVirtualDesktopManagerInternal { };
MIDL_INTERFACE("AF8DA486-95BB-4460-B3B7-6E7A6B2962B5") // build 10240
IVirtualDesktopManagerInternal10240 : public IVirtualDesktopManagerInternal { };
MIDL_INTERFACE("f31574d6-b682-4cdc-bd56-1827860abec6") // build 10536
IVirtualDesktopManagerInternal10536 : public IVirtualDesktopManagerInternal { };
MIDL_INTERFACE("f31574d6-b682-4cdc-bd56-1827860abec6") // build 16299
IVirtualDesktopManagerInternal16299 : public IVirtualDesktopManagerInternal { };
dal sem kousek vic, aby bylo videt jak se furt meni ty guidy, plus treba v buildu 22000 pribyly i dalsi metody
--
tak jo, diky za pozornost - kdybych to vypravel v hospode, vsichni by meli skelny oci a pohled do nekonecna :)
(a proc mi to padalo? mel jsem prehozene metody v interface, duh)