박지훈님 항상 좋은 글 많은 도움 받고 있고 감사드립니다.
WinExec나 CreateProcess도 마찬가지입니다.
다른 방법이 없을까요?
박지훈.임프 님이 쓰신 글 :
: 확실한 건 아니고.. 그냥 언뜻 든 생각인데요.
: ShellExecute 대신 WinExec나 CreateProcess 등의 다른 함수를 쓰면 되지 않을까 싶습니다.
: ShellExecute는 explorer.exe(탐색기)를 먼저 실행시키고 그 안에서 다시 cmd를 실행시키는 것이라, 시스템 종료시 탐색기가 종료된 상태에서 이상 동작할 가능성이 많아보입니다.
:
:
: 한상훈 님이 쓰신 글 :
: : private
: : procedure WMQueryEndSession(var Msg : TWMQueryEndSession); message WM_QueryEndSession;
: : Procedure WMEndSession(var Msg : TWMEndSession); message WM_ENDSESSION;
: :
: : 이렇게 선언했구요.
: :
: :
: : procedure TForm1.WMQueryEndSession(var Msg : TWMQueryEndSession) ;
: : begin
: : Msg.Result := 0;
: : ShellExecute(.....);
: : Msg.Result := 1;
: : end;
: :
: : procedure TForm1.WMEndSession(var Msg : TWMEndSession) ;
: : begin
: : inherited;
: : end;
: :
: :
: : 이렇게 처리했습니다.
: :
: : ShellExecute 부분에서는 "CMD.exe /C run.bat" 를 실행하려고 하구요.
: :
: : 그런데 문제가 생겼습니다.
: :
: : Windows가 종료될때 CMD.exe가 실행이 되지 않고 "응용프로그램을 초기화하지 못했습니다.."라는 에러 메세지를 띄우고
: : 명령을 실행하지 못하고 그냥 강제종료되어 버립니다.
: :
: : 에러메세지 없이 ShellExecute명령을 실행할 방법이 없을까요?
|