C ++를 통해 Explorer.exe를 시작하려면 어떻게해야합니까?
-
21-08-2019 - |
문제
프로그래밍 방식으로 Explorer.exe를 시작하려고하지만 운이 없습니다.
이것은 내 코드입니다.
cout << pName << "died, lets restart it." << endl;
STARTUPINFO startupInfo = {0};
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInformation;
if(CreateProcess(pName, NULL, NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &startupInfo, &processInformation) == 0){
cout << "Error starting " << pName << ": " << GetLastError() << endl;
}
그리고 pname은 Explorer.exe입니다
누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 오류 코드 '2'를 얻습니다. ERROR_FILE_NOT_FOUND
해결책
첫 번째 매개 변수는 응용 프로그램 이름입니다. 두 번째는 명령 줄입니다. "Explorer.exe"를 두 번째 매개 변수로 지정해보십시오.
이것 좀 봐 MSDN 기사:
lpapplicationName [in, 선택 사항
실행될 모듈의 이름. 이 모듈은 Windows 기반 응용 프로그램 일 수 있습니다. 로컬 컴퓨터에서 적절한 서브 시스템을 사용할 수있는 경우 다른 유형의 모듈 (예 : MS-DOS 또는 OS/2) 일 수 있습니다.
문자열은 실행할 모듈의 전체 경로와 파일 이름을 지정하거나 부분 이름을 지정할 수 있습니다. 부분 이름의 경우 함수는 현재 드라이브 및 현재 디렉토리를 사용하여 사양을 완성합니다. 함수는 검색 경로를 사용하지 않습니다. 이 매개 변수는 파일 이름 확장자를 포함해야합니다. 기본 확장이 가정되지 않습니다.
다른 팁
당신은 아마 주어야 할 것입니다 "shellexecuteex"시도.이 기능은 파일 또는 폴더 그리고 a 동사 그것은 무엇을 해야하는지 설명합니다. 사용하는 경우 "explore
"로서 동사, 주어진 상태에서 Windows 탐색기를 열 것입니다 폴더.
놀랍게도 방법에 대한 관련 정보를 찾는 것은 어렵습니다. 확실하게 Windows 탐색기를 다시 시작합니다. 64 비트 Windows 7/8에서 ShellexeCute 메소드는 제대로 작동하지 않으며 파일 복사 및 아이콘 오버레이와 같은 것들로 이어집니다.
가장 신뢰할 수있는 방법은 stdlib.h 시스템 호출을 사용하는 것 같습니다.
system("start explorer");
탐색기를 종료하고 다시 시작하려는 경우 AutorestArtShell 레지스트리 키를 프로그래밍 방식으로 비활성화하여 제어 할 수 없습니다. 언제 탐색기가 다시 시작됩니다.