天天看點

Linux下使用Lazarus建立快捷方式

procedure TFormClientAgent.ActAppCreateLinkExecute(Sender: TObject);
var
  vFileName: string;
  iniFile: TIniFile;
begin
  try
    vFileName := GetDeskTopDir + '/AR.desktop';
    IniFile := TIniFile.Create(vFileName);
    try
      iniFile.WriteString('Desktop Entry', 'Encoding', 'UTF-8');
      iniFile.WriteString('Desktop Entry', 'Name', 'AR For Linux');
      iniFile.WriteString('Desktop Entry', 'Comment', 'AR For Linux');
      iniFile.WriteString('Desktop Entry', 'Exec', Format('"%s"', [ParamStr(0)]));
      iniFile.WriteString('Desktop Entry', 'Type', 'Application');
      iniFile.WriteString('Desktop Entry', 'GenericName', 'AR For Linux');
      iniFile.WriteString('Desktop Entry', 'Terminal', 'false');
      iniFile.WriteString('Desktop Entry', 'Icon', ExtractFilePath(ParamStr(0)) + '/ar.png');
    finally
      IniFile.Free;
    end;
    ModifyFileAttribute(GetDeskTopDir + '/AR.desktop');
  except
  end;
end;
           

生成的檔案位置為桌面, 名稱為: AR.desktop, 内容為:

[Desktop Entry]

Encoding=UTF-8

Name=AR For Linux

Comment=AR For Linux

Exec="/mnt/hgfs/FPC/Bin/AR For Linux"

Type=Application

GenericName=AR For Linux

Terminal=false

Icon=/mnt/hgfs/FPC/Bin//ar.png

ModifyFileAttribute(GetDeskTopDir + '/AR.desktop');

這句話是更改檔案的屬性, 具體代碼如下: (C寫的SO檔案, Lazarus調用)

#include <sys/stat.h>

extern int ModifyFileAttribute(char *aFile)
{
    char mode[] = "0777";
//    char buf[100] = "/home/anonym/Desktop/AR.desktop";
    int i;
    i = strtol(mode, 0, 8);
    if (chmod (aFile,i) < 0)
    {
        return -1;
    }
    return 0;
}
           

繼續閱讀