CreateProcessに関して


詩織  2003-08-12 23:47:04  No: 108093

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

環境:win2000,sp3 vb6.sp5


nanashi  2003-08-13 01:07:17  No: 108094

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

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


Take1こ  2003-08-15 01:17:19  No: 108095

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加