我的一些客户希望能够手动扩展我的应用程序(当Windows dpi设置为96时),因此我必须实现扩展.不幸的是,这些客户不能将Windows DPI设置为其他值,并让WIndows扩展我的应用程序,因为他们使用的一些非常重要的应用程序在<> 96 DPI的分辨率下表现不佳.
我设法使我的Delphi 10.1应用程序规模相当好,即使在200%,但因素越高,一些比例变得"不太好看".许多第三方组件需要特殊的缩放处理,即使这样也不能100%准确地扩展.虽然按窗口缩放的应用程序在高分辨率下看起来有点模糊,但所有比例都是100%准确,并且应用程序看起来更专业.
所以我问自己是否有可能创建一个允许告诉Windows将扩展作为默认设置的设置,如果客户想要一个与当前Windows扩展不同的扩展,则只能自行扩展.此设置托管在应用程序启动时读取的可执行文件的Windows清单中.有没有办法在运行时更改它(应用程序的早期启动)?创建具有不同清单的两个可执行文件肯定不是一个好的解决方案.
谢谢你的帮助
是否不需要在创建时释放 TStringDynArray,例如 SplitString?尝试释放它失败,因为它不是对象。
当我在后台进程中使用它时,我担心在没有明确释放内存的情况下使用它会造成内存泄漏。
使用 Delphi 10.4 编译我的 win32 客户端/服务器应用程序(使用 INDY 和 TMS Sparkle)后,出现 ssl 错误。我在服务器端使用 Indy 并使用自签名证书,在客户端使用 Indy。错误消息是(翻译自德语):
SSL 连接错误。EOF 遇到违反协议的情况。
从 10.3 开始,我没有更改任何代码或环境,它运行得很好。我可以将其分解到服务器端,因为旧服务器(在 10.3 中编译)与新客户端(在 10.4 中编译)一起运行,但在尝试连接到新服务器时旧客户端也会中断。
这是我初始化 SSL 的方式:
SecureServer := TIndySparkleHTTPServer.create(nil);
SecureServer.DefaultPort := SecurePort;
// Initialize SSL with self signed certificate
SSLHandler := TIdServerIOHandlerSSLOpenSSL.create(SecureServer);
SSLHandler.SSLOptions.CertFile := SharedVals.ServerPath + 'appcert.pem';
SSLHandler.SSLOptions.RootCertFile := SharedVals.ServerPath + 'approot.pem';
SSLHandler.SSLOptions.KeyFile := SharedVals.ServerPath + 'appkey.pem';
SSLHandler.SSLOptions.Method := sslvSSLv23;
SecureServer.IOHandler := SSLHandler;
Run Code Online (Sandbox Code Playgroud)
Emba 在 10.3 中成功打破了 Indy,也许这是另一个类似的案例?
如何在运行时通过代码访问Delphi项目中表单的DFM资源?
背景:我希望能够在运行时解析表单的 DFM,以根据需要创建 HTML 和其他表示形式。当然,我可以在构建项目之前解析它们并创建额外的资源。但当它们被编译到软件中并在运行时使用时,我相信它们也应该可以在代码中以某种方式访问。
我目前使用 Delphi 11,很快就会使用 Delphi 12。
delphi embedded-resource dfm delphi-11-alexandria delphi-12-athens
是否可以确定 Windows 应用程序(Delphi)中关闭请求的来源?
背景:我可以选择路由关闭请求以最小化窗口,以保持应用程序“在后台”运行。
procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
... different checking stuff e.g. unsaved changes
// Redirect Close to minimize but allow close if requested from minimized state
if FMinimize and (WindowState <> wsMinimized) then
begin
logger.debug('... closing main form redirected to minimize');
WindowState := wsMinimized;
CanClose := false;
exit;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这效果很好,并且允许通过右键单击任务栏(如果已经最小化)来关闭窗口。作为锦上添花,我想确定关闭请求是否来自右键单击任务栏图标以立即关闭,即使窗口尚未最小化。有没有办法确定关闭请求的来源?