2009-04-27 2 views
0

Мне нужно получить дескриптор элемента управления как IntPtr, чтобы перейти к классу захвата экрана в vb.Net 3.0. Пробовал это, но получил исключение недействительного дескриптора.Как получить ручку управления в VB.Net 3.0?

Dim hwnd As IntPtr = Runtime.InteropServices.GCHandle.Alloc(CanvasMap) 

Любая помощь была бы принята с благодарностью.

Thanks

ответ

0

Нет версии 3.0 VB.Net. Вы ссылаетесь вместо этого на версию VB.Net, поставляемую с VS2008? Если это так, на самом деле это версия VB.Net версии 9.0. Они не сбросили номер версии при переключении с VB6, они просто продолжали увеличиваться.

Это проект WinForms? Если это так, вы можете просто использовать CanvasMap.Handle для доступа к элементу управления. Обратите внимание: это свойство не будет действительным до тех пор, пока оно не будет отображаться, но это верно для большинства сценариев.

EDIT OP упомянул это приложение WPF

Я не уверен, что вы можете сделать это просто любой элемент управления в приложении WPF. Можно получить дескриптор экземпляра Window с помощью WindowInteropHelper в WPF (link). Но это не будет работать для обычных экземпляров Control.

Зачем вам нужна ручка? Будет ли работать, чтобы иметь дескриптор содержащего окна?

+0

Получите эту ошибку, когда я попробую CanvasMap.Handle. «handle» не является членом «System.Windows.Controls.Canvas». – user38349

+0

Извините, это приложение WPF. – user38349

+0

Я думаю, он имел в виду VB.NET с .NET 3.0. –

Смежные вопросы