Microsoft MVP성태의 닷넷 이야기
COM 개체 관련: 14. 탐색기 "처럼" 파일 열기 [링크 복사], [링크+제목 복사],
조회: 18994
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

보통... 파일 열기를 위해서 어떤 API 를 쓰시나요?

저 같은 경우, 즐겨쓰던 방법이 "ShellExecute" 를 사용해서 "open" verb 를 주는 식이었습니다.
그런데... 이 방법이 실제 탐색기에서 사용하는 방법과 동일하지는 않습니다.

예를 한번 들어 볼까요?

확장자가 TXT 인 파일에 대해서 ShellExecute 로 열거나 탐색기에서 더블클릭으로 여는 경우, 동일하게 메모장이 열리면서 해당 TXT 파일이 로딩되어져 올라오지요. HKEY_CLASSES_ROOT 에 등록된 확장자에 대해서 "open" verb 를 찾아서 실행시켜 주기 때문입니다.

반면에, 확장자가 TTT 인 파일에 대해서 2가지를 비교해 보세요. ShellExecute 는 아무런 반응이 없는 반면 탐색기는 "이 파일 열 수 없음" 이라는 문구와 함께 해당 문서를 원하는 프로그램과 연결시키는 작업을 도와주는 대화창이 뜨는 것을 확인할 수 있습니다.

자... 그럼 어떤 API 를 써야 할까요? ^^ WinExec 도 안될 테고.
일단 API 는 더 검색해 볼 것이 없다고 판단했고,,, 다음으로 Shell 관련 COM 개체들을 찾아보기 시작했습니다. 다행히... 다음과 같은 식으로 해결이 되어지더군요.

        var objShell = new ActiveXObject("Shell.Application");
        objShell.Open( filePath );

위의 Shell.Application 개체에서 제공되는 Open 메서드가 실제 탐색기의 Open 과 동일한 동작을 하고 있습니다.










[최초 등록일: ]
[최종 수정일: 3/1/2005]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 106  107  108  109  110  111  112  113  114  115  116  117  118  119  [120]  ...
NoWriterDateCnt.TitleFile(s)
10958정성태5/6/201652834개발 환경 구성: 284. "Let's Encrypt"에서 제공하는 무료 SSL 인증서를 IIS에 적용하는 방법 (1) [3]
10957정성태5/3/201628168오류 유형: 328. 윈도우 백업 시 오류 - 0x80780166 두 번째 이야기 [1]
10956정성태5/3/201624181Windows: 117. BitLocker - This device can't use a Trusted Platform Module.
10955정성태5/3/201631031.NET Framework: 581. C# - 순열(Permutation) 예제 코드파일 다운로드2
10954정성태5/3/201631746.NET Framework: 580. C# - 조합(Combination) 예제 코드 [2]파일 다운로드1
10953정성태5/2/201620475.NET Framework: 579. Assembly.LoadFrom으로 로드된 어셈블리의 JIT 컴파일 코드 공유?파일 다운로드1
10952정성태5/2/201623363.NET Framework: 578. 도메인 중립적인 어셈블리가 비-도메인 중립적인 어셈블리를 참조하는 경우파일 다운로드1
10951정성태5/2/201621160.NET Framework: 577. CLR Profiler로 살펴보는 SharedDomain의 모듈 로드 동작파일 다운로드1
10950정성태5/2/201628225.NET Framework: 576. 기본적인 CLR Profiler 소스 코드 설명 [2]파일 다운로드2
10949정성태4/28/201620727.NET Framework: 575. SharedDomain과 JIT 컴파일파일 다운로드1
10948정성태4/28/201625340.NET Framework: 574. .NET - 눈으로 확인하는 SharedDomain의 동작 방식 [3]파일 다운로드1
10947정성태4/27/201623191.NET Framework: 573. .NET CLR4 보안 모델 - 4. CLR4 보안 모델에서의 조건부 APTCA 역할파일 다운로드1
10946정성태4/26/201626085VS.NET IDE: 106. Visual Studio 2015 확장 - INI 파일을 위한 사용자 정의 포맷 기능 (Syntax Highlighting)파일 다운로드1
10945정성태4/26/201618993오류 유형: 327. VSIX 프로젝트 빌드 시 The "VsTemplatePaths" task could not be loaded from the assembly 오류 발생
10944정성태4/22/201620946디버깅 기술: 80. windbg - 풀 덤프 파일로부터 텍스트 파일의 내용을 찾는 방법
10943정성태4/22/201625847디버깅 기술: 79. windbg - 풀 덤프 파일로부터 .NET DLL을 추출/저장하는 방법 [1]
10942정성태4/19/201621242디버깅 기술: 78. windbg 사례 - .NET 예외가 발생한 시점의 오류 분석 [1]
10941정성태4/19/201620735오류 유형: 326. Error MSB8020 - The build tools for v120_xp (Platform Toolset = 'v120_xp') cannot be found.
10940정성태4/18/201624607Windows: 116. 프로세스 풀 덤프 시간을 줄여 주는 Process Reflection [3]
10939정성태4/18/201625452.NET Framework: 572. .NET APM 비동기 호출의 Begin...과 End... 조합 [3]파일 다운로드1
10938정성태4/13/201624177오류 유형: 325. 파일 삭제 시 오류 - Error 0x80070091: The directory is not empty.
10937정성태4/13/201632825Windows: 115. UEFI 모드로 윈도우 10 설치 가능한 USB 디스크 만드는 방법
10936정성태4/8/201644084Windows: 114. 삼성 센스 크로노스 7 노트북의 운영체제를 USB 디스크로 새로 설치하는 방법 [3]
10935정성태4/7/201628488웹: 32. Edge에서 Google Docs 문서 편집 시 한영 전환키가 동작 안하는 문제
10934정성태4/5/201626351디버깅 기술: 77. windbg의 콜스택 함수 인자를 쉽게 확인하는 방법 [1]
10933정성태4/5/201631806.NET Framework: 571. C# - 스레드 선호도(Thread Affinity) 지정하는 방법 [8]파일 다운로드1
... 106  107  108  109  110  111  112  113  114  115  116  117  118  119  [120]  ...