넘 초보적인 질문이라 부끄럽군요..근데 초본걸 어떡합니까..
음..할려는 작업은 프로그램에서 엑셀로 저장하는 것입니다..
그래서 프로그램내에서 OLE로 엑셀을 실행시키고, 저장하고, 종료를 시켰는데...
엑셀이 화면상에서 분명히 종료가 되었는데..작업관리자를 띄워보면...
엑셀 프로세스가 계속 살아있는 것입니다..
글고 제 프로그램을 종료하면 그때 비로소 엑셀 프로세스가 사라지죠..
여기까진 문제가 없어 보이는데..결국은 엑셀 프로세스가 없어지니깐요..
근데, 제 프로그램 실행중(엑셀 프로세스가 살아있을때)에는
제가 엑셀을 따로 실행했을때 이상야릇한 죽은 엑셀이 실행됩니다..
그래서, 엑셀 프로세스를 중간에 강제 종료시키려 하는데..
방법을 모르겠군요..어렴풋이 API를 사용해야 한다는 것은 알겠는데..
제가 초보라..API를 안번도 써본적도 없고 사용할줄도 모르거든요..
여러 고수분들...도와주세요...
쉽게 설명해 주시면 더욱 고맙겠습니다...^^;
From 류..
---------
The TerminateProcess function terminates the specified process and all of its threads.
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
Parameters
hProcess
Identifies the process to terminate.
Windows NT: The handle must have PROCESS_TERMINATE access. For more information, see Process Objects.
uExitCode
Specifies the exit code for the process and for all threads terminated as a result of this call. Use the GetExitCodeProcess
function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The TerminateProcess function is used to unconditionally cause a process to exit. Use it only in extreme circumstances. The state of global data maintained by dynamic-link libraries (DLLs) may be compromised if TerminateProcess is used rather than ExitProcess.
TerminateProcess causes all threads within a process to terminate, and causes a process to exit, but DLLs attached to the process are not notified that the process is terminating.
Terminating a process causes the following:
1. All of the object handles opened by the process are closed.
2. All of the threads in the process terminate their execution.
3. The state of the process object becomes signaled, satisfying any threads that had been waiting for the process to terminate.
4. The states of all threads of the process become signaled, satisfying any threads that had been waiting for the threads to terminate.
5. The termination status of the process changes from STILL_ACTIVE to the exit value of the process.
Terminating a process does not cause child processes to be terminated.
Terminating a process does not necessarily remove the process object from the system. A process object is deleted when the last handle to the process is closed.
See Also
ExitProcess, OpenProcess, GetExitCodeProcess, GetExitCodeThread
door21 wrote:
> 넘 초보적인 질문이라 부끄럽군요..근데 초본걸 어떡합니까..
> 음..할려는 작업은 프로그램에서 엑셀로 저장하는 것입니다..
> 그래서 프로그램내에서 OLE로 엑셀을 실행시키고, 저장하고, 종료를 시켰는데...
> 엑셀이 화면상에서 분명히 종료가 되었는데..작업관리자를 띄워보면...
> 엑셀 프로세스가 계속 살아있는 것입니다..
> 글고 제 프로그램을 종료하면 그때 비로소 엑셀 프로세스가 사라지죠..
> 여기까진 문제가 없어 보이는데..결국은 엑셀 프로세스가 없어지니깐요..
> 근데, 제 프로그램 실행중(엑셀 프로세스가 살아있을때)에는
> 제가 엑셀을 따로 실행했을때 이상야릇한 죽은 엑셀이 실행됩니다..
> 그래서, 엑셀 프로세스를 중간에 강제 종료시키려 하는데..
> 방법을 모르겠군요..어렴풋이 API를 사용해야 한다는 것은 알겠는데..
> 제가 초보라..API를 안번도 써본적도 없고 사용할줄도 모르거든요..
> 여러 고수분들...도와주세요...
> 쉽게 설명해 주시면 더욱 고맙겠습니다...^^;