JSL을 사용하여 Windows에서 실행중인 프로세스 (예 : notepad.exe)의 수를 계산하는 방법<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Windows 메모리의 활성 프로세스를 계산하는 데 문제가 있습니다.
나는 윈도우 API에 익숙하지 않다. DLL 함수를 사용하여 주어진 프로세스 이름에 대해 실행중인 프로세스의 수를 계산하는 데 도움을 줄 수 있습니까?
3 notepad.exe를 열면 창 작업 관리자에 세 개의 메모장 세션이 실행됩니다.
프로세스 이름을 입력으로 사용하고 반환 프로세스로 프로세스 번호를 사용하는 JSL 함수가 필요합니다.
대단히 감사합니다!
Re : 어떻게 JSL을 사용하여 Windows에서 현재 실행중인 프로세스, 예를 들어 notepad.exe의 수를 계산합니까?크레이지,
JMP 11에서 runprogram 함수를 시도한 다음 count words 함수를 작성했습니다. 나는 내가 원하는 해결책을 얻을 수있다. 많은 감사합니다!
또 다른 재미있는 점은 open ()이 JMP 9에서 11로 업그레이드 된 텍스트 파일 기능을 변경했기 때문입니다.
나는 JMP 9를 사용하여 .exe 파일을 트리거하여 mutilple 스레딩 데이터베이스 쿼리를 수행 한 다음 모든 .exe 세션이 완료된 후 데이터를 롤업합니다.
JMP9에서는 데이터 파일을 열 때마다 항상 성공하지만 JMP11에서는 여러 번 불완전한 데이터 파일 읽기 및 절반을 누락하는 경고가 표시됩니다. 데이터 파일 크기는 일반적으로 2M-3M 이상이며 그다지 크지 않습니다. 실제로 JMP11에서 무엇이 변경되었는지 확실하지 않습니다. 그렇지 않으면 이와 같은 해결책을 찾는데 귀찮게하지 않아도됩니다.
다시 한번 솔루션에 대해 감사드립니다.
Re : 어떻게 JSL을 사용하여 Windows에서 현재 실행중인 프로세스, 예를 들어 notepad.exe의 수를 계산합니까?RunProgram은 JMP 11에 처음 나타났습니다. JMP와 외부 프로그램 간의 통신을 위해 디스크 파일을 사용하지 않습니다. 그것은 stdin과 stdout을 사용합니다. 응용 프로그램이 필요로하는 것에 따라, notepad.exe가 완료되었는지를 알아 내기 위해 RunProgram을 사용하는 대신 runprogram에서 notepad.exe 프로그램을 실행하여 다른 프로그램을 실행하고자 할 수 있습니다. (폴링을 완전히 피할 수 있습니다.)
JMP 9에서는 여전히 여러 가지 방법으로이 작업을 수행 할 수 있습니다. 조사하고 싶을 수도 있습니다. 오토메이션 아마도 시각적 기본과 같은 다른 언어를 사용하여 JMP를 제어 할 수 있습니다. 과 notepad.exe. .BAT 파일을 작성하고 JMP의 open ()을 사용하여 bat 파일을 실행할 수 있습니다. 이렇게하려면 박쥐 파일이 완료 될 때 폴링 루프가 필요합니다. JMP의 wait (seconds) 함수를 사용하여 JMP를 폴링간에 잠자기 상태로 둘 수 있습니다. 마지막으로, 원래의 질문에서 알 수 있듯이 JMP의 DLL 인터페이스를 사용하여 시스템 DLL에 액세스 할 수 있습니다. 이 소식 더 나은 DLL 인터페이스가 JMP 10에 나타났습니다. 이전 인터페이스로 필요한 DLL 호출을 수행하지 못할 수도 있습니다. 어떤 API / DLL이 필요한지 모르겠습니다.
Re : 어떻게 JSL을 사용하여 Windows에서 현재 실행중인 프로세스, 예를 들어 notepad.exe의 수를 계산합니까?크레이지,
답장을 보내 주셔서 감사합니다. 두 가지 더 궁금한 점이 있습니다.
1. 실행중인 프로그램이 JMP9의 기능이 아닌 것 같습니다. JMP9를 사용하고 있기 때문입니다.
2. 귀하의 솔루션은 파일을 하드 디스크에 기록합니까? 병렬 세션을 수행하고 무한 루프에서 대기를 사용하려고합니다. 전체 프로세스 수가 0이면 루프를 중단하고 나머지 JSL 코드를 진행합니다. 하드 디스크에 파일을 쓰는 경우 DLL을 사용하여 메모리에서 직접 정보를 가져 오는 것보다 덜 바람직합니다.
감사!
Re : 어떻게 JSL을 사용하여 Windows에서 현재 실행중인 프로세스, 예를 들어 notepad.exe의 수를 계산합니까?여기에서 시작되었습니다. Windows의 명령 줄에서 모든 프로세스를 어떻게 나열합니까? - 슈퍼 유저
이것을 썼다.
x=runprogram(executable("wmic"),options({"process list"}),
readfunction(function({this},write(this<
);
당신은 아마도이 << 읽은 텍스트를 단순히 write ()를 통해 로그에 덤핑하는 대신 구문 분석하고 싶을 것이다. 원하지 않는 텍스트가 많고 "C : \ Program Files (x86) \ Microsoft Office \ Office15 \ OUTLOOK.EXE"와 같은 것들입니다.