2012-01-11 2 views
1

Explorer를 다시 시작해야하는 대체 쉘이 있습니다. 현재 내가 사용하고 있습니다 : 등 윈도우 XP/Vista에서하지만 윈도우 7 대신 그냥 탐색기 창을 엽니 다 Explorer를 다시 시작에 잘 작동Windows 7에서 Delphi 2007/Xe2를 사용하여 프로그래밍 방식으로 Explorer를 다시 시작하는 방법

CreateProcess(nil, zAppName, { pointer to command line string } 
    nil, { pointer to process security attributes } 
    nil, { pointer to thread security attributes } 
    false, { handle inheritance flag } 
    CREATE_NEW_CONSOLE or { creation flags } 
    NORMAL_PRIORITY_CLASS, nil, { pointer to new environment block } 
    nil, { pointer to current directory name } 
    StartupInfo, { pointer to STARTUPINFO } 
    ProcessInfo) { pointer to PROCESS_INF } 

합니다. 나는 아무도 그냥 탐색기 창을 열어보다는 쉘로 시작 Explorer.exe에서의 문제를 해결하지 눈치

:

In answer to a related question for .Net

는 Robolt이를 썼다. 나에게이 문제를 파악하는 동안 툭, 간단 무엇인가 "였다 밝혀 :.

string explorer = string.Format("{0}\\{1}", Environment.GetEnvironmentVariable("WINDIR"), "explorer.exe"); 
Process process = new Process(); 
process.StartInfo.FileName = explorer; 
process.StartInfo.UseShellExecute = true; 
process.Start(); 

당신은 그것을 쉘으로 다시 시작에 도착하기는 true StartInfo.UseshellExecute을 설정해야

그러나

+0

쉘을 시작한 첫 번째 탐색기 인스턴스라고 생각했습니다. 어쩌면 XP/Vista 테스트에서 "별도의 프로세스에서 폴더 창 실행"이 선택되지 않았지만 '7'에서는 실제로 'explorer.exe'를 모두 죽이는 것이 아닙니다. –

+0

Ctrl 키를 누른 채로 시프트 버튼을 클릭하여 테스트 중에 탐색기가 실행되지 않도록하십시오. 배포의 경우 셸을 대체 할 때 필요하지 않습니다. –

답변

2

이름에서 알 수 있듯이 UseShellExecute 속성은 프로그램 사용을 ShellExecute으로 만들고, 사용하는 대체 방법은 CreateProcess입니다.

+0

. Use에 ShellApi를 추가하고 ShellExecute를 호출하십시오. –

+0

이것은 XP에서는 작동하지만 Windows 7에서는 작동하지 않습니다. –