質問ですが、vbからCreateProcessにて、vbのexeを起動し、TerminateProcessにて終了しているのですが、メモリリークにてPCが固まっているようです。
SendMessageにより値を起動元から起動先へ渡し、起動先のexe自身でend処理をしても、メモリエラーが発生します。
どなたか教えて下さい。
環境:win2000,sp3 vb6.sp5
CreateProcessで取得したプロセスIDとスレッドIDに対しCloseHandleは行っていますか?
色々サイトを見てみるとTerminateProcessは強制力が強いのでExitProcessを使うか、
PostMessageでWM_CLOSEを送った方が良い、と書いてあります。
こんにちは、これはどうでしょう?
Private Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
'終了
Call TerminateProcess(A.hProcess, 0&)
Call CloseHandle(A.hThread)
Call CloseHandle(A.hProcess)
AのところにCreateProcessで使ったlpProcessInformationの戻り値
を格納する変数を使ってください。
ツイート | ![]() |