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

  • Автор темы Автор темы The_vAe
  • Дата начала Дата начала

The_vAe

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


Слушай, а для чего использовать хочешь? Никогда просто не работал с этим классом, может подскажешь чем он может быть полезен
 
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.
 
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();
}
 
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, узнать дороги, где данные программы лежат. Что бы при выполнении определенных действий, по новому запустить данные программы, зная их пути расположения...)
 
p.MainModule.FileName
отдаст путь
 
  • Спасибо
Реакции: The_vAe
Например данный код:
64517
Получает в переменную результат не совсем тот что нужен, ну это понятно, так как возвращаю не то. Но а как мне например в список вернуть все PID chrome? И например отдельный кодом, узнать по PID пути где эти программы лежат.
 
p.MainModule.FileName
отдаст путь
А если у нас несколько программ с нужным нам именем, но пути к ним разные, все они зайдут в переменную, или только первая? (Мне нужно получить все пути)
 
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);
}
 
  • Спасибо
Реакции: The_vAe
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
    }
}
 
  • Спасибо
Реакции: The_vAe
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);
 
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# пожалуйста, откуда вы все это взяли.
 
Курс Рогожкина найди, для основ c# (именно для зенки) самое то. А именно по System.Diagnostics выше ссылку давал на майкрософт, по другому никак (ну плюс погуглить можно).
 
  • Спасибо
Реакции: The_vAe
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 по локальному адресу процесса?
 
А как убить процесс по PID, а не по имени ? помогите с регуляркой
 
узнал? если да поделись кодом, все обыскал нихрена не помогает
выше код есть, надо лишь видоизменить (сам не пробовал, но по логике должно быть так):
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. и найдя в подсказках нужное свойство
 
Нужна помощь с синтаксисом 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()); // добавить значение
            }
        }
    }
}
 
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

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