gpt4 book ai didi

vb6 - 检测Vista Starter三个打开应用程序的限制

转载 作者:行者123 更新时间:2023-12-04 04:23:36 24 4
gpt4 key购买 nike

我正在作为一名开发人员,目前正在维护一个迫切需要在Vista下运行良好的VB6应用程序。但是,它必须在Vista Starter Edition下可以正常工作,因为此处是新计算机(阿根廷)随附的版本。

现在,进入技术方面:我的应用程序使用ImageMagick's convert处理图像(调整大小,黑白分割,旋转等),因此,三个应用程序的限制确实给……带来了痛苦。最糟糕的是:(当前?)未检测到运行convert的失败,因此,发生这种情况时,程序将挂起。

谁能告诉我如何:

a_检测打开的应用程序的数量,因此我可以要求用户在重试之前关闭某些内容? API调用,也许吗?或者

b_检测到转换(当前正在使用“Shell”功能运行)未正确启动吗?

请把诸如“您应该将您的应用程序迁移到x”之类的评论发送给我的老板(不是我),不欢迎,这会让我旅行到您的位置并咬伤您的脚趾。但是,我将需要一些时间来获得签证,但我向您保证,有一天,一个陌生人会敲您的门,询问您的StackOverflow用户名,然后他会咬你的脚趾。

感谢您的考虑

最佳答案

您是否尝试过检查Shell函数的返回值?文档说如果 shell 失败,它应该返回零。

马丁在评论中说:我尝试过,但是每次检查返回值时,都是一些大于零的怪异数字。

再次使用MarkJ:返回值应该是进程ID。可能可以进行API调用以检查它们是否为有效的进程ID。您可以尝试这样的操作:这总是为我显示一个“成功的” MsgBox,因为我没有Vista Starter Edition :)

Private Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

Sub StartProcess()
Dim ProcessId&
Dim hProcess&
Const PROCESS_QUERY_INFORMATION = &H400&

ProcessId = Shell("notepad.exe", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)
If hProcess = 0& Then
MsgBox "Failed"
Else
MsgBox "Succeeded"
CloseHandle hProcess
End If

End Sub

关于vb6 - 检测Vista Starter三个打开应用程序的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/873662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com