Что нового

[Процессы] Как узнать параметры запущенного процесса?

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Сдравствуйте, как узнать параметры запущенных программ?

Например в бат файле вводим:
Код:
hl2.exe -game hl2mp -console
И запускаем бат файл рядом с процессом: hl2.exe(Игрой Half-Life 2 DM)

Теперь заходим в Process Killer, выбераем процесс и нажимаем на информацию.
Он покажет по процессу эти параметры:
Код:
-game hl2mp -console
можно ли это как нибудь реализовать на автоите? Зарание спс :IL_AutoIt_1:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Ganibal95,
В справке к WinAPIEx.au3 посмотрите функцию _WinAPI_GetProcessCommandLine ( [$PID] ).
 

VladUs

Скриптер
Сообщения
621
Репутация
182
через WMI

Код:
$ProcName = "'iexplore.exe'"
$strComputer = "." 
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") 
$colItems = $objWMIService.ExecQuery( "SELECT * FROM Win32_Process WHERE Name = " & $ProcName  ) 
ConsoleWrite ("SELECT * FROM Win32_Process WHERE Name = " & $ProcName & @CRLF)
For $objItem in $colItems 
    ConsoleWrite( "-----------------------------------" & @CRLF)
    ConsoleWrite ("Name: " & $objItem.Name & @CRLF)
    ConsoleWrite ("Handle: " & $objItem.Handle & @CRLF)
    ConsoleWrite ("CommandLine: " & $objItem.CommandLine & @CRLF)
    ConsoleWrite ("Path: " & $objItem.ExecutablePath & @CRLF)
Next
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
madmasles
Спс именно то что нужно! :smile:


Добавлено:
Сообщение автоматически объединено:

Знаю что другой вопрос другая тема...

Можно узнать путь запуска?
Тоесть кем или откуда он был запущен!


Добавлено:
Сообщение автоматически объединено:

а все я нашол =)
_WinAPI_GetProcessWorkingDirectory()
 

mathem

Новичок
Сообщения
26
Репутация
0
через WMI

Код:
$ProcName = "'iexplore.exe'"
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery( "SELECT * FROM Win32_Process WHERE Name = " & $ProcName  )
ConsoleWrite ("SELECT * FROM Win32_Process WHERE Name = " & $ProcName & @CRLF)
For $objItem in $colItems
    ConsoleWrite( "-----------------------------------" & @CRLF)
    ConsoleWrite ("Name: " & $objItem.Name & @CRLF)
    ConsoleWrite ("Handle: " & $objItem.Handle & @CRLF)
    ConsoleWrite ("CommandLine: " & $objItem.CommandLine & @CRLF)
    ConsoleWrite ("Path: " & $objItem.ExecutablePath & @CRLF)
Next
Парни! Код классный, все. На компе я на его основе написал программу. Она работает, все хорошо. Проблема только в том, что на компе 32-разрядная винда 7. Начал эту же программу пристраивать на ноут. на котором 64-разрядная винда 10 -нет, не работает. Я,конечно, извиняюсь за некропост, но мне самому сейчас ни за что это не подделать, а очень бы хотелось иметь аналог той моей программы и для ноута тоже. Я опробовал изменить пару мест в коде, которые, как мне казалось, могли решить эту проблему, но это проблему не решило, и получается, что самому мне сейчас это решить не под силу. Помогите, а?
 

Alecsis

Осваивающий
Сообщения
120
Репутация
43
Начал эту же программу пристраивать на ноут. на котором 64-разрядная винда 10 -нет, не работает.
Если Вы «тренируетесь на кошках iexplore.exe»© то под Win10 он не факт, что запущен. Ясен пень, что скрипт упадёт,
и битность WIn тут вообще не при делах. Пригодится проверка наподобие
Код:
If $colItems.Count < 1 Then
; <обработка облома>
EndIf
PS И да, маловероятно, но $colItems запросто может не быть именно объектом
 

mathem

Новичок
Сообщения
26
Репутация
0
Если Вы «тренируетесь на кошках iexplore.exe»© то под Win10 он не факт, что запущен
Нет-нет. Мне это вообще для процесса python.exe, запускающегося в LyX, когда идет преобразование из .tex в .png. Но, я так думаю, вы плохо представляете, о чем я говорю. Поэтому в коде примера-ответа меня бы устроило и использование в качестве процесса и банального notepad.exe. Спасибо за реакцию на мой вопрос!
 
Последнее редактирование:

SealAlbinos

Продвинутый
Сообщения
156
Репутация
58
как бы банально это не звучало, а вы пробовали добавить в начало
Код:
#RequireAdmin

win 11 x64
 

Вложения

  • 1729364615249.png
    1729364615249.png
    69.7 КБ · Просмотры: 5

mathem

Новичок
Сообщения
26
Репутация
0
Я наконец-то разобрался, в чем дело! Оно оказалось и вовсе не в моей программе, а в следующем. Я перешел с использования LyX версии 2.0.6 на версию 2.3.7. И вот у этой версии есть следующий, скорее всего, глюк. Если версия 2.0.6 работает совершенно одинаково как на 32-разрядной винде 7, так и на 64-разрядной винде 10, то с версии 2.3.7 не все так просто. А именно. На 32-разрядной винде 7 эта версия, по моим наблюдениям, ИМХО, работает совершенно одинаково с версией 2.0.6. А вот на 64-разрядной винде 7 эта версия не сразу начала работать как версия 2.0.6. Если версия 2.0.6 экспортирует .tex в .png во временной папке независимо от того, сохранен ли редактируемый в настоящий момент файл .lyx (я имею ввиду,когда этот файл .lyx открыт, создан с помощью меня Файл, этот файл .lyx находится еще в состоянии, когда он не сохранен на диске), то от версии 2.3.7 такого поведения удалось добиться не сразу Вначале было почему-то так, что вот напишешь нужную формулу, выйдешь из математического режима, в котором эту формулу набирал, а во временной папке соответствующий файл .tex-то образовывался, а файл .png с изображением этой формулы из этого файла .tex-не хотел образовываться категорически! Соответственно и написанному мной просмотрщику фото, который я вызывал в самом конце моей программы. открывать было просто нечего! А потом что случилось - вообще представить не могу. Если бы это был живой организм,то уместное описание произошедшего было бы "разработалось". Но это ведь железная машина. Получаться началось, когда делал в окне уже сохраненного файла: пишешь в математическом режиме нужную формулу, потом выходишь из этого режима - а во временной папке видишь преобразования файла .tex в .png - все как по маслу, все как и должно быть. Потом попробовал в несохраненном на диске файле .lyx - тоже все идет как нужно! Всем откликнувшимся большое спасибо!
Сообщение автоматически объединено:

Я хочу засвидетельствовать, что код
через WMI

Код:
$ProcName = "'iexplore.exe'"
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery( "SELECT * FROM Win32_Process WHERE Name = " & $ProcName  )
ConsoleWrite ("SELECT * FROM Win32_Process WHERE Name = " & $ProcName & @CRLF)
For $objItem in $colItems
    ConsoleWrite( "-----------------------------------" & @CRLF)
    ConsoleWrite ("Name: " & $objItem.Name & @CRLF)
    ConsoleWrite ("Handle: " & $objItem.Handle & @CRLF)
    ConsoleWrite ("CommandLine: " & $objItem.CommandLine & @CRLF)
    ConsoleWrite ("Path: " & $objItem.ExecutablePath & @CRLF)
Next
со значением переменной
Код:
$ProcName

notepad.exe , как, впрочем, и python.exe, вместо 'iexplore.exe работает и на 64-разрядной винде 10 без добавления к этом коду

 
Последнее редактирование:
Верх