我正在使用 user32.dll 中的 FindWindow 方法查找窗口并获取句柄,但是是否可以从句柄中获取窗体控件?并像普通表格一样使用它?示例:
int myhwnd = FindWindow(null, "MyWindow");
form myform = SomeMagic.GetFormFromHandle(myhwnd);
myform.Visible = false;
还是必须继续使用user32.dll中的方法向窗口发送消息?
最佳答案
如果它是一个托管窗口(您使用 System.Windows.Forms 创建它,并且它继承自 System.Windows.Forms.Control),您可以使用
获取对 Control 对象的引用Control.FromHandle(myIntPtr);
然后您只需获取控件的父控件,直到获取表单。
如果没有,您将无法获得 Control 对象,但您可以做的是创建一个 NativeWindow,并使用 AssignHandle 将 IntPtr 句柄分配给该对象。这至少会让您获得对 WndProc 和类似内容的一些访问权限,仅此而已。
关于c# - 从 HWND 到控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996547/