你如何在VB.Net 3.0中获得控件的句柄?

时间:2009-04-27 13:44:19

标签: vb.net

我需要将控件的句柄作为IntPtr传递给vb.Net 3.0中的屏幕捕获类。试过这个,但得到一个无效的句柄异常。

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

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:0)

VB.Net没有3.0版本。你是在转而使用VS2008附带的VB.Net版本吗?如果是这样,那实际上是VB.Net版本9.0。从VB6切换时,它们没有重置版本号,它们只是保持递增。

这是一个WinForms项目吗?如果是这样,您可以使用CanvasMap.Handle来访问控件。请注意,此属性在实际显示之前无效,但在大多数情况下都是如此。

编辑 OP提到这是一个WPF应用程序

我不确定你是否可以为WPF应用程序中的任何控件执行此操作。可以使用WPF中的WindowInteropHelper(link)获取Window实例的句柄。但这对普通的Control实例不起作用。

为什么需要手柄?是否可以使用包含窗口的句柄?

答案 1 :(得分:0)

ctrlSomeControl.Handle