我正在尝试扩展第 3 方应用程序,以便除了使用 Windows 窗体 GUI(需要混合模式)之外,还可以通过命令行调用它。这是一个相当简单的程序,它基本上加载一个文件,然后单击一个按钮它开始发送 UDP 网络数据包。
我需要从另一个调用应用程序并希望传入一个参数并且需要能够将 ExitCode 返回给调用应用程序。从我读过的内容来看,为了做到这一点,您需要添加编译器指令 {APPTYPE CONSOLE}。
我这样做了,我的应用程序按照我的意愿工作,只是发送网络数据包的速度变慢了。 我发现每当我在表格上移动鼠标时。即网络传输率显着提高。我怀疑存在某种类型的 Windows 消息队列问题,移动鼠标会导致中断,进而导致消息队列被处理?
我四处搜索并尝试在 Timer 中以 1ms 的间隔调用 Application.ProcessMessages 和 PeekMessages,但这根本没有帮助。我在这个用户手册中找到了一些其他应用程序,它说 APPTYPE CONSOLE 和 GUI 类型都支持 Indy 10。坦率地说,这只是让我感到困惑,因为我会假设所有网络库都可以在这两种模式下工作......但就像我说的我不熟悉 Delphi。
我很肯定这个问题被隔离在我的应用程序中的一行中,即是否包含 {APPTYPE CONSOLE}。
有人有想法么?
版本信息:
Delphi 7 Personal (Build 4.453)
Indy 9.0.4