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

Gunjubasik

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

volody00

Client
Регистрация
06.09.2016
Сообщения
929
Благодарностей
1 017
Баллы
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 315
Благодарностей
869
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 563
Благодарностей
1 367
Баллы
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 315
Благодарностей
869
Баллы
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
Сообщения
929
Благодарностей
1 017
Баллы
93
выше код скинули. Вместо notepad можешь любой процесс прописывать и внутри if те действия, что хочешь
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 563
Благодарностей
1 367
Баллы
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 315
Благодарностей
869
Баллы
113
p.MainModule.FileName
отдаст путь
 
  • Спасибо
Реакции: Gunjubasik

Gunjubasik

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

Gunjubasik

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

volody00

Client
Регистрация
06.09.2016
Сообщения
929
Благодарностей
1 017
Баллы
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 315
Благодарностей
869
Баллы
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 563
Благодарностей
1 367
Баллы
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 563
Благодарностей
1 367
Баллы
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
Сообщения
929
Благодарностей
1 017
Баллы
93
Курс Рогожкина найди, для основ c# (именно для зенки) самое то. А именно по System.Diagnostics выше ссылку давал на майкрософт, по другому никак (ну плюс погуглить можно).
 
  • Спасибо
Реакции: Gunjubasik

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 315
Благодарностей
869
Баллы
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
Сообщения
929
Благодарностей
1 017
Баллы
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 685
Благодарностей
4 642
Баллы
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

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