如何在 Win 2003 上从 VB 6 枚举进程?

发布于 2024-07-26 19:54:37 字数 582 浏览 4 评论 0原文

我有一些旧的 VB6 代码,其中一部分通过调用 CreateToolhelpSnapshot 枚举机器上正在运行的进程。 我尝试在 Win 2003 R2 上运行此代码,并且我有理由对它返回的进程列表有点怀疑。 我发现 这篇文章 这让我认为我可能需要使用不同的2003 年的 API 调用。但是我找不到他提到的 Microsoft 知识库文章。 或者说我怎么也找不到英文版。 我确实找到了德语文章,但我看不懂德语。 我认为它建议我使用名为 EnumProcs 的 API,但我在 Microsoft API 文档中没有找到任何此类 API(至少在 msdn.microsoft.com 上没有)。

那么,我应该在 Win 2003 上使用 CreateToolhelpSnapshot 还是应该使用其他一些 API? 有谁知道我可以在哪里找到那篇知识库文章的英文副本吗?

I've got some old VB6 code part of which enumerates the running processes on the machine via a call to CreateToolhelpSnapshot. I'm attempting to run this code on Win 2003 R2 and I have reason to be a little suspicious of the list of processes that it's returning. I found this article which leads me to think I might need to use a different API call on 2003. However I cannot find the Microsoft KnowledgeBase article that he mentions. Or I can't find the English version anyway. I did find the article in German but I can't read German. I think it's advising me to use an API called EnumProcs but I don't find any such API in the Microsoft API docs (at least not at msdn.microsoft.com).

So, should I be using CreateToolhelpSnapshot on Win 2003 or is there some other API which I should use? And does anyone have any idea where I might find a copy of that KB article in English?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月下客 2024-08-02 19:54:37
  • 您在 freevbcode.com 上的文章是来自浴室代码墙的转移注意力的内容。 它说 CreateToolhelp32Snapshot 仅适用于 Windows 95、98 和 Me。 这曾经是真的——NT 中不是如此——但 Windows 2000 和所有更高版本中却如此。
  • MSDN 页面上的 CreateToolhelp32Snapshot 备注部分给出了原因为什么调用会失败。 (它声明它适用于 Windows Server 2003:“最低支持的服务器是 Windows 2000 Server”,并且 API 调用尚未停用。)
  • 如果您无法使 CreateToolhelpSnapshot 工作,请使用 Ant 的答案并使用 EnumProcesses。 有关此方法的更多信息:关于从 VB6 枚举进程的旧 Microsoft 知识库文章建议您使用枚举进程。 您必须分发 PSAPI.DLL,但它是免费的 平台 SDK。 EnumProcesses 的另一个来源来自古老但优秀的书 Hardcore Visual Basic,现在可以免费在线< /a>.
  • Your freevbcode.com article is a red herring from the bathroom wall of code. It says that CreateToolhelp32Snapshot only works on Windows 95, 98, and Me. This was true once - it wasn't in NT - but it's in Windows 2000 and all the later versions.
  • The MSDN page on CreateToolhelp32Snapshot remarks section suggests reasons why the call can fail. (It states it works on Windows Server 2003: "minimum supported server is Windows 2000 Server", and the API call has not been retired.)
  • If you can't get CreateToolhelpSnapshot to work, go with Ant's answer and use EnumProcesses. More information about this method: an old Microsoft Knowledge Base article on enumerating processes from VB6 suggests you use EnumProcesses. You will have to distribute PSAPI.DLL, but it is free with the Platform SDK. Another source on EnumProcesses is from the old but excellent book Hardcore Visual Basic, now available free online.
挽你眉间 2024-08-02 19:54:37

这篇文章非常全面地列出了如何操作你需要。 它基本上使用 EnumProcesses Windows API 调用而不是 GetActiveProcesses 调用。

请注意,不仅是 Windows Server 2003,还包括 NT 系列的所有 Windows 版本(XP、Vista 等)。

This article gives quite a comprehensive listing of how to do what you need. It basically uses the EnumProcesses Windows API call instead of the GetActiveProcesses one.

Note that it's not just Windows Server 2003, but all the Windows versions of the NT family (XP, Vista, etc.) too.

指尖上的星空 2024-08-02 19:54:37

Google 翻译非常出色地将德语知识库页面翻译成英语:如何:使用 Win32 API 枚举应用程序

Google Translate does an excellent job of translating that German KB page into English: HOW TO: Enumerate Applications Using Win32 APIs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文