检索Delphi窗口句柄

Jon*_*ury 7 delphi winapi

我试图从外部应用程序获取Delphi应用程序的窗口句柄.我可以看到创建了一些窗口(TApplication,TFrmMain和其他几个),我知道TApplication是"控制器",但从未见过.但是,我能读一下真实窗口的值是什么吗?我知道它是TFrmMain(对于这个特定的应用程序),但它是否有可能以某种方式实现这一点?信息是存储在窗口属性中还是其他地方?谢谢!

Rob*_*edy 14

不,没有记录的方法来发现哪个窗口Application.MainForm来自应用程序外部.在较新版本的Delphi中,主窗体的窗口句柄不一定是必须Application.MainForm.Handle的; 应用程序可以处理OnGetMainFormHandle事件以返回他们想要的任何内容 - 用于选择模式对话框的父窗口.

您可以通过在类名中查找带有"main"的窗口来猜测,但即使您找到了一个,也无法保证只有一个实例.应用程序可以有多个顶级窗口,在这种情况下,将它们中的任何一个指定为"主要"窗口没有多大意义.