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