首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果遵循MS警告,API调用ExitProcess()在VB6中工作正常吗?

如果遵循MS警告,API调用ExitProcess()在VB6中工作正常吗?
EN

Stack Overflow用户
提问于 2010-06-17 17:03:24
回答 3查看 2.2K关注 0票数 3

Microsoft表示VB6不支持ExitProcess (退出并返回值)。

但是,它表明在某些情况下(如果线程尚未完成,等等),此调用可能会失败。

因此,我想知道,只要您遵守本文中的警告,此调用是否正常(一致:-)。

我可以更进一步,从关注应用程序的Sub或表单调用ExitProcess()。

Update:经过更多的阅读(我在询问之前确实研究过这个问题),我找到了一个建议使用TerminateProcess API代替。我在调查这个选择。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-23 16:39:42

最好的选择可能是无论如何创建一个Sub主入口点,并从那里调用ExitProcess,而不是从类或表单调用。或者(这就是我要做的)从表单卸载事件中调用ExitProcess,并具有一个主要入口点,如:

代码语言:javascript
复制
Sub Main
'code
Launch Form
Exit Main

然后:

代码语言:javascript
复制
Form_Unload
'code
ExitProcess
End sub 'Form_Unload

因此,ExitProcess将是您执行的最后一段代码。它不会很漂亮,而且您可能会泄漏一些句柄之类的东西,但是NT4和更高级别的用户无论如何都很擅长处理这个问题。换句话说,从Sub驱动应用程序并在退出之前调用API。

注:这是由Kprobst发布的,但它是在一个帖子的末尾,有一个错误的答案。所以我把它重新贴在这里是为了清楚。

票数 1
EN

Stack Overflow用户

发布于 2010-06-17 19:40:27

你可以用卡尔彼得森的创建控制台应用程序的方法从VB6?然后使用Con.ExitCode = 1 (如第二个示例所示)。

他正在发布一个免费的外接程序vbAdvance,帮助您构建控制台应用程序。

票数 2
EN

Stack Overflow用户

发布于 2013-04-16 16:15:16

看看这个:当vb6程序终止时卸载模块的内容

创建一个全局变量:

代码语言:javascript
复制
Public ErrorLevel As Long

创建一个这样的潜艇:

代码语言:javascript
复制
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”结尾或在“main”表单的卸载代码中,将以下内容放入:

代码语言:javascript
复制
UnloadAll

效果很好!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3063843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档