fhpuqrgrpgvirzhpujbj Posted January 3, 2009 Share Posted January 3, 2009 I'm using .net, and I've been reading about some windows features on Microsofts site, how do I made use of stuff in a format like this: APIs: ITaskbarList3::SetProgressState ITaskbarList3::SetProgressValue Do I need to add a reference or something? Is it part of Windows API? NOTE: This is a Windows 7 Feature Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/ Share on other sites More sharing options...
0 Antaris Veteran Posted January 4, 2009 Veteran Share Posted January 4, 2009 The :: operator is not used in VB.NET to access namespace of type members. In VB.NET, along with C#, use the following: ITaskbarList3.SetProgressState , you also need to make sure you reference whatever libraries are required Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/#findComment-590362002 Share on other sites More sharing options...
0 sibbl Posted January 14, 2009 Share Posted January 14, 2009 anyone an idea how to bring ITaskbarList3 into c# .net? Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/#findComment-590423672 Share on other sites More sharing options...
0 hdood Posted January 16, 2009 Share Posted January 16, 2009 Ideally, you should wait for it to be officially added, but simply put ITaskbarList3 is a COM interface exposed by Explorer. SetProgressValue is a method of this interface. If you have the Windows 7 Beta SDK, it's defined in ShObjIdl.idl. You can rip the relevant parts out and put it in your own IDL. You then compile that with the MIDL compiler (midl /tlb tl.tlb tl.idl) and then convert that type library to an assembly with Tlbimp (tlbimp tl.tlb /out:TaskbarLib.dll). Finally, you add that assembly as a reference in your project. Here is an example I did just now (note that I make no guarantees about the correctness of this code, and I would not use it in production code without careful auditing first): [ uuid(683BF642-E9CA-4124-BE43-67065B2FA653), version(1.0), ] library TaskbarLib { [ uuid(56FDF342-FD6D-11d0-958A-006097C9A090), object, ] interface ITaskbarList : IUnknown { HRESULT _stdcall HrInit(); HRESULT _stdcall AddTab([in] long hwnd); HRESULT _stdcall DeleteTab([in] long hwnd); HRESULT _stdcall ActivateTab([in] long hwnd); HRESULT _stdcall SetActivateAlt([in] long hwnd); }; [ uuid(602D4995-B13A-429b-A66E-1935E44F4317), object, ] interface ITaskbarList2 : ITaskbarList { HRESULT MarkFullscreenWindow( [in] long hwnd, [in] BOOL fFullscreen); } cpp_quote("#ifdef MIDL_PASS") typedef IUnknown* HIMAGELIST; typedef IUNknown* HICON; cpp_quote("#endif") cpp_quote("#include <pshpack8.h>") typedef struct tagTHUMBBUTTON { DWORD dwMask; UINT iId; UINT iBitmap; HICON hIcon; WCHAR szTip[260]; DWORD dwFlags; } THUMBBUTTON, *LPTHUMBBUTTON; cpp_quote("#include <poppack.h>") [ uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf), object, ] interface ITaskbarList3 : ITaskbarList2 { // Flags for Setting Taskbar Progress state typedef [v1_enum] enum TBPFLAG { TBPF_NOPROGRESS = 0x00000000, TBPF_INDETERMINATE = 0x00000001, TBPF_NORMAL = 0x00000002, TBPF_ERROR = 0x00000004, TBPF_PAUSED = 0x00000008, } TBPFLAG; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)") // Flags for SetTabActive typedef [v1_enum] enum TBATFLAG { TBATF_USEMDITHUMBNAIL = 0x00000001, TBATF_USEMDILIVEPREVIEW = 0x00000002, } TBATFLAG; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBATFLAG)") HRESULT SetProgressValue( [in] long hwnd, [in] ULONGLONG ullCompleted, [in] ULONGLONG ullTotal); HRESULT SetProgressState( [in] long hwnd, [in] TBPFLAG tbpFlags); HRESULT RegisterTab( [in] long hwndTab, [in] HWND hwndMDI); HRESULT UnregisterTab( [in] long hwndTab); HRESULT SetTabOrder( [in] long hwndTab, [in] long hwndInsertBefore); HRESULT SetTabActive( [in] long hwndTab, [in] long hwndMDI, [in] TBATFLAG tbatFlags); HRESULT ThumbBarAddButtons( [in] long hwnd, [in] UINT cButtons, [in, size_is(cButtons)] LPTHUMBBUTTON pButton); HRESULT ThumbBarUpdateButtons( [in] long hwnd, [in] UINT cButtons, [in, size_is(cButtons)] LPTHUMBBUTTON pButton); HRESULT ThumbBarSetImageList( [in] long hwnd, [in] HIMAGELIST himl); HRESULT SetOverlayIcon( [in] long hwnd, [in] HICON hIcon, [in, string] LPCWSTR pszDescription); HRESULT SetThumbnailTooltip( [in] long hwnd, [in, string] LPCWSTR pszTip); HRESULT SetThumbnailClip( [in] long hwnd, [in] RECT *prcClip); } [ uuid(56FDF344-FD6D-11d0-958A-006097C9A090) ] coclass TaskbarList { interface ITaskbarList3; } }; To use it, you would do something like using TaskbarLib; TaskbarList tl3 = new TaskbarList(); tl3.HrInit(); tl3.SetProgressValue((int)this.Handle, 50, 100); I've included the version I compiled as an attachment, but remember that it comes with no warranties of any kind. TaskbarLib.zip Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/#findComment-590434472 Share on other sites More sharing options...
0 fhpuqrgrpgvirzhpujbj Posted January 25, 2009 Author Share Posted January 25, 2009 OMG I know Im a little late but thank you so much hdood with a little messing around and your lib I got it to works thank you! Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/#findComment-590478168 Share on other sites More sharing options...
0 stumper66 Posted February 2, 2009 Share Posted February 2, 2009 Awesome, that .dll did exactly what I needed! Thanks x1000. Would you be kind enough to upload the source code for that .dll too? I'll send you a digital beer! Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/#findComment-590515920 Share on other sites More sharing options...
0 hdood Posted February 2, 2009 Share Posted February 2, 2009 The code in my post is the full IDL source I used to build it. You just pass it through midl and tlbimp to create the DLL. Link to comment https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/#findComment-590516422 Share on other sites More sharing options...
Question
fhpuqrgrpgvirzhpujbj
I'm using .net, and I've been reading about some windows features on Microsofts site, how do I made use of stuff in a format like this:
Do I need to add a reference or something? Is it part of Windows API?
NOTE: This is a Windows 7 Feature
Link to comment
https://www.neowin.net/forum/topic/716968-using-apis-in-a-objectaction-format/Share on other sites
6 answers to this question
Recommended Posts