Хранилища Subversion OpenInventory

Редакция

Редакция 248 | К новейшей редакции | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS

Редакция 248 Редакция 249
1
#include "wmithread.h"
1
#include "wmithread.h"
2
2
3
WmiThread::WmiThread(QObject *parent) :
3
WmiThread::WmiThread(QObject *parent) :
4
    QThread(parent)
4
    QThread(parent)
5
{
5
{
6
  //  woker.moveToThread(this);
6
  //  woker.moveToThread(this);
7
    mutex.lock();
7
    mutex.lock();
8
    stopped = false;
8
    stopped = false;
9
    mutex.unlock();
9
    mutex.unlock();
10
10
11
 //   connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandartProcessOutput()));
11
 //   connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandartProcessOutput()));
12
 //   connect(&process, SIGNAL(readyReadStandardError()), this, SLOT(readStandartProcessError()));
12
 //   connect(&process, SIGNAL(readyReadStandardError()), this, SLOT(readStandartProcessError()));
13
13
14
14
15
15
16
}
16
}
17
17
18
void WmiThread::run(){
18
void WmiThread::run(){
19
19
20
20
21
   QEventLoop loop; // = new QEventLoop();
21
   QEventLoop loop; // = new QEventLoop();
22
    Woker woker; // îáúåêò äëÿ ðàáîòû â òåëå ïîòîêà
22
    Woker woker; // îáúåêò äëÿ ðàáîòû â òåëå ïîòîêà
23
23
24
    // connect(&woker, SIGNAL(workEnd()), this, SLOT(wokerIsStopped()));
24
    // connect(&woker, SIGNAL(workEnd()), this, SLOT(wokerIsStopped()));
25
connect(&woker, SIGNAL(workEnd()), &loop, SLOT(quit()));
25
connect(&woker, SIGNAL(workEnd()), &loop, SLOT(quit()));
26
26
27
27
28
    QString query_string;
28
    QString query_string;
29
//    error = false; //ñáðîñèì ôëàã îøèáêè
29
//    error = false; //ñáðîñèì ôëàã îøèáêè
30
    query_string = tr("wmic -U ");
30
    query_string = tr("wmic -U ");
31
    query_string.append(user_name);
31
    query_string.append(user_name);
32
    query_string.append(tr("%"));
32
    query_string.append("%\"");
33
    query_string.append(password);
33
    query_string.append(password);
-
 
34
    query_string.append("\"");
34
    query_string.append(tr(" //"));
35
    query_string.append(tr(" //"));
35
    query_string.append(host);
36
    query_string.append(host);
36
    query_string.append(tr(" \""));
37
    query_string.append(tr(" \""));
37
    query_string.append(wmi_string);
38
    query_string.append(wmi_string);
38
    query_string.append(tr("\""));
39
    query_string.append(tr("\""));
39
    // process.start(query_string);
40
    // process.start(query_string);
40
//    process.start("ls\n");
41
//    process.start("ls\n");
41
//    while (!stopped) {;}
42
//    while (!stopped) {;}
42
43
43
-
 
-
 
44
    qDebug() << query_string;
44
    woker.setProcessString(query_string);
45
    woker.setProcessString(query_string);
45
    woker.startProcess();
46
    woker.startProcess();
46
47
47
    loop.exec();
48
    loop.exec();
48
    p_buffer = woker.workBuffer();
49
    p_buffer = woker.workBuffer();
49
}
50
}
50
51
51
void WmiThread::stop(){
52
void WmiThread::stop(){
52
      mutex.lock();
53
      mutex.lock();
53
      stopped = true;
54
      stopped = true;
54
      mutex.unlock();
55
      mutex.unlock();
55
}
56
}
56
57
57
void WmiThread::readStandartProcessOutput(){
58
void WmiThread::readStandartProcessOutput(){
58
p_buffer = process.readAllStandardOutput();
59
p_buffer = process.readAllStandardOutput();
59
 qDebug() << QString(p_buffer);
60
 qDebug() << QString(p_buffer);
60
mutex.lock();
61
mutex.lock();
61
stopped = true;
62
stopped = true;
62
mutex.unlock();
63
mutex.unlock();
63
process.close();
64
process.close();
64
exit();
65
exit();
65
}
66
}
66
67
67
void WmiThread::readStandartProcessError(){
68
void WmiThread::readStandartProcessError(){
68
p_buffer = process.readAllStandardError();
69
p_buffer = process.readAllStandardError();
69
error = true; // åñëè îøèáêà, óñòàíîâèì ôëàã îøèáêè âûïîëíåíèÿ WMI-çàïðîñà
70
error = true; // åñëè îøèáêà, óñòàíîâèì ôëàã îøèáêè âûïîëíåíèÿ WMI-çàïðîñà
70
}
71
}
71
72
72
73
73
void WmiThread::wokerIsStopped(){
74
void WmiThread::wokerIsStopped(){
74
exit();
75
exit();
75
}
76
}
76
 
77