dberube4

Process Watcher

May 6th, 2012
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 23.40 KB | None | 0 0
  1. #You need the psutil library and PyQt4 installed!
  2. from PyQt4 import QtGui,QtCore
  3. import psutil,sys,datetime
  4.  
  5. class watcher(QtGui.QMainWindow):
  6.    
  7.     def __init__(self):
  8.         super(watcher, self).__init__()
  9.         self.initWatchMenu()
  10.         self.initMain()
  11.        
  12.     def initMain(self):
  13.         def initWidgets():
  14.             self.watchedProc = None
  15.             self.refreshBtn = QtGui.QPushButton('Refresh',self);self.refreshBtn.setGeometry(10,440,100,40);self.refreshBtn.clicked.connect(self.mainActions);self.refreshBtn.setToolTip('<html><head/><body><p><span style=" font-size:15pt; font-weight:600;">Look for new process</span></p></body></html>')
  16.             self.DumpBtn = QtGui.QPushButton('Dump',self);self.DumpBtn.setEnabled(False);self.DumpBtn.setGeometry(130,440,100,40);self.DumpBtn.clicked.connect(self.dump);self.DumpBtn.setToolTip('<html><head/><body><p><span style=" font-size:15pt; font-weight:600;">Dump process informations in a text file.</span></p></body></html>')
  17.             self.WatchBtn = QtGui.QPushButton('Watch',self);self.WatchBtn.setEnabled(False);self.WatchBtn.setGeometry(250,440,100,40);self.WatchBtn.clicked.connect(self.mainActions);self.WatchBtn.setToolTip('<html><head/><body><p><span style=" font-size:15pt; font-weight:600;">Start watching a process.</span></p></body></html>')
  18.             self.processList = QtGui.QListWidget(self);self.processList.setGeometry(10,10,340,420);self.processList.setSortingEnabled(True);self.processList.itemPressed.connect(self.mainActions)
  19.        
  20.         try:
  21.             style = open('QNovaDark.py','r')
  22.             exec(style.read()) in globals(),locals()
  23.         except:
  24.             pass
  25.         self.setFixedSize(360,490)
  26.         self.setWindowTitle('Process Watcher - by dberube4')
  27.         self.setWindowFlags(QtCore.Qt.CustomizeWindowHint|QtCore.Qt.WindowTitleHint|QtCore.Qt.WindowCloseButtonHint)
  28.         initWidgets()
  29.         self.show()
  30.     def initWatchMenu(self):
  31.         def initWidgets(self1):
  32.             self.watchTimer =  QtCore.QTimer(self);self.watchTimer.setInterval(1000);self.watchTimer.timeout.connect(self.watchAction)
  33.             self.basicTab = QtGui.QWidget(self1);self.advTab = QtGui.QWidget(self1);self.utilityTab = QtGui.QWidget(self1);self.adv2Tab = QtGui.QWidget(self1);self.netTab = QtGui.QWidget(self1)
  34.             self.holder = QtGui.QTabWidget(self1);self.holder.setGeometry(10,5,480,230);self.holder.addTab(self.basicTab,'Basic');self.holder.addTab(self.advTab,'Advanced 1');self.holder.addTab(self.adv2Tab,'Advanced 2');self.holder.addTab(self.netTab,'Connections');self.holder.addTab(self.utilityTab,'Utility')
  35.             #Basic
  36.             label1 = QtGui.QLabel('PID: ',self.basicTab);label1.setGeometry(10,12,200,20);label2 = QtGui.QLabel('PPID: ',self.basicTab);label2.setGeometry(160,12,200,20)
  37.             label3 = QtGui.QLabel('Parent: ',self.basicTab);label3.setGeometry(305,12,200,20);label4 = QtGui.QLabel('Path: ',self.basicTab);label4.setGeometry(10,47,200,20)
  38.             label5 = QtGui.QLabel('Cmd: ',self.basicTab);label5.setGeometry(10,87,200,20);label6 = QtGui.QLabel('Creation: ',self.basicTab);label6.setGeometry(10,127,200,20)
  39.             label7 = QtGui.QLabel('Owner: ',self.basicTab);label7.setGeometry(250,127,200,20);label8 = QtGui.QLabel('Status: ',self.basicTab);label8.setGeometry(10,167,200,20)
  40.             label9 = QtGui.QLabel('Priority: ',self.basicTab);label9.setGeometry(250,167,200,20)
  41.             self.pidBox = QtGui.QLineEdit(self.basicTab);self.pidBox.setGeometry(55,10,80,25);self.pidBox.setReadOnly(True);self.pidBox.setToolTip('The process PID')
  42.             self.ppidBox = QtGui.QLineEdit(self.basicTab);self.ppidBox.setGeometry(220,10,80,25);self.ppidBox.setReadOnly(True);self.ppidBox.setToolTip('The process parent PID (if any)')
  43.             self.parentBox = QtGui.QLineEdit(self.basicTab);self.parentBox.setGeometry(365,10,100,25);self.parentBox.setReadOnly(True);self.parentBox.setToolTip('The process parent name (if any)')
  44.             self.pathBox = QtGui.QLineEdit(self.basicTab);self.pathBox.setGeometry(60,45,400,25);self.pathBox.setReadOnly(True);self.pathBox.setToolTip('The process executable as an absolute path name.')
  45.             self.cmdBox = QtGui.QLineEdit(self.basicTab);self.cmdBox.setGeometry(60,85,400,25);self.cmdBox.setReadOnly(True);self.cmdBox.setToolTip('The command line process has been called with. ')
  46.             self.creationBox = QtGui.QLineEdit(self.basicTab);self.creationBox.setGeometry(90,125,130,25);self.creationBox.setReadOnly(True);self.creationBox.setToolTip('The process creation date')
  47.             self.ownerBox = QtGui.QLineEdit(self.basicTab);self.ownerBox.setGeometry(320,125,130,25);self.ownerBox.setReadOnly(True);self.ownerBox.setToolTip('Owner of the process.')
  48.             self.statusBox = QtGui.QLineEdit(self.basicTab);self.statusBox.setGeometry(80,165,130,25);self.statusBox.setReadOnly(True);self.statusBox.setToolTip('Status of the process.')
  49.             self.priorityBox = QtGui.QLineEdit(self.basicTab);self.priorityBox.setGeometry(320,165,130,25);self.priorityBox.setReadOnly(True);self.priorityBox.setToolTip('Priority of the process.')
  50.             #Advanced 1
  51.             label10 = QtGui.QLabel('CWD: ',self.advTab);label10.setGeometry(10,12,200,20);label11 = QtGui.QLabel('Read Count: ',self.advTab);label11.setGeometry(10,48,200,20)
  52.             label12 = QtGui.QLabel('Byte Read: ',self.advTab);label12.setGeometry(250,48,200,20);label13 = QtGui.QLabel('Write Count: ',self.advTab);label13.setGeometry(10,88,200,20)
  53.             label14 = QtGui.QLabel('Byte written: ',self.advTab);label14.setGeometry(250,88,200,20);label15 = QtGui.QLabel('Threads number: ',self.advTab);label15.setGeometry(10,128,200,20)
  54.             self.cwdBox = QtGui.QLineEdit(self.advTab);self.cwdBox.setGeometry(65,10,390,25);self.cwdBox.setReadOnly(True);self.cwdBox.setToolTip('The process current working directory. ')
  55.             self.readBox = QtGui.QLineEdit(self.advTab);self.readBox.setGeometry(120,45,120,25);self.readBox.setReadOnly(True);self.readBox.setToolTip("Amount of 'read' action called.")
  56.             self.breadBox = QtGui.QLineEdit(self.advTab);self.breadBox.setGeometry(340,45,120,25);self.breadBox.setReadOnly(True);self.breadBox.setToolTip("Amount of byte read.")
  57.             self.writeBox = QtGui.QLineEdit(self.advTab);self.writeBox.setGeometry(120,85,120,25);self.writeBox.setReadOnly(True);self.writeBox.setToolTip("Amount of 'write' action called.")
  58.             self.bwriteBox = QtGui.QLineEdit(self.advTab);self.bwriteBox.setGeometry(350,85,120,25);self.bwriteBox.setReadOnly(True);self.bwriteBox.setToolTip("Amount of byte wrote.")
  59.             self.threadNBox = QtGui.QLineEdit(self.advTab);self.threadNBox.setGeometry(150,125,120,25);self.threadNBox.setReadOnly(True);self.threadNBox.setToolTip("Number of threads of the process.")
  60.             #Advanced 2
  61.             label16 = QtGui.QLabel('Children',self.adv2Tab);label16.setGeometry(70,12,200,20);label17 = QtGui.QLabel('Files',self.adv2Tab);label17.setGeometry(340,12,200,20)
  62.             self.threadList = QtGui.QListWidget(self.adv2Tab);self.threadList.setGeometry(10,40,200,150);self.threadList.setSortingEnabled(True);
  63.             self.fileList = QtGui.QListWidget(self.adv2Tab);self.fileList.setGeometry(260,40,200,150);self.fileList.setSortingEnabled(True);
  64.             self.refreshBtn2 = QtGui.QPushButton('Refresh',self.adv2Tab);self.refreshBtn2.setGeometry(200,5,70,30);self.refreshBtn2.setToolTip('Refresh data...');self.refreshBtn2.clicked.connect(self.watchAction)
  65.             #Utility
  66.             self.stopBtn = QtGui.QPushButton('Stop watching',self.utilityTab);self.stopBtn.setGeometry(10,10,210,40);self.stopBtn.setToolTip('Stop watching this process');self.stopBtn.clicked.connect(self.watchAction)
  67.             self.killBtn = QtGui.QPushButton('Kill process',self.utilityTab);self.killBtn.setGeometry(260,10,210,40);self.killBtn.setToolTip('Close the process.');self.killBtn.clicked.connect(self.watchAction)
  68.             self.suspendBtn = QtGui.QPushButton('Suspend process',self.utilityTab);self.suspendBtn.setGeometry(10,60,210,40);self.suspendBtn.setToolTip('Pause the process.');self.suspendBtn.clicked.connect(self.watchAction)
  69.             self.resumeBtn = QtGui.QPushButton('Resume process',self.utilityTab);self.resumeBtn.setGeometry(260,60,210,40);self.resumeBtn.setToolTip('Resume the process.');self.resumeBtn.clicked.connect(self.watchAction)
  70.             self.popBtn = QtGui.QPushButton('Monitor',self.utilityTab);self.popBtn.setGeometry(10,110,460,80);self.popBtn.setToolTip('Restart the process as a subprocess.\nMonitorized process have more information available.');self.popBtn.clicked.connect(self.watchAction)
  71.             #Connections
  72.             self.connList = QtGui.QListWidget(self.netTab);self.connList.setGeometry(10,10,450,90);self.connList.itemPressed.connect(self.watchAction)
  73.             label18 = QtGui.QLabel('Family:',self.netTab);label18.setGeometry(10,112,200,20);label19= QtGui.QLabel('Type:',self.netTab);label19.setGeometry(10,152,200,20)
  74.             label20= QtGui.QLabel('Status:',self.netTab);label20.setGeometry(230,112,200,20);
  75.             self.sFamilyBox = QtGui.QLineEdit(self.netTab);self.sFamilyBox.setGeometry(80,112,120,25);self.sFamilyBox.setReadOnly(True);self.sFamilyBox.setToolTip("Family of the socket.(AF_INET or AF_INET6) ")
  76.             self.sTypeBox = QtGui.QLineEdit(self.netTab);self.sTypeBox.setGeometry(80,152,120,25);self.sTypeBox.setReadOnly(True);self.sTypeBox.setToolTip("Type of the socket.(SOCK_STREAM or SOCK_DGRAM) ")
  77.             self.sStatusBox = QtGui.QLineEdit(self.netTab);self.sStatusBox.setGeometry(310,112,120,25);self.sStatusBox.setReadOnly(True);self.sStatusBox.setToolTip("Status of the socket (UDP always return 'None')")
  78.             self.refreshBtn3 = QtGui.QPushButton('Refresh',self.netTab);self.refreshBtn3.setGeometry(230,152,210,40);self.refreshBtn3.setToolTip('Refresh conections...');self.refreshBtn3.clicked.connect(self.watchAction)
  79.            
  80.         self.watchMenu = QtGui.QWidget()
  81.         smallFont = QtGui.QFont('Arial',11,100)
  82.         self.watchMenu.setWindowTitle('Watching - ')
  83.         self.watchMenu.setFont(smallFont)
  84.         self.watchMenu.setWindowFlags(QtCore.Qt.CustomizeWindowHint|QtCore.Qt.WindowMinimizeButtonHint)
  85.         self.watchMenu.setFixedSize(500,250)
  86.         initWidgets(self.watchMenu)
  87.        
  88.     def mainActions(self,*argv):
  89.         sender = self.sender()
  90.         if sender == self.refreshBtn:
  91.             self.processList.clear()
  92.             self.WatchBtn.setEnabled(False)
  93.             for i in psutil.process_iter():
  94.                 if i.name != self.watchedProc:
  95.                     item = QtGui.QListWidgetItem(i.name)
  96.                     self.processList.addItem(item)
  97.                     item.pid = i.pid
  98.             if self.watchedProc != None:
  99.                 witem = QtGui.QListWidgetItem(self.watchedProc+'      <!Watching!>' );witem.setTextColor(QtGui.QColor(140,0,255,255))
  100.                 self.processList.addItem(witem)
  101.                 witem.pid = self.WatchedPid
  102.         elif sender == self.processList:
  103.             self.WatchBtn.setEnabled(True)
  104.         elif sender == self.WatchBtn:
  105.             if self.watchedProc == None:
  106.                 self.watchedProc = self.processList.item(self.processList.currentRow()).text()
  107.                 self.WatchedPid = self.processList.item(self.processList.currentRow()).pid
  108.                 itemz = self.processList.item(self.processList.currentRow())
  109.                 itemz.setTextColor(QtGui.QColor(140,0,255,255));itemz.setText(self.watchedProc + '      <!Watching!>')
  110.                 self.DumpBtn.setEnabled(True);self.watchMenu.setWindowTitle('Watching - '+self.watchedProc)
  111.                 reply = QtGui.QMessageBox.information(self, 'Info',"Start watching process...", QtGui.QMessageBox.Ok)
  112.                 self.watchMenu.show();self.watchTimer.start()
  113.             else:
  114.                 reply = QtGui.QMessageBox.question(self, 'Warning',"A process is currently watched\nDo you want to stop watching it?", QtGui.QMessageBox.Yes|QtGui.QMessageBox.No)
  115.                 if reply ==  QtGui.QMessageBox.Yes:
  116.                     self.watchedProc = self.processList.item(self.processList.currentRow()).text()
  117.                     self.WatchedPid = self.processList.item(self.processList.currentRow()).pid
  118.                     itemz = self.processList.item(self.processList.currentRow())
  119.                     self.DumpBtn.setEnabled(True);self.watchMenu.setWindowTitle('Watching - '+self.watchedProc)
  120.                     itemz.setTextColor(QtGui.QColor(140,0,255,255));itemz.setText(self.watchedProc + '      <!Watching!>')
  121.                     reply = QtGui.QMessageBox.information(self, 'Info',"Start watching process...", QtGui.QMessageBox.Ok)
  122.                     self.processList.clear();self.watchMenu.show();self.watchTimer.start()
  123.                     for i in psutil.process_iter():
  124.                         if i.name != self.watchedProc:
  125.                             item = QtGui.QListWidgetItem(i.name)
  126.                             self.processList.addItem(item)
  127.                             item.pid = i.pid
  128.                     if self.watchedProc != None:
  129.                         witem = QtGui.QListWidgetItem(self.watchedProc+'      <!Watching!>' );witem.setTextColor(QtGui.QColor(140,0,255,255))
  130.                         self.processList.addItem(witem)
  131.                         witem.pid = self.WatchedPid
  132.     def watchAction(self,*argv):
  133.         sender = self.sender()
  134.         if sender == self.watchTimer:
  135.             try:
  136.                 proc=psutil.Process(self.WatchedPid)
  137.                 if str(proc.pid) != self.pidBox.text():
  138.                     self.pidBox.setText(str(proc.pid))
  139.                     self.ppidBox.setText(str(proc.ppid))
  140.                    
  141.                     try:
  142.                         self.ownerBox.setText(proc.username)
  143.                     except:
  144.                         self.ownerBox.setText('Access Denied')      
  145.                     try:
  146.                         self.creationBox.setText(datetime.datetime.fromtimestamp(proc.create_time).strftime("%Y-%m-%d %H:%M"))
  147.                     except:
  148.                         self.creationBox.setText('Access Denied')
  149.                     try:
  150.                         self.parentBox.setText(str(psutil.Process(proc.ppid).name))
  151.                     except :
  152.                         self.parentBox.setText('None')
  153.                     try:
  154.                         self.pathBox.setText(proc.exe)
  155.                     except:
  156.                         self.pathBox.setText('Access Denied')
  157.                     try:
  158.                         self.cmdBox.setText(str(proc.cmdline))
  159.                     except:
  160.                         self.cmdBox.setText('Access Denied')
  161.                     try:
  162.                         self.cwdBox.setText(proc.getcwd())
  163.                     except:
  164.                         self.cwdBox.setText('Access Denied')
  165.                     try:
  166.                         self.threadNBox.setText(str(proc.get_num_threads()))
  167.                     except:
  168.                         self.threadNBox.setText('Access Denied')
  169.                 try:
  170.                     self.readBox.setText(str(proc.get_io_counters().read_count))
  171.                     self.breadBox.setText(str(proc.get_io_counters().read_bytes))
  172.                     self.writeBox.setText(str(proc.get_io_counters().write_count))
  173.                     self.bwriteBox.setText(str(proc.get_io_counters().write_bytes))
  174.                 except:
  175.                     self.readBox.setText('Access Denied')
  176.                     self.breadBox.setText('Access Denied')
  177.                     self.writeBox.setText('Access Denied')
  178.                     self.bwriteBox.setText('Access Denied')
  179.                
  180.                 self.statusBox.setText(str(proc.status))
  181.                 try:
  182.                     self.priorityBox.setText(str(proc.nice))
  183.                 except:
  184.                     self.priorityBox.setText('Access Denied')
  185.                
  186.             except:
  187.                 self.watchTimer.stop()
  188.                 self.watchMenu.hide()
  189.                 reply = QtGui.QMessageBox.critical(self, 'Error',"Process not found! Stopping watching.", QtGui.QMessageBox.Ok)
  190.         elif sender == self.refreshBtn2:
  191.             proc=psutil.Process(self.WatchedPid)
  192.             self.threadList.clear()
  193.             self.fileList.clear()
  194.             try:
  195.                 for i in proc.get_children():
  196.                     item = QtGui.QListWidgetItem(i.name+':'+str(i.pid))
  197.                     self.threadList.addItem(item)
  198.             except:
  199.                     self.threadList.addItem('Access Denied')
  200.             try:
  201.                 for i in proc.get_open_files():
  202.                     item = QtGui.QListWidgetItem(i.path)
  203.                     self.fileList.addItem(item)
  204.             except:
  205.                     self.fileList.addItem('Access Denied')
  206.         elif sender == self.stopBtn:
  207.             reply = QtGui.QMessageBox.information(self.watchMenu, 'Info',"Stopped watching {0}".format(self.watchedProc), QtGui.QMessageBox.Ok)
  208.             self.watchTimer.stop()
  209.             self.watchedProc = None
  210.             self.WatchedPid = None
  211.             self.watchMenu.hide()
  212.             self.processList.clear()
  213.             self.WatchBtn.setEnabled(False)
  214.             self.DumpBtn.setEnabled(False)
  215.             for i in psutil.process_iter():
  216.                 if i.name != self.watchedProc:
  217.                     item = QtGui.QListWidgetItem(i.name)
  218.                     self.processList.addItem(item)
  219.                     item.pid = i.pid
  220.         elif sender == self.killBtn:
  221.             reply = QtGui.QMessageBox.question(self.watchMenu, 'Info',"Do you want to stop this program?", QtGui.QMessageBox.Yes|QtGui.QMessageBox.No)
  222.             try:
  223.                 if reply == QtGui.QMessageBox.Yes:
  224.                     proc=psutil.Process(self.WatchedPid)
  225.                     self.watchTimer.stop()
  226.                     proc.kill()
  227.                     self.watchedProc = None
  228.                     self.WatchedPid = None
  229.                     self.watchMenu.hide()
  230.                     self.processList.clear()
  231.                     self.WatchBtn.setEnabled(False)
  232.                     self.DumpBtn.setEnabled(False)
  233.                     for i in psutil.process_iter():
  234.                         if i.name != self.watchedProc:
  235.                             item = QtGui.QListWidgetItem(i.name)
  236.                             self.processList.addItem(item)
  237.                             item.pid = i.pid
  238.             except:
  239.                 reply = QtGui.QMessageBox.critical(self.watchMenu, 'Error',"Could not kill process\nReason: Access Denied", QtGui.QMessageBox.Ok)
  240.         elif sender == self.suspendBtn:
  241.             reply = QtGui.QMessageBox.question(self.watchMenu, 'Info',"Do you want to suspend this program?", QtGui.QMessageBox.Yes|QtGui.QMessageBox.No)
  242.             if reply == QtGui.QMessageBox.Yes:
  243.                 try:
  244.                     proc=psutil.Process(self.WatchedPid)
  245.                     proc.suspend()
  246.                 except:
  247.                     reply = QtGui.QMessageBox.critical(self.watchMenu, 'Error',"Could not suspend process\nReason: Access Denied", QtGui.QMessageBox.Ok)
  248.         elif sender == self.resumeBtn:
  249.             reply = QtGui.QMessageBox.question(self.watchMenu, 'Info',"Do you want to resume this program?", QtGui.QMessageBox.Yes|QtGui.QMessageBox.No)
  250.             if reply == QtGui.QMessageBox.Yes:
  251.                 try:
  252.                     proc=psutil.Process(self.WatchedPid)
  253.                     proc.resume()
  254.                 except:
  255.                     reply = QtGui.QMessageBox.critical(self.watchMenu, 'Error',"Could not resume process\nReason: Not suspended", QtGui.QMessageBox.Ok)
  256.         elif sender == self.popBtn:
  257.             reply = QtGui.QMessageBox.question(self.watchMenu, 'Info',"Do you want to monitor this process?This will restart it.", QtGui.QMessageBox.Yes|QtGui.QMessageBox.No)
  258.             if reply == QtGui.QMessageBox.Yes:
  259.                 proc=psutil.Process(self.WatchedPid)
  260.                 try:
  261.                     dire = proc.exe
  262.                     proc.kill()
  263.                     proc = psutil.Popen(dire)
  264.                     self.watchedProc = proc.name
  265.                     self.WatchedPid = proc.pid
  266.                 except:
  267.                     reply = QtGui.QMessageBox.critical(self.watchMenu, 'Error',"Could not monitor process\nReason: Access Denied.", QtGui.QMessageBox.Ok)
  268.         elif sender == self.refreshBtn3:
  269.             try:
  270.                 proc=psutil.Process(self.WatchedPid)
  271.                 self.connList.clear()
  272.                 for i in proc.get_connections('inet'):
  273.                     item = QtGui.QListWidgetItem(i.local_address[0]+':'+str(i.local_address[1])+ ' to '+ i.remote_address[0]+':'+str(i.remote_address[1]))
  274.                     item.data = i
  275.                     self.connList.addItem(item)
  276.             except:
  277.                 self.connList.addItem('Access Denied')
  278.         elif sender == self.connList:
  279.             watchedConn = self.connList.item(self.connList.currentRow()).data
  280.             self.sFamilyBox.setText(str(watchedConn.family))
  281.             self.sStatusBox.setText(str(watchedConn.status))
  282.             self.sTypeBox.setText(str(watchedConn.type))
  283.     def dump(self):
  284.         dump = QtGui.QFileDialog.getSaveFileName(filter = '*.txt')
  285.         dump = open(dump,'w')
  286.         proc = psutil.Process(self.WatchedPid)
  287.         dump.write('======================INFO======================\n')
  288.         dump.write('Process ID: '+self.pidBox.text()+'\n')
  289.         dump.write('Parent Process ID: '+self.ppidBox.text()+'\n')
  290.         dump.write('Parent Process: '+self.parentBox.text()+'\n')
  291.         dump.write('Exe path: '+self.pathBox.text()+'\n')
  292.         dump.write('Start Command Line : '+self.cmdBox.text()+'\n')
  293.         dump.write('Owner : '+self.ownerBox.text()+'\n')
  294.         dump.write('Creation Date : '+self.creationBox.text()+'\n')
  295.         dump.write('Status : '+self.statusBox.text()+'\n')
  296.         dump.write('Process priority : '+self.priorityBox.text()+'\n')
  297.         dump.write('Current working directory : '+self.cwdBox.text()+'\n')
  298.         try:
  299.             for i in proc.get_children():
  300.                 dump.write('    '+str(i)+'\n')
  301.         except AssertionError:
  302.             dump.write('    Access Denied\n')
  303.         dump.write('======================IO======================\n')
  304.         dump.write('Read action : '+self.readBox.text()+'\n')
  305.         dump.write('Read byte : '+self.breadBox.text()+'\n')
  306.         dump.write('Write action : '+self.writeBox.text()+'\n')
  307.         dump.write('Byte wrote : '+self.bwriteBox.text()+'\n')
  308.         dump.write('Files handled : \n')
  309.         try:
  310.             for i in proc.get_open_files():
  311.                 dump.write('    '+str(i)+'\n')
  312.         except AttributeError:
  313.                 dump.write('    Access Denied\n')
  314.         dump.write('======================Connections======================\n')
  315.         dump.write('Connections : \n')
  316.         try:
  317.             for i in proc.get_connections('inet'):
  318.                 dump.write('    '+str(i)+'\n')
  319.         except ArithmeticError:
  320.                 dump.write('    Access Denied\n')
  321.         reply = QtGui.QMessageBox.information(self, 'Info',"Process dump created succesfully", QtGui.QMessageBox.Ok)
  322.     def closeEvent(self,event):
  323.         self.watchMenu.hide()
  324.        
  325. if __name__ == '__main__':
  326.     global app
  327.     appFont = QtGui.QFont('Arial',14,10)
  328.     app = QtGui.QApplication(sys.argv);app.setFont(appFont);
  329.     watcher = watcher()
  330.     sys.exit(app.exec_())
Add Comment
Please, Sign In to add comment