我正在为Delphi编写属性编辑器,我希望它显示在正确的屏幕上以支持多显示器。为了定位它,我想引用Delphi IDE的“主”形式。
我已尝试使用Application的MainForm属性和Application对象本身,但似乎都不起作用。我相信这是因为MainForm实际上是Nathanial Woolls在本文中引用的隐藏的TApplication实例(搜索“申请表”):
http://www.installationexcellence.com/articles/VistaWithDelphi/Original/Index.html
有没有人知道如何获取IDE的可见主窗体的句柄。我试图避免一些俗气,比如迭代所有表格并在标题中搜索“CodeGear RAD Studio”。
答案 0 :(得分:4)
IDE的主要形式是Application.MainForm。我的快速测试设计包:
procedure DoStuff(Form: TCustomForm);
var
S: string;
begin
S := Form.Caption;
Form.Caption := S + ' - this one';
try
ShowMessage(Format('%s [%s] on monitor %d', [Form.Name, Form.ClassName, Form.Monitor.MonitorNum]));
finally
Form.Caption := S;
end;
end;
initialization
DoStuff(Application.MainForm);
在我的情况下,在监视器0上显示“AppBuilder [TAppBuilder]”,我可以在主窗体的标题中看到“ - this this”后缀。 什么似乎不适用于你的情况?
答案 1 :(得分:2)
IIRC主要表单称为TAppBuilder
,因此FindWindow('TAppBuilder',nil)
之类的内容可能是您的起点。