Получить ID процесса и локнуть

JustSmile

Client
Регистрация
19.01.2016
Сообщения
116
Благодарностей
3
Баллы
18
Запускаю батник с процессом, нужно как то узнать айди процесса и потом по айди его закрывать. Кто сталкивался и знает решение?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: JustSmile

JustSmile

Client
Регистрация
19.01.2016
Сообщения
116
Благодарностей
3
Баллы
18
Спасибо, но не знаю как верно заполнить тут:

  1. string fileName = @"C:\Program Files\Notepad++\notepad++.exe"; // путь к файлу или имя exe'шника (напр, cmd.exe)
  2. string arguments = @""; // параметры запуска
Если к примеру мне нужно примерно так:
string fileName = @"{-Project.Directory-}\Notepad++\notepad++.exe"; // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = @"--seed-time=1 --dir="{-Project.Directory-}\File\Temp\{-Variable.Random-}\{-Variable.Id_torrent-}" "{-Project.Directory-}\File\Temp\{-Variable.Random-}\[torrent.net].t{-Variable.Id_torrent-}.torrent""; // параметры запуска
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Спасибо, но не знаю как верно заполнить тут:
C#:
string fileName = string.Format(@"{0}\Notepad++\notepad++.exe", project.Directory); // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = string.Format(@"--seed-time=1 --dir=""{0}\File\Temp\{1}\{2}"" ""{0}\File\Temp\{1}\[torrent.net].t{2}.torrent""",
    project.Directory, project.Variables["Random"].Value, project.Variables["Id_torrent"].Value); // параметры запуска
 
  • Спасибо
Реакции: JustSmile

JustSmile

Client
Регистрация
19.01.2016
Сообщения
116
Благодарностей
3
Баллы
18
C#:
string fileName = string.Format(@"{0}\Notepad++\notepad++.exe", project.Directory); // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = string.Format(@"--seed-time=1 --dir=""{0}\File\Temp\{1}\{2}"" ""{0}\File\Temp\{1}\[torrent.net].t{2}.torrent""",
    project.Directory, project.Variables["Random"].Value, project.Variables["Id_torrent"].Value); // параметры запуска
Вроде все правильно сделал, но ошибка
Выполнение действия CSharp OwnCode Не удается найти указанный файл


Код:
string fileName = string.Format(@"{0}\pornolab.net\Setting\aria2\aria2.exe", project.Directory); // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = string.Format(@"--seed-time=1 --dir=""{0}\pornolab.net\Temp\{1}\{2}"" ""{0}\pornolab.net\Temp\{1}\[pornolab.net].t{2}.torrent""",
    project.Directory, project.Variables["Random"].Value, project.Variables["Id_torrent"].Value); // параметры запуска
bool windowStyle = true; // true - не показывать окно процесса, false - показывать окно процесса
bool getProcessId = true; // true - получить ID процесса, false - не получать ID процесса
bool waitForExit = false; // true - ждать завершения работы, false - не ждать завершения работы
int timeOut = 10000; // таймаут выполнения, в миллисек

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.StartInfo.Arguments = arguments;
if (windowStyle)
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
else
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
process.Start();
if (getProcessId)
    project.Variables["processId"].Value = process.Id.ToString(); // получаем ID процесса (создать переменную проекта processId)
if (waitForExit)
    process.WaitForExit(timeOut);
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Вроде все правильно сделал, но ошибка
Выполнение действия CSharp OwnCode Не удается найти указанный файл
Видимо, пути не правильно указаны. По факту какие пути должны быть к exe, директории и файлу?
 

JustSmile

Client
Регистрация
19.01.2016
Сообщения
116
Благодарностей
3
Баллы
18
Видимо, пути не правильно указаны. По факту какие пути должны быть к exe, директории и файлу?
К ".exe" полный путь
D:\PaySite\Pay\pornolab.net\pornolab.net\Setting\aria2\aria2.exe

Куда закачивать
D:\PaySite\Pay\pornolab.net\pornolab.net\Temp\{1}\{2}

Путь к самому торренту
D:\PaySite\Pay\pornolab.net\Temp\{1}\[pornolab.net].t{2}.torrent
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
К ".exe" полный путь
Если директория проекта - D:\PaySite\Pay\pornolab.net, то всё должно быть правильно.
А в переменных проекта Random и Id_torrent точно есть какие-то значения и нет ли в них каких-нибудь лишних пробелов?
 

JustSmile

Client
Регистрация
19.01.2016
Сообщения
116
Благодарностей
3
Баллы
18
Если директория проекта - D:\PaySite\Pay\pornolab.net, то всё должно быть правильно.
А в переменных проекта Random и Id_torrent точно есть какие-то значения и нет ли в них каких-нибудь лишних пробелов?
Random и Id_torrent точно есть значения, лишних пробелов нету

Upd. Нашел баг, теперь норм
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Так попробуй:
C#:
string directory = string.Format(@"{0}\File\Temp\{1}\{2}", project.Directory, project.Variables["Random"].Value, project.Variables["Id_torrent"].Value);
string filePath = string.Format(@"{0}\File\Temp\{1}\[torrent.net].t{2}.torrent", project.Directory, project.Variables["Random"].Value, project.Variables["Id_torrent"].Value);

string fileName = string.Format(@"{0}\pornolab.net\Setting\aria2\aria2.exe", project.Directory); // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = string.Format(@"--seed-time=1 --dir=""{0}"" ""{1}""", directory, filePath); // параметры запуска
bool windowStyle = true; // true - не показывать окно процесса, false - показывать окно процесса
bool getProcessId = true; // true - получить ID процесса, false - не получать ID процесса
bool waitForExit = false; // true - ждать завершения работы, false - не ждать завершения работы
int timeOut = 10000; // таймаут выполнения, в миллисек

if (!Directory.Exists(directory))
    Directory.CreateDirectory(directory);

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.StartInfo.Arguments = arguments;
if (windowStyle)
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
else
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
process.Start();
if (getProcessId)
    project.Variables["processId"].Value = process.Id.ToString(); // получаем ID процесса (создать переменную проекта processId)
if (waitForExit)
    process.WaitForExit(timeOut);
 
  • Спасибо
Реакции: JustSmile

JustSmile

Client
Регистрация
19.01.2016
Сообщения
116
Благодарностей
3
Баллы
18
Теперь все работает, огромное спасибо, долго не знал как решить проблему!
 
  • Спасибо
Реакции: Dimionix

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