我使用批处理脚本创建计划任务:
schtasks /Create /F /RL highest /SC onlogon /TR "C:\MyFile.exe" /TN "MyDescription"
Run Code Online (Sandbox Code Playgroud)
它在每次用户登录时完美地运行我的应用程序。但是,它会自动启用“如果任务运行时间超过”则停止任务“3 天”选项。我认为这是默认行为。
我的应用程序可能在服务器上运行,并且 3 天后不应退出。如何修改批处理脚本以便我的应用程序无限运行?
我使用 TOSVersion.ToString 函数(使用 SysUtils)来检测 Windows 版本。然而,这是我在 Windows11 中得到的:
Windows 10 (Version 10.0, Build 21996, 64-bit Edition)
有没有可靠的方法来检测Windows 11?我正在使用德尔福10.3.3。
更新:Windows 11 正式发布,我再次尝试。这是我得到的:
Windows 10 (Version 10.0, Build 22000, 64-bit Edition)
某些 Windows 计算机安装了多种显示语言。
我可以使用以下函数以该语言获取当前用户的 UI 语言:
function GetUsersWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetUserDefaultUILanguage, WinLanguage, 50);
Result := WinLanguage;
end;
Run Code Online (Sandbox Code Playgroud)
这个函数输出如下:
Espagnol (Espagne)
Run Code Online (Sandbox Code Playgroud)
输出不是英文。我只需要“西班牙语”。有没有办法获得英文的显示语言?
我正在使用 Delphi 10.3.3(VCL 应用程序)。
我尝试使用 Delphi 10.3.3 对旧的 Delphi VCL 项目进行现代化改造。我可以毫无问题地编译和构建应用程序。唯一的问题是透明 PNG 的背景在运行时显示为黑色。
这是我所做的:
这是运行时的结果:
这些步骤在新的 Delphi 10.3.3 VCL 项目中完美运行,但在这个遗留项目中存在黑色背景。如何解决黑色背景问题?
我的软件包括以下用于发布到 URL 的功能。我正在使用 Sysinternals TCPView 来查看连接。发布到 URL 后连接未关闭。我应该如何更改立即关闭连接的代码?
function PostURL(const AURL: string; Parameters: TStrings): string;
var
HttpClient: THttpClient;
HttpResponse: IHttpResponse;
begin
HttpClient := THTTPClient.Create;
try
HttpClient.ConnectionTimeout:=3000;
HttpClient.ResponseTimeout:=3000;
HttpResponse := HttpClient.Post(AURL, Parameters, nil, TEncoding.UTF8);
Result := HttpResponse.ContentAsString();
finally
HttpClient.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud) 我可以在 TPopupMenu 的 OnPopUp 事件中编写一些代码。但我还需要另一个 OnPopDown 事件。有没有办法使用 Delphi 10.3.3 做到这一点?
我想使用 Delphi 更改以前生成的 EXE 文件的主图标。EXE 文件也是我使用 Delphi 生成的。但我希望用户能够更改其图标。
我尝试使用 UpdateResource 函数更改 RT_GROUP_ICON 和 RT_ICON 没有成功:
procedure UpdateExeIcon(Const IconFilename, ExternalExeFilename:string);
var
Stream : TFileStream;
hDestRes : THANDLE;
lpData : Pointer;
cbData : DWORD;
begin
Stream := TFileStream.Create(IconFilename,fmOpenRead or fmShareDenyNone);
try
Stream.Seek(0, soFromBeginning);
cbData:=Stream.Size;
if cbData>0 then
begin
GetMem(lpData,cbData);
try
Stream.Read(lpData^, cbData);
hDestRes:= BeginUpdateResource(PChar(ExternalExeFilename), False);
if hDestRes <> 0 then
begin
//if UpdateResource(hDestRes, RT_ICON,PChar('1'),1033,lpData,cbData) then
if UpdateResource(hDestRes, RT_GROUP_ICON,PChar('MAINICON'),1033,lpData,cbData) then
begin
if not EndUpdateResource(hDestRes,FALSE) then RaiseLastOSError;
end else RaiseLastOSError;
end else RaiseLastOSError;
finally …Run Code Online (Sandbox Code Playgroud) 我正在使用 Delphi 10.3.3 开发 Firemonkey (FMX) 应用程序。
我有一个 Viewport3D 组件。在 Viewport3D 中,我有许多 3D 形状,例如 TCube 和 TRectangle3D。
我需要将 Viewport3D 的内容(当前视图的屏幕截图)保存到图像文件中。我更喜欢保存为透明的 PNG。我怎样才能做到这一点?