Страницы: 1
RSS
PID запущенного процесса, Как узнать PID запущенного процесса?
 
Добрый день.
Кратко. Создаю новый Excel объект. Как узнать PID созданного объекта?
Код
Set ExApp = CreateObject("Excel.Application")
set wb = ExApp.workbooks.add
Exapp.visible = true
 
Доброе время суток
Цитата
Тигран Эренбург написал:
Кратко
Не менее
Успехов.
 
Спасибо большое за функцию. Как к ней обратиться из sub?
 
Тигран, а вы обратили внимание, что там используется WinAPI функция? Судя, вашему дополнительному вопросу - вы в программировании новичок. Тогда зачем вам PID процесса?
Изменено: Андрей VG - 26.10.2017 20:56:56
 
Мне нужен ID запущенного процесса, чтобы его потом закрыть отдельно от других.
Я создаю новую книгу через VBA, мне необходимо отловить ID процесса созданной книги, чтобы потом также ее закрыть макросом.

P.S.
с WinApi не сталкивался пока...
Изменено: Тигран Эренбург - 27.10.2017 18:51:28 (Формулировка предложения)
 
А зачем Вам все это? Тигран Эренбург, мой Вам совет, опишите свою задачу(с примером, как положено), а не Ваше видение ее решения. Может получите гораздо более эффективный результат. Не только у Андрея подозрение, что Вы ерундой занимаетесь. ;)
Я сам - дурнее всякого примера! ...
 
Добрый день, я пишу кнопку для userform, которая из userform вставляет данные в шаблон word. Иногда так случается, что документ word "проваливается" в память.
Пользователь его не видит на панели задач, но он висит в памяти. Чтобы каждый раз не ходить в менеджер задач для снятия задачи, я хочу при создании документа отлавливать ID его процесса. Скрипт на закрытие определенного процесса через powershell у меня есть.
Т.е. мне надо через VBA создать объект word или excel и записать id процесса в текстовый файлик.
В качестве примера прикладываю свой код для отлавливания ID процесса при запуске powershell скрипта.
При запуске скрипта в текстовый файлик записывается ID. Другая кнопка останавливает скрипт путем считывания ID процесса из файлика.
Код
 <html>
 
<head>
  <title>HTA Test</title>
  <HTA:APPLICATION 
    APPLICATIONNAME="HTA Test"
    SCROLL="yes"
    SINGLEINSTANCE="yes"
    WINDOWSTATE="maximize"
  >
</head>
<script language="VBScript">
window.resizeto 200,200 
sub monitoring
sCmd = "%SystemRoot%\System32\WindowsPowerShell\v1.0\PowerShell.exe -NoExit C:\test\test.ps1;Get-process -id $PID|where {$_.mainWindowTitle}|format-table id -autosize|out-file c:\test\out.txt"
Set oShell = CreateObject("Wscript.Shell")
iResult = oShell.Run(sCmd, 1, true)
end sub
sub end_monitor
set ObjShell = createobject("wscript.shell")
ObjShell.run ("powershell -command & {0.1 |% {stop-process (Get-content c:\test\out.txt -totalcount 4)[-1]}}")
end sub
</script>
 
<body>
 
<input type="button" value="Запуск" name="run_button"  onClick="monitoring">
<input type="button" value="Стоп" name="run_button2"  onClick="end_monitor">
</body>
 
</html>
Изменено: Тигран Эренбург - 29.10.2017 15:42:46 (добавить текст)
 
Цитата
Тигран Эренбург написал:
Иногда так случается, что документ word "проваливается" в память. Пользователь его не видит на панели задач
Наверное, он "ушёл" в Background Procecesses. Поищите там.
There is no knowledge that is not power
 
Цитата
Тигран Эренбург написал:
мне надо через VBA создать объект word или excel и записать id процесса
Чушь собачья. Вам надо книжки по ВБА читать и матчасть учить. Объект созданный в ВБА и закрывать надо в ВБА. А то что вы делаете - трусы через голову.
Код
    Set exapp = CreateObject("Excel.Application")
    Set wb = exapp.Workbooks.Add
    exapp.Visible = True
    'you code
    wb.Close True
    exapp.Quit
    Set wb = Nothing
    Set exapp = Nothing
И все. Ни АПИ, ни жабы.
Изменено: kuklp - 29.10.2017 19:44:38
Я сам - дурнее всякого примера! ...
 
Спасибо, решение конечно простое....заработался...тему можно закрывать.
Страницы: 1
Наверх