elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Aporte en python(pone ontop algunos procesos)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aporte en python(pone ontop algunos procesos)  (Leído 3,651 veces)
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Aporte en python(pone ontop algunos procesos)
« en: 18 Junio 2016, 19:06 pm »

Hola:
         muchas veces cuando hago diseño o programación me apoyo en otros archivos o videos, el tema es que me gusta tener maximizada la aplicación principal que esté usando y me molesta tener que andar cambiando entre aplicaciones o usar alt tab, etc, así que pongo los visores o reproductores ontop, no todos traen esa función(notepad por ejemplo) y aunque la traigan hay que configurarla cada vez que quiero cambiar esa modalidad. Hay muchos programas de terceros,pero ¿cuál es el chiste?así que programé con python y pyqt5 un visor de procesos y la posibilidad de ponerlos ontop, es más que obvio que no se puede con todos los procesos, pero es simple y cumple su función.
Además usé otras bibliotecas y el uso de apis para que los más nuevos vean como puede hacerse.
Son dos códigos:1) El archivo .ui que es el entorno y 2)el archivo.pyw
código del ui:
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ui version="4.0">
  3. <class>frmprincipal</class>
  4. <widget class="QDialog" name="frmprincipal">
  5.  <property name="geometry">
  6.   <rect>
  7.    <x>0</x>
  8.    <y>0</y>
  9.    <width>447</width>
  10.    <height>307</height>
  11.   </rect>
  12.  </property>
  13.  <property name="windowTitle">
  14.   <string>Procesos</string>
  15.  </property>
  16.  <widget class="QPushButton" name="btntop">
  17.   <property name="geometry">
  18.    <rect>
  19.     <x>360</x>
  20.     <y>30</y>
  21.     <width>75</width>
  22.     <height>23</height>
  23.    </rect>
  24.   </property>
  25.   <property name="text">
  26.    <string>Arriba</string>
  27.   </property>
  28.  </widget>
  29.  <widget class="QPushButton" name="btnsalir">
  30.   <property name="geometry">
  31.    <rect>
  32.     <x>360</x>
  33.     <y>280</y>
  34.     <width>75</width>
  35.     <height>23</height>
  36.    </rect>
  37.   </property>
  38.   <property name="text">
  39.    <string>Salir</string>
  40.   </property>
  41.  </widget>
  42.  <widget class="QLabel" name="lblnombre">
  43.   <property name="geometry">
  44.    <rect>
  45.     <x>20</x>
  46.     <y>10</y>
  47.     <width>161</width>
  48.     <height>16</height>
  49.    </rect>
  50.   </property>
  51.   <property name="font">
  52.    <font>
  53.     <pointsize>10</pointsize>
  54.    </font>
  55.   </property>
  56.   <property name="text">
  57.    <string>Nombre del proceso</string>
  58.   </property>
  59.  </widget>
  60.  <widget class="QListWidget" name="lstprocesos">
  61.   <property name="geometry">
  62.    <rect>
  63.     <x>10</x>
  64.     <y>30</y>
  65.     <width>341</width>
  66.     <height>271</height>
  67.    </rect>
  68.   </property>
  69.  </widget>
  70.  <widget class="QPushButton" name="btnactualizar">
  71.   <property name="geometry">
  72.    <rect>
  73.     <x>360</x>
  74.     <y>60</y>
  75.     <width>75</width>
  76.     <height>23</height>
  77.    </rect>
  78.   </property>
  79.   <property name="text">
  80.    <string>Actualizar</string>
  81.   </property>
  82.  </widget>
  83. </widget>
  84. <resources/>
  85. <connections/>
  86. </ui>
  87.  

código del pyw:

Código
  1. #-*- coding:utf-8 -*-
  2. import sys
  3. from PyQt5.QtWidgets import QApplication,QDialog,QMessageBox
  4. from PyQt5 import uic
  5. import psutil
  6. from ctypes import c_void_p, windll
  7. import win32gui
  8.  
  9. SWP_NOMOVE = 2        
  10. SWP_NOSIZE = 1        
  11. VEN_TOP    = -1        
  12. VEN_NOTOP  = -2    
  13.  
  14.  
  15. class Form(QDialog):
  16.    def __init__(self):
  17.        QDialog.__init__(self)
  18.        uic.loadUi("principal.ui",self)
  19.        self.btnactualizar.clicked.connect(self.TomarProcesos)
  20.        self.btntop.clicked.connect(self.PonerTop)
  21.        self.btnsalir.clicked.connect(self.Terminar)
  22.  
  23.    def Actualizar(self):
  24.        for proc in psutil.process_iter():
  25.            try:
  26.                procesos=proc.as_dict(attrs=['name'])
  27.            except psutil.NoSuchProcess:
  28.                pass
  29.            else:
  30.                nombre= procesos["name"]
  31.                self.lstprocesos.addItem(nombre)          
  32.  
  33.    def TomarProcesos(self):
  34.        uno= self.lstprocesos.count()
  35.        if uno !=0 :
  36.            self.lstprocesos.clear()
  37.            self.Actualizar()            
  38.        else:
  39.            self.Actualizar()
  40.  
  41.    def PonerTop(self):        
  42.        item=self.lstprocesos.selectedItems()
  43.        seleccionado=[]
  44.        for x in range(len(item)):
  45.            seleccionado.append(self.lstprocesos.selectedItems()[x].text())
  46.  
  47.        proceso=''.join(seleccionado)
  48.        proceso=proceso[:-4]
  49.        ventana= win32gui.FindWindow(proceso,None)
  50.        if ventana != 0:
  51.            win32gui.SetForegroundWindow(ventana)
  52.            windll.user32.SetWindowPos(ventana, VEN_TOP, 0, 0, 0, 0,SWP_NOMOVE | SWP_NOSIZE)
  53.  
  54.  
  55.    def closeEvent(self,event):
  56.        respuesta=QMessageBox.question(self,"Terminar","¿Desea Salir?",QMessageBox.Yes|QMessageBox.No)
  57.        if respuesta == QMessageBox.Yes: event.accept()
  58.        else: event.ignore()    
  59.  
  60.    def Terminar(self):
  61.        respuesta=QMessageBox.question(self,"Terminar","¿Desea Salir?",QMessageBox.Yes|QMessageBox.No)
  62.        if respuesta == QMessageBox.Yes: exit()
  63.  
  64.  
  65. aplicacion=QApplication(sys.argv)
  66. ventana=Form()
  67. ventana.show()
  68. aplicacion.exec_()
  69.  
  70.  
Saludos  


Edito: Asunto modificado.


« Última modificación: 19 Junio 2016, 03:25 am por tincopasan » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Aporte en python
« Respuesta #1 en: 19 Junio 2016, 00:00 am »

si es aporte lo mas apropiado es que el título fuera sobre lo que va (reglas del foro, los títulos deben ser descriptivos al tema )


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Las barras que teneis algunos, que pone usuario en ....
Diseño Gráfico
Za3LoT 6 2,904 Último mensaje 28 Octubre 2005, 15:43 pm
por Za3LoT
Duda sobre algunos procesos
Seguridad
Fierce 5 3,299 Último mensaje 19 Julio 2011, 21:20 pm
por .:UND3R:.
[Aporte by 4ng3r] Ver Procesos de Windows « 1 2 »
Java
AFelipeTrujillo 14 11,796 Último mensaje 25 Febrero 2010, 21:37 pm
por Debci
[Aporte] Métodos String (Algunos)
Java
Senior++ 3 2,878 Último mensaje 14 Julio 2012, 13:26 pm
por Senior++
[Aporte VBS] Algunos Codigos Simples
Scripting
MeCraniDOS 0 2,260 Último mensaje 22 Junio 2013, 15:14 pm
por MeCraniDOS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines