제목이 길어져서 중요한걸 빼고 썼는데,
사실 일반적인 실행은 별 문제가 없음.
그냥 하면 됨.
문제는 "바로 가기 파일(확장자 LNK 파일)"임.
즉, "64비트 경로가 지정된 바로가기 파일"이 문제가 됨.
예를 들어서 설명하면,
내가 에디트플러스 64비트를 설치했음.
그리고 퀵런치에 그것의 바로가기를 만들었음.
이걸 내가 만든 프로그램에서
ShellExecute 하면 실행이 안됨.
여러 삽질 결과
ShellExecute 는 open 이나 properties라는 명령을 쓸 수 있는데, properties를 해보면,
원래 lnk파일이 지정된 경로는
"C:\\\\Program Files\\\\EditPlus 3\\\\editplus.exe"
이렇게 나와야하는데,
실제로는 아래와 같이 나옴.
"C:\\\\Program Files (x86)\\\\EditPlus 3\\\\editplus.exe"
그렇다고 lnk파일이 잘못 지정된 것도 아님.
윈도우 탐색기에서 lnk파일을 우클릭해서 속성을 보면,
정상적으로 전자의 경로가 나옴.
그런데 내 프로그램(32비트)에서
ShellExecute "properties" ... "링크경로"
이런식으로 열면 후자가 나옴.
즉, ShellExecute 가 맘대로 경로를 바꿔치기 하는거임.
그러니 "open"으로 하는 것도 맘대로 바꿔치기 해서 안되는거.
보니까 vbs로
Dim txtPath
txtPath="lnk경로"
Call CreateObject("Shell.Application").NameSpace(0).ParseName(txtPath).InvokeVerb("open")
이런 파일 만들어서 탐색기에서 실행시키면 되는 것 같긴한데,
정작 내 프로그램에서 vbs로 만들어서 그걸 ShellExecute로 실행시켜봐도 역시 또 바꿔치기 됨.
어떻게 응용프로그램 내에서 lnk파일 실행 방법 없을까여?
댓글 0