c++ shellexecute 예제

By Dave Sanasack, on Aug, 02 2019

프로그램에서 16비트 응용 프로그램을 실행하려는 경우 CreateProcess에 유의해야 하는 단점이 있습니다. 이 코드를 예로 들어 보겠습니다: ShellExecute(를 사용하여 C++에서 기본 브라우저를 위트하는 URL을 열려고 합니다). 다음 예제에서는 WinExec을 사용하여 Windows 메모장을 실행하는 것을 보여 줍니다. 먼저 ShellExecute를 사용하여 외부 응용 프로그램을 실행하려는 상황을 살펴보겠습니다. 이 경우 코드는 다음과 같이 보일 수 있습니다: Type: LPCTSTR A 는 지정된 동사를 실행할 파일 또는 개체를 지정하는 null-terminated 문자열에 대한 포인터입니다. Shell 네임스페이스 개체를 지정하려면 정규화된 구문 분석 이름을 전달합니다. 모든 동사가 모든 개체에서 지원되는 것은 아닙니다. 예를 들어 모든 문서 형식이 “인쇄” 동사를 지원하는 것은 아닙니다. 상대 경로가 lpDirectory 매개 변수에 사용되는 경우 lpFile에 대한 상대 경로를 사용하지 마십시오. 이 경우 작업이 실행되는 문자 `url`의 배열입니다. ShellExecute를 사용하면 특정 파일 형식에 등록된 프로그램의 이름이나 위치를 알 필요가 없습니다. Windows는 당신을 위해 그것을 처리합니다.

예를 들어. PDF 파일, 독자, Acrobat 또는 다른 PDF 읽기 응용 프로그램이 설치되어있는 한, 윈도우는 그것을 시작하고 당신을 위해 PDF를로드합니다. 각 동사는 콘솔 창에서 응용 프로그램을 시작하는 데 사용되는 명령에 해당합니다. 열려 있는 동사는 일반적으로 지원되기 때문에 좋은 예입니다. .exe 파일의 경우 열기만 응용 프로그램을 시작합니다. 그러나 특정 파일에서 작동하는 응용 프로그램을 시작하는 데 더 일반적으로 사용됩니다. 예를 들어 Microsoft 워드패드에서 .txt 파일을 열 수 있습니다. 따라서 .txt 파일에 대한 열린 동사는 다음 명령과 일치합니다: 응용 프로그램은 먼저 Windows 디렉터리PIDL을 검색하고 첫 번째 .bmp 파일을 찾을 때까지 내용을 열거합니다. 이전 예제와 달리 IShellFolder:GetDisplayNameOf는 표시 이름 대신 파일의 구문 분석 이름을 검색하는 데 사용됩니다. 이 폴더는 파일 시스템 폴더이므로 구문 분석 이름은 ShellExecuteEx에 필요한 경로입니다.

Windows 셸은 여러 가지 방법으로 이러한 연결을 사용합니다. 한 가지 방법은 윈도우 탐색기입니다. 탐색기에서 파일 이름을 두 번 클릭하면 Windows는 파일 연결 목록에서 파일 이름의 확장명을 찾습니다. 해당 파일에 대한 연결이 발견되면 연결된 응용 프로그램이 실행되고 두 번 클릭된 문서가 해당 응용 프로그램에 로드됩니다.