我需要将控件的句柄作为IntPtr传递给vb.Net 3.0中的屏幕捕获类。试过这个,但得到一个无效的句柄异常。
Dim hwnd As IntPtr = Runtime.InteropServices.GCHandle.Alloc(CanvasMap)
非常感谢任何帮助。
由于
答案 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
?