【问题标题】:Read memory values of a process in windows using nodejs使用nodejs读取windows中进程的内存值
【发布时间】:2016-12-28 17:57:34
【问题描述】:

总结

我想知道是否可以使用 nodejs 读取进程的内存值(在 Windows 中)。

我有一些 C++ 代码可以做到这一点。出于某些原因,我想使用 nodejs 来做到这一点。


Q1:是否可以为 C++ 代码创建一个插件以与 nodejs 一起使用?

Q2:是否可以从 C++ 异步提取数据并在我的 nodejs 应用程序中使用它们?

Q3:我可以用Javascript(nodejs和模块)重写程序吗?

如果可能,每个问题都被视为我的问题的解决方案。
如果您选择回答其中一个或多个,请

  • 给我一个过程概要
  • 为我指明正确的方向(例如,文档、指南、SO 答案等)

任何答案都是对“困难”、要求很高的问题的好答案。

【问题讨论】:

  • 是的,这是可能的,并且在Node.js API Documentation 中有详细记录。还有一个官方的GitHub repository 有一些例子。我不认为这是一个正确的答案,所以这就是我决定只写评论的原因。
  • 谢谢。想详细说明你的答案吗?也许给我一个过程摘要,以便我可以接受它作为答案
  • 老实说,我已经很长时间没有使用 C++ 插件做任何事情了,我不得不自己重新阅读文档。所以你最好只看例子。一旦你掌握了它的要点,这真的不是那么难。

标签: javascript c++ node.js memory process


【解决方案1】:

是的,这很可能,但这实际上取决于您尝试读取的内存值以及操作系统是否允许外部进程读取它们。

nodejs 本身没有从其他进程读取内存的代码,因此您需要编写和运行自己的本机代码。要从 nodejs 运行本机代码,您需要使用 Nodejs API 文档编写一个 nodejs 模块,以便直接从 nodejs 中调用本机代码,或者您可以在本机代码中编写一个独立的可执行文件并使用child_process module 和执行它让它返回一些数据给你。假设您有能力在自己的本机代码中读取所需的内存并且不会被操作系统中的进程边界阻塞,则任一选项都可以正常工作。

Q1:是否可以为 C++ 代码创建一个插件以用于 节点?

是的,这在 nodejs API documentation 中有很好的关于 nodejs 的记录。

Q2:是否可以从 C++ 异步提取数据并使用 它们在我的 nodejs 应用程序中?

如果您希望操作是异步的,那么您将不得不异步执行您的本机代码(在操作系统线程或另一个进程中)并通过一些回调将结果传回。 nodejs 自己的很多函数都是这样构建的。

Q3:我可以使用 Javascript 重写程序吗(nodejs 和模块) ?

您不能完全从 nodejs 读取外部进程的内存值(因为 nodejs 没有内置该功能)。您将需要一些您自己的本机代码,这些代码可以是您从 node.js 执行的插件或外部进程。


由于您已经拥有可以执行所需操作的本机 C++ 代码,听起来最简单的方案可能是将代码包装到它自己的 C++ 应用程序中,并让它通过stdout 或通过写信将结果传达回传入的文件名或类似的东西。然后,您可以使用 node.js 中的 child_process 模块来执行您的 C++ 应用程序并检索它提供的结果。由于它在另一个进程中执行并使用适当的 child_process 方法,您可以异步检索结果。 child_process module documentation 包含多个示例,说明如何使用其各种方法。

【讨论】:

  • 我很高兴你回答了我问题的每一个部分!此外,非常精美的文字和阐述。您答案的最后一部分是解决我所想到的问题的方法。谢谢你,圣诞快乐(如果你庆祝的话)。
【解决方案2】:

Here 是一个初级插件,用于读取另一个窗口的进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    相关资源
    最近更新 更多