|
제가 테스트해본 결과는 이상이 없습니다.
님께서 나왔다는 에러코드를 MSDN 에서 살펴보시면
33 은 ERROR_LOCK_VIOLATION 에러로 "The process cannot access the file because another process has locked a portion of the file." 이라고 되어있고, 126 은 ERROR_MOD_NOT_FOUND 에러로 "The specified module could not be found." 이렇게 설명이 되어있습니다.
근데, 경로를 보니까 디바이스 하고 관련된 내용인거 같은데, 좀 이상하다는 생각이 드는군요.
경로를 그렇게 해야한다면, CreateProcess 를 해보시면 가능할것입니다. 디바이스와 관련된 파일은 이 함수를 사용하니까요
초보 님이 쓰신 글 :
: WinExec를 써도 결과는 똑 같이 실행이 안됩니다,.
: char* strtmp='\0';
: strtmp = ".\\Device\\MegaMax\\install.bat";
:
: int a = ::WinExec(strtmp,SW_SHOW);
: int aa = GetLastError();
: a가 33이고 aa는 126이 나옵니다.
: 무슨 뜻이지 잘 모르겠네여..
:
: 빌더맨 님이 쓰신 글 :
: : ShellExecute 함수대신에 WinExec 함수를 사용해보세요. 그럼 실행이 될겁니다.
: :
: :
: : 초보 님이 쓰신 글 :
: : : if((hMutex = OpenMutex(NULL, false, MutexName)) == NULL) {
: : : hMutex = CreateMutex(NULL, true, MutexName);
: : : }
: : :
: : : if(hMutex == NULL){
: : : ShowMessage("Cannot make mutex object");
: : : return ;
: : : }
: : :
: : : if(GetLastError() == ERROR_ALREADY_EXISTS){
: : : ShowMessage("This program already ececuted");
: : : return ;
: : : }
: : : else{
: : : char* strtmp='\0';
: : : strtmp = ".\\MUX\\install.bat";
: : : ::ShellExecute(NULL,"open",strtmp,NULL,NULL,SW_SHOWNORMAL); --- 1
: : : }
: : :
: : : ReleaseMutex(hMutex);
: : :
: : : 위의 1에서 배치화일을 실행시킵니다.
: : :
: : : batch 화일의 내용은
: : : copy mux.exe c:
: : : c:
: : : mux.exe
: : : mux
: : :
: : : 위와 같습니다,
: : :
: : : 그냥 더블클릭하면 잘 실행되지만..
: : : 위의 프로그램으로 하면 실행되지 않습니다. 그리고, 도스창이 열렸다가 금방 닫혀서 무엇때문에 안되는지도 모르겠네여..
: : : 어떻게 하면 좀 도스창이 오래 띄울 수 있고,위의 install.bat 이 실행되게 할려면 어떻게 하면 될까여?
: : :
|