Qt 4 - список запущеных приложений
Модератор: Модераторы разделов
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Qt 4 - список запущеных приложений
Срочно помогите, кто может! Задача следующая: под иксами запущено N-ное количество приложений. В общем случае как Qt-шные так и нет. Как мне средствами Qt узнать запущено ли конкретное приложение? Заголовок главного окна приложения известен
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
MakkyWelly
- Сообщения: 97
- ОС: по обстоятельствам :)
Re: Qt 4 - список запущеных приложений
Как мне средствами Qt узнать запущено ли конкретное приложение? Заголовок главного окна приложения известен
По моему в Qt нет такого функционала, поэтому нужно либо парсить "ps aux", либо смотреть в /proc, либо писать свой код, вроде того что в ps. Вот примерно для ps набросок:
Код: Выделить всё
// Ps.h + Ps.c
#include <QObject>
#include <QProcess>
const PS = "ps" // way to 'ps' programm
class Ps : public QProcess {
Q_OBJECT
public:
Ps(QString option = QString());
~Ps();
public slots:
void psOutput();
};
Ps::Ps(QString option) {
if (option == QString()) {
option = "aux";
}
connect (this, SIGNAL(readyReadStandardOutput()),
this, SLOT(psOutput()));
QStringList argv;
argv << option;
start(PS, argv);
}
Ps::~Ps() {
terminate();
}
void Ps::psOutput() {
QByteArray bytes = readAllStandardOutput();
QStringList lines = QString(bytes).split("\n");
//
// parse every line there ...
// I don't know how :)
//
}
// main.c
#include <QApplication>
#include <logwindow.h>
#include <argumentlist.h>
#include <Ps.h>
int main (int argc, char* argv[]) {
QApplication app(argc, argv);
ArgumentList al;
LogWindow lw("ps-window");
lw.setWindowTitle("ps-window");
QString option;
if (al.size() > 1) option = al[1];
Ps ps(option);
lw.show();
return app.exec();
}die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
Спасибо сказали:
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Qt 4 - список запущеных приложений
Спасибо! Попробую этот способ. Но тут еще одна проблема: помимо поиска приложения после его нахождения его еще и во фронт нужно вывести. Я так подозреваю, что придется копать в сторону Xt... Не хотелось бы, если честно... Я думал, что в Qt есть какой-то свой функционал для этого...
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Doublespace
- Сообщения: 275
- ОС: Debian Lenny,Squeeze,Centos
Re: Qt 4 - список запущеных приложений
Если задача стоит избежать запуска второй копии этой же софтины, то решается использованием компонента
qtsingleapplication - http://qt.nokia.com/products/appdev/add-on...ngleapplication
qtsingleapplication - http://qt.nokia.com/products/appdev/add-on...ngleapplication
-
MakkyWelly
- Сообщения: 97
- ОС: по обстоятельствам :)
Re: Qt 4 - список запущеных приложений
Ага, нужно использовать Xlib
Я там правильно на NULL проверяю? Вот такой макрос в порядке:
Код: Выделить всё
#include <X11/Xlib.h>
// on POSIX-system it woude be display from DISPLAY in environment:
const DEFAUL_DISPLAY = NULL;
int bringToTop(long id)
Display *dsp = XOpenDisplay(DEFAUL_DISPLAY);
if (*dsp == NULL) {
return -1;
}
XRaiseWindow(dsp, id);
// TODO: check BadWindow error. -2
XSetInputFocus(dsp, id, RevertToNone, CurrentTime);
// TODO: check error! -3
XCloseDisplay(dsp);
// TODO: check BadGC error. -4
return 0;
}Я там правильно на NULL проверяю? Вот такой макрос в порядке:
Код: Выделить всё
// где VAR это *var = функция_которую_мы_вызвали
#define check_for_null(VAR, CODE) if ((VAR) == NULL) { return CODE; }die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Qt 4 - список запущеных приложений
Doublespace писал(а): ↑10.02.2010 15:35Если задача стоит избежать запуска второй копии этой же софтины, то решается использованием компонента
qtsingleapplication - http://qt.nokia.com/products/appdev/add-on...ngleapplication
Задача такая: запускаются две проги - одна основная, другая вспомогательная. В зависимости от того, что происходит в основной, нужно периодически выводить во фронт вспомогательную и через некоторое время снова ее прятать. Проги друг от друга никак не зависят.
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Qt 4 - список запущеных приложений
Вот только id как получить?
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Doublespace
- Сообщения: 275
- ОС: Debian Lenny,Squeeze,Centos
Re: Qt 4 - список запущеных приложений
Так может их просто через DBus связать и пусть общаются? Или вторая прога не ваша?
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Qt 4 - список запущеных приложений
Doublespace писал(а): ↑10.02.2010 16:14Так может их просто через DBus связать и пусть общаются? Или вторая прога не ваша?
Наша. Вот как это сделать?
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Doublespace
- Сообщения: 275
- ОС: Debian Lenny,Squeeze,Centos
Re: Qt 4 - список запущеных приложений
В примерчиках по dbus в комплекте qt посмотрите.
-
Olegator
- Сообщения: 2493
- ОС: SuseLinux 11.2 KDE 4.3
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Qt 4 - список запущеных приложений
Ок, полез смотреть
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare