2017-11-10 10 views
-2

에게 관련없이 C++를 사용하여 특정 프로그램으로 파일을 열에서 ShellExecute를 호출하는 방법을 내가 MSDN을 읽고 코드같은 파일 확장자

에서 ShellExecute를이 라인을 (시도 NULL, "개방", "fully_qualified_path_to_file을"처리, NULL, SW_SHOWNORMAL);

잘 작동하지만 더 많은 기능이 필요합니다. .bin 확장자로 파일을 출력하는 응용 프로그램을 작성했습니다. 내 OS에서 .bin 파일은 특정 프로그램과 관련이 없습니다. MSDN은 모든 .bin 파일을 프로그래밍으로 내 앱과 연관시킬 수 있다고 말합니다. 그러나이 경우는 용납 될 수 없습니다.

특정 프로그램과 함께 특정 파일을 열 때이 코드 줄을 어떻게 추가 할 수 있습니까? p.s. MSDN, 그런 스미스 같이 나는, 제 4 인수에 내 응용 프로그램 경로를 넣어

C 시도 : \\의 application.exe ""% 1 "

을했지만 작동하지 않았다.

+10

실행하려는 프로그램을 이미 알고 있다면 CreateProcess 만 사용하십시오. –

+1

당신은 다음과 같이 썼습니다 : _p.s. 제 4 인자에 제 신청 경로를 넣으려고했으나 효과가 없었습니다. 질문을 편집하고 오류 코드, 오류 메시지 등을 표시하십시오. _ 작동하지 않습니다 _는 문제에 대한 설명이 아닙니다. –

+0

네 번째 인수는 매개 변수를 지정합니다. 그래서 여러분은 3 번과 4 번 인수가 반대가되었습니다. 실행 파일 이름을 인수 3으로 전달하고 .bin 파일을 인수 4로 전달하십시오. 그러나 이것은 새로운 프로세스를 만드는 잘못된 방법입니다. 'ShellExecute'를 호출하여'CreateProcess'를 호출하는 것이 무의미합니다. 'CreateProcess'를 직접 호출하십시오. –

답변

1

lpFile 매개 변수가 .exe가 아니면 Windows는 레지스트리에 파일 형식 등록이있는 경우에만 파일을 실행할 수 있습니다 (ShellExecute는 레지스트리에서 명령 줄을 읽고 % 1을 파일 이름으로 바꿉니다))

f 특정 응용 프로그램을 실행하려면 lpFile이 해당 응용 프로그램의 이름/경로를 지정해야하고 열려는 파일이 응용 프로그램에서 지원하는 형식의 매개 변수의 일부 여야하며 대개 파일의 전체 경로 여야합니다 경로에 공백이 포함되어 있으면 "). 이 경우 ShellExecute는 % 1을 (를) 번역하지 않습니다.