CreateProcessに関して


詩織  2003-08-12 23:47:04  No: 108093  IP: [192.*.*.*]

質問ですが、vbからCreateProcessにて、vbのexeを起動し、TerminateProcessにて終了しているのですが、メモリリークにてPCが固まっているようです。
SendMessageにより値を起動元から起動先へ渡し、起動先のexe自身でend処理をしても、メモリエラーが発生します。
どなたか教えて下さい。

環境:win2000,sp3 vb6.sp5

編集    削除
nanashi  2003-08-13 01:07:17  No: 108094  IP: [192.*.*.*]

CreateProcessで取得したプロセスIDとスレッドIDに対しCloseHandleは行っていますか?

色々サイトを見てみるとTerminateProcessは強制力が強いのでExitProcessを使うか、
PostMessageでWM_CLOSEを送った方が良い、と書いてあります。

編集    削除
Take1こ  2003-08-15 01:17:19  No: 108095  IP: [192.*.*.*]

こんにちは、これはどうでしょう?


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の戻り値
を格納する変数を使ってください。

編集    削除