我有一个Delphi控制台应用程序,可以更新服务器上的组件。它以半交互方式运行,偶尔会提示“您确定吗?” 等等,通过此代码:
MessageDlg('Are you sure?', mtConfirmation, [mbYes, mbNo, mbHelp], SOME_HELP_CONTEXT)...
如您所见,我想提供指向它的帮助链接,在这种情况下,请转到我们的网站,SOME_HELP_CONTEXT
并附加到我们的帮助页面:?contextid=SOME_HELP_CONTEXT
我是通过GUI程序执行此操作的,我Application.OnHelp := myHelper;
在哪里分配myHelper
了一个对象的方法,该方法只需调用ShellExecute
即可打开Web链接。
但是控制台应用程序中没有Application变量。
有没有相当简单的方法来实现这一目标?
由于使用的是Dialogs
单位,因此您已经有了Application
变量。因为,Dialogs
使用Controls
,它会初始化单元中的Application
变量Forms
。您要做的就是Forms
在代码中另外使用该单元。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, Vcl.Dialogs, Vcl.Forms, Winapi.Windows;
type
THelper = class
protected
function OnHelp(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean; virtual;
end;
{ THelper }
function THelper.OnHelp(Command: Word; Data: THelpEventData;
var CallHelp: Boolean): Boolean;
begin
MessageBox(GetActiveWindow, PChar(Format('help request about "%d"', [Data])), '', 0);
CallHelp := False;
end;
var
Helper: THelper;
begin
try
Helper := THelper.Create;
Application.OnHelp := Helper.OnHelp;
MessageDlg('Are you sure?', mtConfirmation, [mbYes, mbNo, mbHelp], 5);
Helper.Free;
{ TODO -oUser -cConsole Main : Insert code here }
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句