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 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 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 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 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 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 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 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
Share on other sites
6 answers to this question
Recommended Posts