1

尝试为我的 Delphi XE2 调整 AutoOpenUnit IDE Expert(实现 I-OTA-IDE-Notifier 并实现 FileNotification 事件)我偶然发现了一个问题......

我需要扫描代码编辑器(或 IDE 本身)打开的每个源文件。

我做了一个测试项目:控制台应用程序(DPR),它使用两个单元 - Unit1.pas 和 Unit2.pas

我删除项目 DSK 文件或保存在代码编辑器中未打开任何文件的项目,或仅保存 DPK 文件。

现在,.DPR 文件本身几乎从未通过通知程序事件。它发生的唯一情况是当我执行“打开项目”并指定它时。

但是,当我执行文件/重新打开时 - 它是 DRPOJ 文件发出的已打开信号,而不是 DPR 文件。当我在项目预打开的情况下重新启动 IDE 时,它再次“打开”DPROJ 文件,“跳过”DPR 文件。

有通知,如 Active Project 已更改。甚至还有项目 DSK 文件和默认空项目组文件的“文件打开”通知。但不适用于项目源文件。

在这里,我可以进行粗略的破解,从 DPROJ 文件中提取项目名称并“通知”自己。虽然这是事实,IDE不会为它触发一些“正常”事件???

更糟的是。如果我打开了项目(但项目 DPR 文件已关闭),然后我执行查看源操作 - 然后在代码编辑器打开项目的新选项卡时,专家仍然没有任何事件。

当在代码编辑器中打开带有项目根文件的新选项卡时,是否有办法确保 IDE 通知您?

UPD。我发现iOTAEditorNotifier,现在试图阅读 CnWizards 他们如何设法利用它,因为在 IDE OTA 中似乎没有对该接口的注册调用......

PS https://github.com/the-Arioch/XE2_AutoOpenUnit

PPS XE2 string double-free bug demo:http ://www.sql.ru/forum/1300873-a/xe2-string-double-free

4

0 回答 0