Название: QProcess получение списка процессов
Отправлено: G-virus от Декабрь 29, 2009, 13:58
Привет форумчане. Помогите с такой проблемой. Как с помощью QProcess получать список запущенных процессов?
Название: Re: QProcess получение списка процессов
Отправлено: niXman от Декабрь 29, 2009, 14:17
никак. какая ОС ?
Название: Re: QProcess получение списка процессов
Отправлено: G-virus от Декабрь 29, 2009, 14:17
никак. какая ОС ?
винда XP или как сделать, чтобы программа если обнаружит определенный процесс, то тут же его завершает?
Название: Re: QProcess получение списка процессов
Отправлено: niXman от Декабрь 29, 2009, 14:35
Так, минутку... В соседней теме, тебе нужно получить список процессов. Получил. Остальное тут: http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx
Название: Re: QProcess получение списка процессов
Отправлено: G-virus от Декабрь 29, 2009, 14:40
Остальное тут: http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx
Так это же msdn для .NET Framework. А в QProcess ест какая-нибудь функция наподобие QProcess::kill(firefox.exe) ?
Название: Re: QProcess получение списка процессов
Отправлено: Alex Custov от Декабрь 29, 2009, 14:42
Так это же msdn для .NET Framework. А в QProcess ест какая-нибудь функция наподобие QProcess::kill(firefox.exe) ?
В винде есть kill()
Название: Re: QProcess получение списка процессов
Отправлено: SimpleSunny от Декабрь 29, 2009, 14:42
tasklist taskkill Если XP Pro.
P. S. То функции WinAPI, что более корректно, ИМХО.
Название: Re: QProcess получение списка процессов
Отправлено: G-virus от Декабрь 29, 2009, 14:44
В винде есть kill()
А функция проверки на существование процесса? Допустим так C++ (Qt) /*************************/ if QProcess::exist(firefox.exe) QProcess::kill(firefox.exe) /*************************/
Название: Re: QProcess получение списка процессов
Отправлено: panAlexey от Декабрь 29, 2009, 15:13
А функция проверки на существование процесса?
CToolhelp thProcesses(TH32CS_SNAPPROCESS); PROCESSENTRY32 pe = { sizeof(pe) }; BOOL fOk = thProcesses.ProcessFirst(&pe); for (; fOk; fOk = thProcesses.ProcessNext(&pe)) { TCHAR sz[1024];
// Place the process name (without its path) & ID in the list PCTSTR pszExeFile = _tcsrchr(pe.szExeFile, TEXT('\\')); if (pszExeFile == NULL) pszExeFile = pe.szExeFile; else pszExeFile++; // Skip over the slash wsprintf(sz, TEXT("%s (0x%08X)"), pszExeFile, pe.th32ProcessID); int n = ComboBox_AddString(hwndList, sz);
// Associate the process ID with the added item ComboBox_SetItemData(hwndList, n, pe.th32ProcessID); }
http://www.knigka.info/2007/08/28/windows_dlja_professionalov_sozdanie_jeffektivnykh_win32ppilozhenijj_s_uchetom_specifiki_64razrjadnojj_versii_windows.html
Название: Re: QProcess получение списка процессов
Отправлено: G-virus от Декабрь 29, 2009, 18:20
Спасибо :) буду разбираться
Название: Re: QProcess получение списка процессов
Отправлено: RZX от Август 18, 2010, 11:05
Может, кому пригодится для Windows (mingw/QtCreator/Qt4.6)... получить список процессов в Qt Класс systemWin32 // systemwin32.h #ifndef SYSTEMWIN32_H #define SYSTEMWIN32_H
#include <windows.h> #include <w32api.h> #include <tlhelp32.h>
#include <QMap> #include <QString> #include <QMessageBox>
class systemWin32 { public: systemWin32(); bool findProcess(QString findProcName); QString getProcessName(int idProcess); QStringList getAllProcessList(); private: QMap <int, QString> win32sysMap; QString copyToQString(WCHAR array[MAX_PATH]);
};
#endif // SYSTEMWIN32_H
// systemwin32.cpp #include "systemwin32.h"
systemWin32::systemWin32() { HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap == NULL) { QMessageBox::critical(0, "Error!", "Error Load ToolHelp", QMessageBox::Close); return; }
PROCESSENTRY32 proc = { sizeof(proc) };
if (Process32First(hSnap, &proc)) { QString filename;
filename = copyToQString(proc.szExeFile); win32sysMap[proc.th32ProcessID] = filename;
while (Process32Next(hSnap, &proc)) { filename = copyToQString(proc.szExeFile); win32sysMap[proc.th32ProcessID] = filename; } } }
// принимает имя процесса, возвращает true, если процесс запущен bool systemWin32::findProcess(QString findProcName) { QMapIterator<int, QString> i(win32sysMap); while (i.hasNext()) { i.next(); if (i.value() == findProcName) return true; }
return false; }
// получить имя процесса по ID-у QString systemWin32::getProcessName(int idProcess) { return win32sysMap[idProcess]; }
// имена процессов WinAPI представлены как массив WCHAR. Для удобства - возврат в QString // хэз, может как-нить по другому можно сделать QString systemWin32::copyToQString(WCHAR array[MAX_PATH]) { QString string; int i = 0;
while (array[i] != 0) { string[i] = array[i]; i++; } return string; }
// получить список всех процессов QStringList systemWin32::getAllProcessList() { return win32sysMap.values(); }
// ну и кому вообще лень - оболочка для тестирования и pro файл
// main.cpp #include <QtGui>
#include "systemwin32.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel;
bool ok; QString processName = QInputDialog::getText(0, "Do you want to know that process is created?", "Input process name", QLineEdit::Normal, "", &ok); systemWin32 processesInWin;
if (ok) { if (processesInWin.findProcess(processName)) { QMessageBox::information(0, "Yes", "Process " + processName + " has been created!"); } else { QMessageBox::information(0, "No", "Process " + processName + " hasn't been created!"); }
}
int ret = QMessageBox::information(0, "Question", "Do you want see all list of process?", QMessageBox::Ok | QMessageBox::Cancel);
if (ret == QMessageBox::Ok) { QStringList list(processesInWin.getAllProcessList()); QString strings;
for (int i = 0; i < list.size(); i++) { strings += list[i] + "\n"; }
label->setText(strings); label->show(); }
return app.exec(); }
// getprocesslist.pro TARGET = getprocesslist TEMPLATE = app SOURCES += main.cpp \ systemwin32.cpp HEADERS += systemwin32.h
Название: Re: QProcess получение списка процессов
Отправлено: developer от Август 20, 2010, 13:49
http://www.windowsfaq.ru/content/view/50/37/ - очень полезная штука, может многое, сам использовал, можно как скрипты писать так и в командной строчке запускать. Поищи еще по гуглу wmic win xp
Название: Re: QProcess получение списка процессов
Отправлено: merke от Август 24, 2010, 13:31
Так как же все таки удалить процесс??? Сейчас очень нужно!!!
Помогите пожалуйста!!!
Название: Re: QProcess получение списка процессов
Отправлено: Sancho_s_rancho от Август 24, 2010, 13:57
Так как же все таки удалить процесс??? Сейчас очень нужно!!!
Помогите пожалуйста!!!
Не нервничать! Сейчас дам исходники.
Название: Re: QProcess получение списка процессов
Отправлено: Sancho_s_rancho от Август 24, 2010, 14:03
Вот менеджер процессов с возможностью грохнуть процесс. Написан на Qt, только для виндовс.
Название: Re: QProcess получение списка процессов
Отправлено: RZX от Август 24, 2010, 14:20
2 Sancho_s_rancho: То что надо! Огромное спасибо!!!
Название: Re: QProcess получение списка процессов
Отправлено: lell3 от Июль 25, 2017, 16:13
Вот менеджер процессов с возможностью грохнуть процесс. Написан на Qt, только для виндовс.
Спасибо огромное!!!!!
|