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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  API para que el programa detecte si esta abierto un proceso antes de continuar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: API para que el programa detecte si esta abierto un proceso antes de continuar  (Leído 9,303 veces)
Franqox

Desconectado Desconectado

Mensajes: 3


Ver Perfil
API para que el programa detecte si esta abierto un proceso antes de continuar
« en: 15 Diciembre 2010, 04:02 am »

 Hola, resulta que recien empiezo programando en VB, y toy diseñando un bot para un MMORPG.
Mi consulta es si existe una API para verificar si esta abierto el proceso del MMORPG antes de que empieze.
Gracias y espero que puedan contestarme:D
P.D:Perdónenme si me equivoque en algo es que recien empiezo.


En línea

ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #1 en: 15 Diciembre 2010, 07:51 am »

Yo programo en vb.net, pero creo que la solución te servirá. Hace poco he terminado una aplicación para que mi servidor opensim se vuelva a abrir si se cierra, he comprobado si está abierto o no así:
(la ruta de getprocessesbyname() puede cambiar en vb, esto es .net)

Citar
Dim procs As Process()
procs = System.Diagnostics.Process.GetProcessesByName( "programa.exe" )
        
If procs.Length > 0 Then
            [está abierto]
Else
            [está cerrado]
End If

El proceso es muy simple, creo una lista de objetos (procs) que contendrá  diagnósticos de todos los procesos llamados como indiques(programa.exe) y si ésta lista es mayor que 0 (en cantidad de objetos) se entiende que está actualmente abierto.

Tienes que tener en cuenta que el nombre del programa ha de estar escrito exáctamente como sale en el administrador de tareas, en la pestaña procesos, y sin toda la dirección [ej. OpenSim.exe, taskmgr.exe, explorer.exe ... ] Tiene la limitación de que no diferencia entre una instancia del programa o cualquier número, pero ésto para lo que tu quieres no será importante.
    


« Última modificación: 15 Diciembre 2010, 07:58 am por ABDERRAMAH » En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #2 en: 16 Diciembre 2010, 13:19 pm »

Esperar al final de la ejecucion de otro programa.

:¬¬
En línea

Franqox

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #3 en: 22 Diciembre 2010, 18:44 pm »

che me tira User-defined Type Not defined en la entrada de Dim proc As Process.
Donde tendria que modificar?

Private Sub Command1_Click()
Form2.Show
Dim procs As process
procs = System.Diagnostics.process.GetProcessesByName("ImperiumAO.exe")
If procs.Length > 0 Then
Else
End If
End Sub
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #4 en: 22 Diciembre 2010, 19:19 pm »

HOLA!!!

Para mi sos un re LAMMER pero estamos para ayudar...

Toma lee bien todo antes de preguntar, Google no muerde.

Esta todo funcional solamente pones el nombre del proceso, el codigo que queres que ejecute cuando esta cargado o descargado y listo.
Aclaro lo puse dentro de un boton por las dudas para que se te haga mas facil.

Código
  1. 'Constantes
  2. '-----------------------------------
  3. Const TH32CS_SNAPHEAPLIST = &H1
  4. Const TH32CS_SNAPPROCESS = &H2
  5. Const TH32CS_SNAPTHREAD = &H4
  6. Const TH32CS_SNAPMODULE = &H8
  7. Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or _
  8.                            TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
  9. Const TH32CS_INHERIT = &H80000000
  10. Const MAX_PATH As Integer = 260
  11.  
  12. 'Estructura para los procesos
  13. '-----------------------------------
  14. Private Type PROCESSENTRY32
  15.    dwSize As Long
  16.    cntUsage As Long
  17.    th32ProcessID As Long
  18.    th32DefaultHeapID As Long
  19.    th32ModuleID As Long
  20.    cntThreads As Long
  21.    th32ParentProcessID As Long
  22.    pcPriClassBase As Long
  23.    dwFlags As Long ' Flags
  24.    szExeFile As String * MAX_PATH ' nombre del ejecutable
  25. End Type
  26.  
  27. 'Funciones Api para listar los procesos
  28. '--------------------------------------------------------
  29. Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" ( _
  30.    ByVal lFlags As Long, _
  31.    ByVal lProcessID As Long) As Long
  32.  
  33. Private Declare Function Process32First Lib "Kernel32" ( _
  34.    ByVal hSnapShot As Long, _
  35.    uProcess As PROCESSENTRY32) As Long
  36.  
  37. Private Declare Function Process32Next Lib "Kernel32" ( _
  38.    ByVal hSnapShot As Long, _
  39.    uProcess As PROCESSENTRY32) As Long
  40.  
  41. Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
  42.  
  43. ' ESTO ES EL PROCEDIMIENTO DE UN BOTON (POR SI SABES LO QUE ES UN BOTON) LAMMER
  44. Private Sub Command1_Click()
  45.    Dim PROCESO As String
  46.    Dim hSnapShot As Long, uProcess As PROCESSENTRY32
  47.  
  48.    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
  49.    uProcess.dwSize = Len(uProcess)
  50.    R = Process32First(hSnapShot, uProcess)
  51.    'Recorre los procesos
  52.    PROCESO = "EXPLORER.EXE"    '<-----ACA EL NOMBRE DEL PROCESO
  53.    Do While R
  54.        R = Process32Next(hSnapShot, uProcess)
  55.        If Mid(UCase(uProcess.szExeFile), 1, Len(PROCESO)) = UCase(PROCESO) Then
  56.            'ESTA ABIERTO ------------------------------^
  57.        Else      '                                     ^
  58.            'ESTA CERRADO ------------------------------^
  59.        End If
  60.    Loop
  61.    Set elemento = Nothing
  62.    Call CloseHandle(hSnapShot)
  63. End Sub
  64. ' LLL        AAA    MMMM   MMMM  MMMM   MMMM  EEEEEE  RRRRR
  65. ' LLL       AA AA   MM MM MM MM  MM MM MM MM  EE      RR  RR
  66. ' LLL      AA   AA  MM  MMM  MM  MM  MMM  MM  EEEE    RRRRR
  67. ' LLL      AAAAAAA  MM   M   MM  MM   M   MM  EE      RR  RR
  68. ' LLLLLLL  AA   AA  MM       MM  MM       MM  EEEEEE  RR   RR
  69.  

P.D: Perdon por el tono, pero lo siento asi por lo de "ImperiumAO.exe".

GRACIAS POR LEER!!!
« Última modificación: 22 Diciembre 2010, 19:30 pm por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #5 en: 22 Diciembre 2010, 19:30 pm »

La respuesta de ABDERRAMAH es para .net :xD

79137913 no seas duro, si es lammer, no ayudes dandole todo en bandeja, dale de poco a poco :P

Código
  1. ' LLL        AAA    MMMM   MMMM  MMMM   MMMM  EEEEEE  RRRRR
  2. ' LLL       AA AA   MM MM MM MM  MM MM MM MM  EE      RR  RR
  3. ' LLL      AA   AA  MM  MMM  MM  MM  MMM  MM  EEEE    RRRRR
  4. ' LLL      AAAAAAA  MM   M   MM  MM   M   MM  EE      RR  RR
  5. ' LLLLLLL  AA   AA  MM       MM  MM       MM  EEEEEE  RR   RR
  6.  

Te tomaste tu tiempo para eso? :xD
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #6 en: 22 Diciembre 2010, 19:38 pm »

HOLA!!!

@raul338: JAJAJA, un ratito XD, es que cuanto antes le de la info antes se va.  :silbar:

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Franqox

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #7 en: 22 Diciembre 2010, 22:30 pm »

Weno loco yo aclare q soy newbie, vos tambien los aprendiste asi q no t agas el piola.
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #8 en: 23 Diciembre 2010, 01:35 am »

HOLA!!!

Si hay algo que no me gusta es discutir si no es cara a cara, no tiene sentido que exprese por que te califique de lammer.

Me disculpo si te ofendi, pero creo que fue mas lo que te ayude que lo que te ofendi.

Y si queres retiro lo dicho, pero para que deje de pensar que sos lammer voy a esperar a verte mas por el foro ;).

Muy buena SUERTE y felices fiestas a todos los que lean esto !!!


P.D: No hablo mas en este post si alguien lo revive mandeme un MP. Y, cualquier cosa Franco MP.


GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: API para que el programa detecte si esta abierto un proceso antes de continuar
« Respuesta #9 en: 23 Diciembre 2010, 20:54 pm »

.
Para solo esperar a que temine debes tener el pID de cualquier manera...

Código
  1. Const SYNCHRONIZE = &H100000
  2. Const INFINITE = -1&
  3.    process_handle = OpenProcess(SYNCHRONIZE, 0, pID)
  4.    If process_handle <> 0 Then
  5.        WaitForSingleObject process_handle, INFINITE
  6.    End If
  7.  

Ahora que si deseas saber algo sobre dicho proceso puede ser por el nombre, el pID(es el mas esacto), por la ruta de ejecucion, entre otras cosillas.

Process32First

Temibles Lunas!¡.
« Última modificación: 23 Diciembre 2010, 21:16 pm por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines