Как узнать PID процесса по имени в Zenno?

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
Доброго времени суток, подскажите, пожалуйста, как получить PID процесса по имени процесса в Zenno?
Нашел на c# форуме такие строчки:
C#:
int pid = System.Diagnostics.Process.Start("chrome.exe").Id;
return pid;
Но в данном случае он запускает chrome и мы получаем PID, а как получить все уже запущенные PID по имени, в переменную?
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
Доброго времени суток, подскажите, пожалуйста, как получить PID процесса по имени процесса в Zenno?
Нашел на c# форуме такие строчки:
C#:
int pid = System.Diagnostics.Process.Start("chrome.exe").Id;
return pid;
Но в данном случае он запускает chrome и мы получаем PID, а как получить все уже запущенные PID по имени, в переменную?
C#:
Process[] localAll = Process.GetProcesses();
foreach(var s in localAll) project.SendInfoToLog(s.ProcessName.ToString());

Слушай, а для чего использовать хочешь? Никогда просто не работал с этим классом, может подскажешь чем он может быть полезен
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
C#:
Process[] localAll = Process.GetProcesses();
foreach(var s in localAll) project.SendInfoToLog(s.ProcessName.ToString());

Слушай, а для чего использовать хочешь? Никогда просто не работал с этим классом, может подскажешь чем он может быть полезен
Не совсем понял, как мне с помощью данного кода получить нужный мне результат:
C#:
Process[] localAll = System.Diagnostics.Process.GetProcesses("chrome.exe");
foreach(var s in localAll) project.SendInfoToLog(s.ProcessName.ToString());
Что я делаю не так? Ошибка:
Компиляция кода Ошибка в действии "CS0029" "Неявное преобразование типа "System.Diagnostics.Process[]" в "Process[]" невозможно". [Строка: 0; Cтолбец: 22]
Мне это нужно для убивания процесса и находить путь к exe.
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113
C#:
var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{
    project.SendInfoToLog(p.ProcessName + " id: " + p.Id);   
    if (p.ProcessName == "notepad++")
        p.Kill();
}
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
выше код скинули. Вместо notepad можешь любой процесс прописывать и внутри if те действия, что хочешь
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
C#:
var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{
    project.SendInfoToLog(p.ProcessName + " id: " + p.Id);  
    if (p.ProcessName == "notepad++")
        p.Kill();
}
Убивать процесс на данном этапе мне не нужно, пока я не узнал все PID и пути к папкам у которых запущенный процесс notepad.exe , поэтому я и конкретизировал мой вопрос, что хотелось бы имея имя процесса, получить все PID с таким именем, например в список, и потом с помощью этих PID, узнать дороги, где данные программы лежат. Что бы при выполнении определенных действий, по новому запустить данные программы, зная их пути расположения...)
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113
p.MainModule.FileName
отдаст путь
 
  • Спасибо
Реакции: Gunjubasik

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
Например данный код:
64517
Получает в переменную результат не совсем тот что нужен, ну это понятно, так как возвращаю не то. Но а как мне например в список вернуть все PID chrome? И например отдельный кодом, узнать по PID пути где эти программы лежат.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
p.MainModule.FileName
отдаст путь
А если у нас несколько программ с нужным нам именем, но пути к ним разные, все они зайдут в переменную, или только первая? (Мне нужно получить все пути)
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
C#:
IZennoList spisok = project.Lists["Список 1"];

var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{
    project.SendInfoToLog(p.ProcessName + " id: " + p.Id);   
    if (p.ProcessName == "chrome")
        spisok.Add(p.ProcessName + " id: " + p.Id + "path: " + p.MainModule.FileName);
}
 
  • Спасибо
Реакции: Gunjubasik

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113
C#:
var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{   
    if (p.ProcessName == "notepad++")
    {
        string pid = p.Id;
        string dir = p.MainModule.FileName;
        //добавляешь в таблицу pid и dir
    }
}
 
  • Спасибо
Реакции: Gunjubasik

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
C#:
var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{  
    if (p.ProcessName == "notepad++")
    {
        string pid = p.Id;
        string dir = p.MainModule.FileName;
        //добавляешь в таблицу pid и dir
    }
}
Добавлять таблицу, имелось ввиду подставить примерно такую строку?
C#:
spisok.Add(p.Id + p.MainModule.FileName);
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
C#:
IZennoList spisok = project.Lists["Список 1"];

var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{
    project.SendInfoToLog(p.ProcessName + " id: " + p.Id);  
    if (p.ProcessName == "chrome")
        spisok.Add(p.ProcessName + " id: " + p.Id + "path: " + p.MainModule.FileName);
}
Подскажите шпаргалку по c# пожалуйста, откуда вы все это взяли.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
Курс Рогожкина найди, для основ c# (именно для зенки) самое то. А именно по System.Diagnostics выше ссылку давал на майкрософт, по другому никак (ну плюс погуглить можно).
 
  • Спасибо
Реакции: Gunjubasik

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113
  • Спасибо
Реакции: Gunjubasik

ruthless

Client
Регистрация
13.02.2017
Сообщения
226
Благодарностей
67
Баллы
28
C#:
var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{
    project.SendInfoToLog(p.ProcessName + " id: " + p.Id);  
    if (p.ProcessName == "notepad++")
        p.Kill();
}
дружище, а как получить pid по локальному адресу процесса?
 

ppanfilov

Client
Регистрация
14.11.2017
Сообщения
8
Благодарностей
3
Баллы
3
А как убить процесс по PID, а не по имени ? помогите с регуляркой
 

PUNKOFFYA

Client
Регистрация
10.05.2021
Сообщения
7
Благодарностей
2
Баллы
3

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
узнал? если да поделись кодом, все обыскал нихрена не помогает
выше код есть, надо лишь видоизменить (сам не пробовал, но по логике должно быть так):
C#:
var procList = System.Diagnostics.Process.GetProcesses();
foreach(var p in procList)
{
    project.SendInfoToLog(p.ProcessName + " id: " + p.Id);  
    if (p.Id == "айди_вашего_процесса")
        p.Kill();
}
P.S. Если айди это не то, что нужно, то ты можешь поискать нужное тебе, написав p. и найдя в подсказках нужное свойство
 

Stereotip

Client
Регистрация
19.02.2015
Сообщения
9
Благодарностей
0
Баллы
1
Нужна помощь с синтаксисом C#
Задача - в список добавлять айди новых уникальных процессов. Каждый с новой строки.
Но, куча дублей появляется в файле...
пс. в C# не разбираюсь

C#:
// создаем список
IZennoList spisok = project.Lists["process"];

// забираем все процессы в фоне
var procList = System.Diagnostics.Process.GetProcesses();

// для каждого процесса проверяем
foreach(var p in procList)
{
    if (p.ProcessName == "chrome") // если название процесса chrome
    {
        if (spisok.Count== 0) // если список пустой
            spisok.Add(p.Id.ToString()); // добавить значение
        else
        {
            for(int i=0; i < spisok.Count; i++) // проходимся по каждой строке списка
            {
                var str = spisok[i];  // читаем строку
                if (str.Contains(p.Id.ToString())) // проверяем содержание текста
                    continue;
                spisok.Add(p.Id.ToString()); // добавить значение
            }
        }
    }
}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
C#:
// создаем список
IZennoList spisok = project.Lists["process"];

// забираем все процессы в фоне
var procList = System.Diagnostics.Process.GetProcesses();

// для каждого процесса проверяем
foreach(var p in procList)
{
    if (p.ProcessName == "chrome") // если название процесса chrome
    {
        for(int i=0; i < spisok.Count; i++) // проходимся по каждой строке списка
        {
            if (!spisok.Contains(p.Id.ToString())) // проверяем содержание текста
                spisok.Add(p.Id.ToString()); // добавить значение
        }
        
    }
}
 
  • Спасибо
Реакции: Stereotip

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)