如果遵循MS警告,API调用ExitProcess()在VB6中是否正常工作?
Microsoft指出(退出并返回一个值) 但是,它表示在某些情况下(如果线程尚未完成等),此调用可能会失败 因此,我想知道,只要您遵守本文中的警告,这个调用是否可以正常工作(始终:-) 我可以更进一步,从启动应用程序的Sub-Main或表单调用ExitProcess() 更新:在读了一些书之后(我在询问之前确实做了一些研究),我发现了一个新的问题。我正在调查这个选择如果遵循MS警告,API调用ExitProcess()在VB6中是否正常工作?,vb6,Vb6,Microsoft指出(退出并返回一个值) 但是,它表示在某些情况下(如果线程尚未完成等),此调用可能会失败 因此,我想知道,只要您遵守本文中的警告,这个调用是否可以正常工作(始终:-) 我可以更进一步,从启动应用程序的Sub-Main或表单调用ExitProcess() 更新:在读了一些书之后(我在询问之前确实做了一些研究),我发现了一个新的问题。我正在调查这个选择 有什么想法吗?您可以使用VB6中的卡尔·彼得森?然后使用Con.ExitCode=1(如第二个示例所示) 他正在分发一个免费插件
有什么想法吗?您可以使用VB6中的卡尔·彼得森?然后使用
Con.ExitCode=1
(如第二个示例所示)
他正在分发一个免费插件,帮助您构建控制台应用程序。最好的选择可能是创建一个Sub-Main入口点,然后从那里而不是从类或表单调用
ExitProcess
。或者(这就是我正在做的)从表单卸载事件调用ExitProcess
,并具有如下主入口点:
Sub Main
'code
Launch Form
Exit Main
然后:
因此,ExitProcess
将是您执行的最后一位代码。
它不会很漂亮,你可能会泄漏一些手柄之类的东西,但NT4和更高版本在处理这方面还是相当不错的。换句话说,从Sub-Main驱动应用程序并在退出之前调用API
注意:这是Kprobst发布的,但它是在一篇文章的末尾,有一个错误的答案。因此,为了清晰起见,我将其重新发布在这里。看看这个:
创建全局变量:
Public ErrorLevel As Long
创建一个子系统,如下所示:
Public Sub UnloadAll()
Dim f As Integer
f = Forms.Count
Do While f > 0
Unload Forms(f - 1)
If f = Forms.Count Then Exit Do
f = f - 1
Loop
ExitProcess ErrorLevel
End Sub
在“main”的末尾或主窗体的卸载代码中,输入以下内容:
UnloadAll
很好用
UnloadAll