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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Abrir solo dos instancias de mi programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Abrir solo dos instancias de mi programa  (Leído 3,988 veces)
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Abrir solo dos instancias de mi programa
« Respuesta #10 en: 27 Marzo 2006, 20:37 pm »

te paso el code, fijate que para que funcione primero tenes que generar el exe

Código:
Option Explicit
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)

Private Sub Form_Load()
Comprovar
End Sub

Sub Comprovar()
Dim hSnapShot As Long, uProcess As PROCESSENTRY32, r As Long, Contador As Integer
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
uProcess.dwSize = Len(uProcess)
r = Process32First(hSnapShot, uProcess)
Dim Proceso As String
Do While r
Proceso = Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))
If UCase(App.EXEName & ".exe") = UCase(Proceso) Then
Contador = Contador + 1
If Contador > 2 Then End
End If
r = Process32Next(hSnapShot, uProcess)
Loop
CloseHandle hSnapShot
End Sub


En línea

Ironhorse

Desconectado Desconectado

Mensajes: 150



Ver Perfil
Re: Abrir solo dos instancias de mi programa
« Respuesta #11 en: 28 Marzo 2006, 00:29 am »

Otra opcion es pasarle como parametro al ejecutable la cantidad de instancias que se van llamando:

Código:
Private Instancias As Long

Private Sub Form_Load()
  Instancias = Val(Command)
  Instancias = Instancias + 1
  If Instancias < 2 Then
   Shell (App.Path & "\" & App.EXEName & " " & Instancias)
  End If
End Sub


Saludos


En línea

Pégense una vuelta por Cracton :)
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Instancias múltiples de un programa.
Windows
Psyke1 4 3,701 Último mensaje 18 Enero 2013, 09:35 am
por x64core
Incrustar Programa y sus instancias en un form.
.NET (C#, VB.NET, ASP)
Charlie BoT 2 3,319 Último mensaje 18 Enero 2017, 21:40 pm
por Eleкtro
Duda con instancias en Java
Programación General
alf4139 2 2,843 Último mensaje 3 Marzo 2018, 00:17 am
por alf4139
Abrir volumen Truecrypt sólo con la MasterKey
Criptografía
banderas20 2 2,716 Último mensaje 5 Julio 2019, 17:21 pm
por banderas20
BATCH (Abrir x Programa solo si hay otro programa abierto)
Scripting
alquimista3000 2 3,233 Último mensaje 16 Abril 2023, 22:32 pm
por alquimista3000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines