Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Поиск процесса по handle / 5 сообщений из 5, страница 1 из 1
05.12.2021, 14:42
    #40117457
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск процесса по handle
Как можно узнать, запущен ли процесс по номеру handle?
Что-то типа FindWindowA(номер handla).

Объясняю задачу:
Запускаем 5 одинаковых программ (например, Notepad.exe).
В каждую передаем какой-то параметр (1, 2, 3, 4, 5).
Через минуту нужно проверить, все ли программы работают.
В этот момент у нас есть array с пятью handle.
Как узнать, "работает" ли сейчас конкретный handle?
...
Рейтинг: 0 / 0
05.12.2021, 17:11
    #40117482
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск процесса по handle
По handle'у процесса - разумеется можно
По непонятно какому "параметру 1,2,3,4,5" - это программист нужен
...
Рейтинг: 0 / 0
05.12.2021, 17:23
    #40117484
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск процесса по handle
Если handle это реальный handle windows (id) процесса, то AFAIK WaitForSingleObject должен работать.

Если параметр, это параметр командной строки, то можно попытаться прочитать CommandLine из процесса. Можно что-то более высокоуровневое, чем WinApi попробывать. Мне кажется, что должны быть утилиты, показывающие command line.

p.s.
https://www.google.com/search?q=get command line by process id&oq=get command line by process id&aqs=chrome..69i57j0i22i30l3j0i10i22i30.10934j0j15&sourceid=chrome&ie=UTF-8
...
Рейтинг: 0 / 0
05.12.2021, 18:37
    #40117498
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск процесса по handle
1. Функция возвращает стринг всего запущенного (имя + handle).
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
OleObject wsh 
String 	ls_select, ls_stringprocess

wsh = CREATE OleObject 
wsh.ConnectToNewObject( "MSScriptControl.ScriptControl" ) 
wsh.Language="vbscript"

ls_select = ""+& 
"~n"+'Function SelectApplication'+& 
"~n"+' Dim ServicesSet'+& 
"~n"+' Dim Items'+& 
"~n"+' Set ServicesSet = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.")'+& 
"~n"+' Set Items = ServicesSet.ExecQuery("Select * from Win32_Process")'+& 
"~n"+' For Each Item in Items'+& 
"~n"+' SelectApplication = SelectApplication & Item.Name & " " & Item.Handle & ";"'+& 
"~n"+' Next'+& 
"~n"+'End Function	 '

wsh.AddCode(ls_select)
ls_stringprocess = wsh.Run("SelectApplication")

RETURN ls_stringprocess



2. Эта функция убивает процессы (хэндлы передаются в al_hndls[] )
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
OleObject wsh 
String 	ls_select_start, ls_select_end, ls_where_hndls, ls_or = ' OR'
integer	li_i

ls_where_hndls = 'where'

FOR li_i = 1 TO UpperBound(al_hndls)
	IF li_i = UpperBound(al_hndls) THEN
		ls_where_hndls += ' Handle = ' + string(al_hndls[li_i])
	ELSE
		ls_where_hndls += ' Handle = ' + string(al_hndls[li_i]) + ls_or
	END IF
NEXT

ls_select_start = 	'function terminateProgram() ~n ' + &
	 			'strComputer = "." ~n ' + &
 				'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") ~n ' + &
 				'Set colItems = objWMIService.ExecQuery("Select * from Win32_Process '

ls_select_end = 	'") ~n ' + &
 				'For Each objItem in colItems ~n ' + &
 				'     objItem.Terminate ~n ' + &
 				'Next ~n ' + &
 				'end function ~n ' 

wsh = CREATE OleObject
wsh.ConnectToNewObject( "MSScriptControl.ScriptControl" )
wsh.language = "vbscript"
wsh.AddCode(ls_select_start + ls_where_hndls + ls_select_end)
			 
wsh.executestatement('terminateProgram()')

wsh.DisconnectObject()

DESTROY wsh
...
Рейтинг: 0 / 0
05.12.2021, 18:39
    #40117499
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск процесса по handle
Кстати, handle, который возвращает функция "1" и handle FindWindowA не совпадают.
Но, "работает - не трогай!"
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Поиск процесса по handle / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]