먼저 제가 할려구하는 건
client실행파일 실행 -> client 실행파일과 server 실행파일 의 날짜 비교 ->
client 실행파일이 구버전일경우 server에 update.exe를 실행하여 실행 파일을 업데이트
문제는 client에서 실행중일 파일이 종료가 되어야 server 파일을 복사하는데 client 실행파일을 종료할수가 없어 이렇게 글을 올립니다.
update 실행하는 exe 는 따로 구현했습니다. 단독으로 실행하면 별문제가 없는데 실행 파일이 열려있는 상태에서 하면 에러가 납니다.
제가 시도한 방법은
closefile 과 halt 명령등을 사용해 보았습니다.
halt 의 경우는 프로그램은 종료되나 그 하위 코드가 실행되지 않습니다.
// 실행.exe에서 코딩, update.exe 가 실행안됨
closefile은 제가 잘못 자용하였는지 에러가 자꾸 납니다.
AssignFile(F,Ed_target.Text); // Ed_target 에는 client 경로가 있음
CloseFile(F) //update.exe에 코딩
별볼일 없는 넘이 이렇게 글을 또 올립니다.
조언 부탁드립니다.
Close
하면 됩니다.
그외 다른 프로그램(Process)를 죽이려면
그 Process의 Handle을 구한 후
TerminateProcess를 사용해서 죽일 수 있습니다. Windows API 구여~,
사용법은
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
입니다.
글구 타 프로그램(예를들면 Update.Exe)을 실행하려면
CreateProcess 또는 WinExec 라는 Windows API를 사용하시면 됩니다
(CreateProcess 사용을 권장).
prototype은
BOOL CreateProcess(
LPCTSTR lpApplicationName, // pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);
입니다.
기타 자세한 사용예는 "묻고 답하기" / "예전의 질답 게시판으로 가기"에서 검색해 보시기 바랍니다.