Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何找到指针句柄的对象类型_C#_Pinvoke_Marshalling - Fatal编程技术网

C# 如何找到指针句柄的对象类型

C# 如何找到指针句柄的对象类型,c#,pinvoke,marshalling,C#,Pinvoke,Marshalling,我有一个有几个孩子的窗户把手。我列举了子窗口,剩下的是指针列表。如何找出每个指针的对象类型 我正在运行一个C#程序和Pinvoking。我正在寻找的对象的程序是用C++编写的。 我的第一个想法是尝试下面的方法,但没有成功 button_1 = (Button)Marshal.PtrToStructure(c_pinpoint[5], typeof(Button)); 调用以查找窗口类的名称 请注意,您实际上无法期望从窗口句柄获取C#对象。对于开始,窗口句柄可能不与C#对象关联。该程序可能不是C

我有一个有几个孩子的窗户把手。我列举了子窗口,剩下的是指针列表。如何找出每个指针的对象类型

我正在运行一个C#程序和Pinvoking。我正在寻找的对象的程序是用C++编写的。 我的第一个想法是尝试下面的方法,但没有成功

button_1 = (Button)Marshal.PtrToStructure(c_pinpoint[5], typeof(Button));
调用以查找窗口类的名称

请注意,您实际上无法期望从窗口句柄获取C#对象。对于开始,窗口句柄可能不与C#对象关联。该程序可能不是C#程序。窗口句柄可能处于不同的进程中


也许您真正需要做的是使用UI自动化来探索和自动化这个应用程序

你不能。指针本身不足以识别它是什么。你必须在某处维护这些信息,或者想出一个方案从地址或指向的内容中提取一些元数据。为什么Spy++可以告诉我这是一个按钮?我怎么能做同样的事情?@timi2shoes因为它可能首先将它转换成一个基类,比如
控件
,它可以从那里读取它需要的信息,根据需要重新转换到一个按钮(我不知道这在C中是否有效,因为Spy++没有使用C,所以它不会调用
Marshal.ptrostructure
)Spy++对不同的对象进行操作。你比较苹果和桔子。Spy++对窗口句柄进行操作。它们有类名。@David我有窗口句柄指针,这有什么不同?谢谢,这就是我需要的!