Q&A

  • 바로가기 파일을 읽어서 원본 파일의 경로와 이름만 알고 싶습니다.
바로가기 파일을 읽어서 원본 파일의 경로와 이름만 알고 싶습니다.

답변 부탁드리여
4  COMMENTS
  • Profile
    최용일 2003.11.21 20:51
    안녕하세요. 최용일입니다.

    강좌란에서 바로가기로 검색해보세요...

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

  • Profile
    허진 2003.11.21 23:27
    이부분이 바로가기의 실제 경로가 들어가는 부분인 것 같습니다.

    Params.TargetFilename := 'C:Program FilesStarcraftstarcraft.exe';

    강좌란을 몇번 보기는 했는데 제가 델파이나 COM에 대한 이해력이 많이 부족해서요.

    바로가기 만드는 함수 2가지는 알겠는데요

    실제 바로가기 파일을 가지고 거기에 있는 TargetFilename을 가지고 오려면.. 어떻게 해야하나요.
    폴더는 특수폴더 입니다. (사용자의 Recent 폴더의 내용에 있는 바로가기들을 열어서 실제파일의 정보를 보여주고 없는 경우 없다고 표시하려고 하려합니다.)

    제가 강좌에서 바로가기 파일의 TargetFilename을 가져오는 부분이 있는데 못본거라면 그부분이 어디인지 알려주시면 감사하겠고요.

    어떤식으로 해야할지 감이 잘안서서.. 도움 부탁드립니다.


  • Profile
    최용일 2003.11.22 01:52
    안녕하세요. 최용일입니다.

    강좌란하고 델파이 도움말 조금만 보시면 되는데... 쩝~~

    procedure TForm1.Button9Click(Sender: TObject);
    var
        RecentFolder: array[0..255] of Char;
        ItemIDList: PItemIDList;
        FilePath: string;
        SearchRec: TSearchRec;
        ShellLink: IShellLink;
        PersistFile: IPersistFile;
        FileNameA: string;
        FileNameW: WideString;
        FindData: TWin32FindData;
        RealFilePath: array[0..1023] of Char;
    begin
        CoInitialize(nil);
        CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, ShellLink);
        PersistFile := ShellLink as IPersistFile;

        SHGetSpecialFolderLocation(Handle, CSIDL_RECENT, ItemIDList);
        SHGetPathFromIDList(ItemIDList, RecentFolder);

        FilePath := string(RecentFolder) + '\' + '*.lnk';
        if FindFirst(FilePath, faAnyFile - faDirectory, SearchRec) = 0 then
        begin
          repeat
            FileNameA := string(RecentFolder) + '\' + SearchRec.Name;
            FileNameW := FileNameA;
            PersistFile.Load(PWideChar(FileNameW), STGM_READ);
            ShellLink.GetPath(RealFilePath, SizeOf(RealFilePath), FindData, SLGP_UNCPRIORITY);

            ListBox1.Items.Add(FileNameA);
            ListBox1.Items.Add(RealFilePath);
          until FindNext(SearchRec) <> 0;
          FindClose(SearchRec);
        end;

        CoUninitialize;
    end;

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

  • Profile
    허진 2003.11.22 04:12
    아래 소스도 열심히 쳐다 봐야겠네요.

    감사합니다.