Q&A

  • shellexecute로 바로가기(lnk)파일을 실행 했는데 실행 안되는 이유?
Shellexecute로 exe(실행파일)파일을 실행하면 잘되는데...

특정 PC에서 Lnk(바로가기) 파일을 실행하면 전혀 반응이 없는데...


혹시 이런 문제 해결하신 분 계신지요...?


외국 사이트까지 검색해봤는데 답이 전혀 안나오네여...

혹 아시는분 답좀 주세여~~~
2  COMMENTS
  • Profile
    겨울아이 2006.12.16 20:17
    제가 사용하는 함수입니다..
    아래 함수를 참조하셔서 작업하시면 될듯하네여.. 따로 설명은 안하도 되겠죠??


    function GetLinkFileInfo(aHWND: HWND; lnkFileName: WideString): boolean;
    var
      ShellLink: IShellLink;
      PersistFile: IPersistFile;
      FindData: TWin32FindData;
      RealFilePath: array[0..1023] of Char;

    begin
      Result := False;

      CoInitialize(nil);
      CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, ShellLink);
      PersistFile := ShellLink as IPersistFile;

      PersistFile.Load(PWideChar(lnkFileName), STGM_READ);
      ShellLink.GetPath(RealFilePath, SizeOf(RealFilePath), FindData, SLGP_UNCPRIORITY);

      if Trim(String(RealFilePath)) <> '' then
      begin
        ShellExecute(aHWND, PChar('open'), PChar(String(RealFilePath)), nil, nil, SW_SHOWNORMAL);
        Result := True;
      end;

      CoUninitialize;
    end;



  • Profile
    흥구니 2006.12.21 10:54
    우선 답변 주신거 갑사드립니다..

    저도 겨울아이님께서 사용하신 방법대로 함수 만들어 하긴 했는데...

    기본적으로 lnk파일이 Shellexecute가 안되는 이유를 모르겠네여...

    밑에 함수대로 하면 Internet Url 파일은 또 따로 함수 처리 해줘야 하고... 에구...

    아무도 모르시나... ㅠ ㅠ

    PC이상으로 보고 새로 윈도우 설치해서 하면 되긴 하는데...

    왜 안되는지를 전혀 모르니.. 휴~