如何使用JSL来计算windows中的活动运行进程,例如notepad.exe的数量?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一个问题来计算Windows内存中的活动进程。
我不熟悉Windows API。任何人都可以使用DLL函数来帮助计算给定进程名称的运行进程数吗?
如果打开3 notepad.exe,则窗口任务管理器有三个记事本会话正在运行。
我需要一个JSL函数,它将进程名称作为输入,并将进程数作为返回。
非常感谢你!
Re:如何使用JSL来计算windows中的活动运行进程,例如notepad.exe的数量?Craige,
我在JMP 11中尝试了runprogram函数,然后编写了一个计数字函数。我可以得到我想要的解决方案。非常感谢!
我这样做的另一个有趣的事情是因为我注意到open()文本文件功能从升级JMP 9变为11。
我使用JMP 9来触发.exe文件来执行多线程数据库查询然后在完成所有.exe会话后,汇总数据。
在JMP9中,当我打开数据文件时,它总是成功,但是,在JMP11中,它多次发出警告不完整的数据文件读取和错过一半。数据文件大小通常> 2M-3M,不是太大。不确定JMP11中真正改变了什么。否则,我不需要费心去寻找这样的解决方案。
再次感谢您的解决方案。
Re:如何使用JSL来计算windows中的活动运行进程,例如notepad.exe的数量?RunProgram首次出现在JMP 11中。 它不使用磁盘文件在JMP和外部程序之间进行通信;它使用stdin和stdout。 根据应用程序的需要,您可能希望从runProgram运行notepad.exe程序,而不是使用RunProgram运行另一个程序来确定notepad.exe是否已完成。 (你可以完全避免轮询。)
使用JMP 9,您仍有几种方法可以完成这项工作。 你可能想调查一下自动化使用另一种语言,比如visual basic,来控制JMP 和 NOTEPAD.EXE。 您可能希望编写.BAT文件并使用JMP的open()来运行bat文件。 这确实需要一个轮询循环来确定bat文件何时完成。 您可以使用JMP的wait(seconds)函数让JMP在轮询之间休眠。 最后,正如您的原始问题所示,您可以使用JMP的DLL接口来访问系统DLL。这个帖子表明JMP 10中出现了更好的DLL接口;可能无法使用旧接口进行所需的DLL调用。 我不知道你需要什么API / DLL。
Re:如何使用JSL来计算windows中的活动运行进程,例如notepad.exe的数量?Craige,
谢谢你的回复。我还有两个问题:
1。看起来像运行程序在JMP9中不是一个函数,因为我仍在使用JMP9。
2。您的解决方案是否将文件写入硬盘?我正在尝试并行会话并在无限循环中使用等待。当总进程数为零时,则中断循环并继续执行其余的JSL代码。如果将文件写入硬盘,与使用DLL直接从内存中获取信息相比,这是不太可取的。
谢谢!
Re:如何使用JSL来计算windows中的活动运行进程,例如notepad.exe的数量?从这里开始如何在Windows中的命令行中列出所有进程?- 超级用户
并写了这个
x=runprogram(executable("wmic"),options({"process list"}),
readfunction(function({this},write(this<
);
你可能想要解析这个<< read中的文本而不是通过write()将它转储到日志中。 很多你不想要的文字,以及“C:\ Program Files(x86)\ Microsoft Office \ Office15 \ OUTLOOK.EXE”之类的东西