Q&A

  • 바로가기를 생성하고자 하는 데 뭐가 잘못된 거죠?
델파이 팁란을 응용하여 만든 프로시져인데,
바로가기가 생성이 되질 않습니다...
디버깅을 해 보니 정상적으로 되는 것 같은 데... 혹시 뭐가
잘못된 점이 있는지요?...  

procedure CreateShortcut(FileName: string; Location: TShortcutType);
var
    MyObject : IUnknown;
    MySLink : IShellLink;
    MyPFile : IPersistFile;
    Directory,
    LinkName : string;
    WFileName : WideString;
    QuickLaunchReg : TRegIniFile;
    Reg : TRegistry;
begin
    MyObject := CreateComObject(CLSID_ShellLink);
    MySLink := MyObject as IShellLink;
    MyPFile := MyObject as IPersistFile;

    MySLink.SetPath(PChar(FileName));

    // Registry 객체를 생성한다.
    Reg := TRegistry.Create;

    with Reg do
    begin
        // 현재의 루트키를 HKEY_CURRENT_USER로 설정한다
        RootKey := HKEY_CURRENT_USER;
        // 원하는 키를 열도록 합니다.
        OpenKey('SoftwareMicroSoftWindowsCurrentVersionExplorerShell Folders', False);

        LinkName := ChangeFileExt(FileName, '.lnk');
        LinkName := ExtractFileName(LinkName);
        case Location of
          _DESKTOP : Directory := ReadString('Desktop');
          _STARTMENU : Directory := ReadString('Start Menu');
          _SENDTO : Directory := ReadString('SendTo');
          _FAVORITES : Directory := ReadString('Favorites');
          _STARTMENUPROGS: Directory := ReadString('Programs');
          _STARTMENUINI : Directory := ReadString('StartUp');
          _DOCS : Directory := ReadString('Personal');
        end;

        if Directory <> '' then
        begin
          WFileName := Directory + '' + LinkName;
          MyPFile.Save(PWChar(WFileName), False);
        end;

        CloseKey;
        Free;
    end;
end;

1  COMMENTS
  • Profile
    최용일 2003.06.30 20:40
    안녕하세요. 최용일입니다. 패스가 잘못된거 같네요...


    WFileName을 확인해보세요...

    WFileName := Directory + '' + LinkName;

    위와 같이 바뀌어야 할거 같은데...

    ^^ 항상 즐코하세요...