Принципиальный молчун
Зарегистрирован: 23 June 2008
Сообщения: 1
Примеры кода: 0
|
Не понимаю, как использовать ITaskbarList2 |
23 June 2008 18:35 |
|
|
|
|
Есть такой интерфейс - ITaskbarList2 : ITaskBarList (см. тут). Как утверждается в MSDN, он реализован в библиотеке shell32.dll, начиная с WinXP и старше. Мой реестр (Windows Server 2003) утверждает, что он реализован в shdocvw.dll. Как бы то ни было, ни там ни там я его обнаружить с помощью TlbView не могу, если я подключаю эти библиотеки к проекту - таких интерфейсов там не видно. По одному из найденных в ИНете советов симпортил руками:
[ComImport, Guid("56FDF342-FD6D-11D0-958A-006097C9A090"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITaskbarList
{
void HrInit();
void AddTab([In] ref IntPtr hwnd);
void DeleteTab([In] ref IntPtr hwnd);
void ActivateTab([In] ref IntPtr hwnd);
void SetActiveAlt([In] ref IntPtr hwnd);
}
[ComImport, Guid("602D4995-B13A-429B-A66E-1935E44F4317"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITaskbarList2 : ITaskbarList
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void MarkFullscreenWindow([In] ref IntPtr hwnd, [In] int fFullscreen);
}
[ComImport, Guid("602D4995-B13A-429B-A66E-1935E44F4317"), CoClass(typeof(TaskbarListClass))]
public interface TaskbarList : ITaskbarList2
{
}
[ComImport, Guid("56FDF344-FD6D-11D0-958A-006097C9A090"), ClassInterface((short)0), TypeLibType((short)2)]
public class TaskbarListClass : TaskbarList
{
public virtual extern void ActivateTab([In] ref IntPtr hwnd);
public virtual extern void AddTab([In] ref IntPtr hwnd);
public virtual extern void DeleteTab([In] ref IntPtr hwnd);
public virtual extern void HrInit();
public virtual extern void MarkFullscreenWindow([In] ref IntPtr hwnd, [In] int fFullscreen);
public virtual extern void SetActiveAlt([In] ref IntPtr hwnd);
}
Далее использую:
ITaskbarList2 helper = new TaskbarListClass();
helper.HrInit();
IntPtr hWnd = this.Handle;
helper.MarkFullscreenWindow(ref hWnd, 1);
helper.DeleteTab(ref hWnd);
Ошибок при этом никаких не выдается, но и ничего не происходит. Кто-нибудь, помогите разобраться - как этот интерфейс вообще использовать?!
Нет зверя, кроме Енота; и хвост его полосат!
(Полосоку Кусикава)
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 23 June 2008 18:35
|
|