문제

프로그래밍 방식으로 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 레지스트리 키를 프로그래밍 방식으로 비활성화하여 제어 할 수 없습니다. 언제 탐색기가 다시 시작됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top