首页 > 解决方案 > 如何为指向特定 firebird 数据库存档的应用程序创建快捷方式?

问题描述

如何为指向特定 firebird 数据库存档的应用程序创建快捷方式?

就像是:

\\192.168.235.5\application\app.exe \\192.168.235.2:3050:C:\firebird\db.fdb

我想我在几年前看到了一个启动器,当我使用 Windows 时,使用这个角色。也许在运行银行应用程序的机器中,财务部门负责管理树企业。那是12年。现在我一直在使用 Linux。

此应用程序可以与不同的数据库一起运行,并且客户端计算机可以有多个快捷方式。

标签: windowsdelphi

解决方案


这里经过一个 Delphi 函数通过代码创建快捷方式:

function CreateShellLink(
    const ATargetName  : String;
    const AArguments   : String;
    const ALinkFolder  : String;
    const ALinkName    : String;
    const ADescription : String): Boolean;
var
    ISLink       : IShellLink;
    IPFile       : IPersistFile;
    LinkFileName : String;
    hr           : HRESULT;
const
    IID_IPersistFile: TGUID = (
        D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
    Result := FALSE;
    if ALinkName = '' then
        Exit;

    hr := CoCreateInstance(CLSID_ShellLink,
                           nil,
                           CLSCTX_INPROC_SERVER,
                           IID_IShellLink,
                           ISLink);
    if not Succeeded(hr) then
        Exit;

    hr := ISLink.QueryInterface(IID_IPersistFile, IPFile);
    if not Succeeded(hr) then
        Exit;

    ISLink.SetDescription(PChar(ADescription));
    ISLink.SetPath(PChar(ATargetName));
    ISLink.SetWorkingDirectory(PChar(ExtractFilePath(ATargetName)));
    ISLink.SetArguments(PChar(AArguments));

    ForceDirectories(ALinkFolder);
    LinkFileName := IncludeTrailingBackslash(ALinkFolder) +
                    ChangeFileExt(ALinkName,
                    '.lnk');

    DeleteFile(LinkFileName);
    if IPFile.Save(PChar(LinkFileName), FALSE) = S_OK then
        Result := TRUE;
end;

使用示例:

CreateShellLink('C:\Program Files\Notepad++\notepad++.exe',
                'E:\Temp\BugReport1.txt',
                'C:\Users\MyUserCode\Desktop',
                'ShortcutTest',
                'Demo of CreateShellLink');

当然,与其硬编码dektop文件夹,不如查询系统获取桌面文件夹。如果您不知道如何执行此操作并且没有自己找到,请提出一个单独的问题。

应用于您的问题数据,调用变为:

CreateShellLink('\\192.168.235.5\application\app.exe',
                '\\192.168.235.2:3050:C:\firebird\db.fdb',
                'C:\Users\MyUserCode\Desktop',
                'Databse access',
                'Use this shortcut to start database access');

推荐阅读