Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: IvanUgu en 14 Septiembre 2005, 19:33 pm



Título: Permitir abrir un programa una sola ves
Publicado por: IvanUgu en 14 Septiembre 2005, 19:33 pm
como puedo hacer para permitir abrir un programa una sola ves ????

tengo que ver los procesos que estan funcionando???

Salu2


Título: Re: Permitir abrir un programa una sola ves
Publicado por: NYlOn en 14 Septiembre 2005, 19:46 pm
x suerte el vb nos facilita esta tarea ;)
solo introduce este codigo el el load del primer form:

Código:
Private Sub Form_Load ()
If App.PrevInstance = True Then 'si el programa ya esta en ejecucion, entonces
MsgBox "El programa ya esta en ejecucion" 'mandas un mensaje para avisar al usuario (esto se puede obviar...)
End 'cierra el programa
End If

un abraz0

G0nz4


Título: Re: Permitir abrir un programa una sola ves
Publicado por: IvanUgu en 14 Septiembre 2005, 20:17 pm
mmm, como hago para que por ejemplo, yo tengo un programa ejecutado y quiero que si se ejecuta un programa llamado "programa.exe" que lo cierre


Título: Re: Permitir abrir un programa una sola ves
Publicado por: kakinets en 14 Septiembre 2005, 20:48 pm
es una linea de codes

Código:
Shell ("taskkill /im .exe")

eso y listo...

Suerte

PD:Don dise ".exe" Debes poner el nombre del programa ejemplo "programa.exe"


Título: Re: Permitir abrir un programa una sola ves
Publicado por: IvanUgu en 15 Septiembre 2005, 02:42 am
ok, como hago para saber si un programa esta en ejecucion ??



Título: Re: Permitir abrir un programa una sola ves
Publicado por: Ch3ck en 15 Septiembre 2005, 16:59 pm
Tal vez esto te guie un poco---- el codigo escrito por NYLOn
http://foro.elhacker.net/index.php/topic,82482.0.html


Título: Re: Permitir abrir un programa una sola ves
Publicado por: IvanUgu en 15 Septiembre 2005, 19:39 pm
Men aver si me ayudan de una ves, yo quiero saber cual es el codigo que:

Me diga si "proceso.exe" esta ejecutado o no (por ejemplo)


Título: Re: Permitir abrir un programa una sola ves
Publicado por: Ch3ck en 15 Septiembre 2005, 23:22 pm
Haber supongo que tienes un programa llamado vigilante.exe el cual vigila si hay un programa en ejecución verdad?, en este caso el programa seria proceso.exe tal como intentas decir aqui:
mmm, como hago para que por ejemplo, yo tengo un programa ejecutado y quiero que si se ejecuta un programa llamado "programa.exe" que lo cierre
Entonces has lo que te digo toma el codigo scrito por NYLOn y modificalo has que paresca asi:

Código:
'Escrito por NYLOn y brebemente modificado por mi.
'Le agregas un control timer llamado timer1 y en false
Private Sub cmdKill_Click()
If chkPreguntar.Value = 1 Then
If MsgBox("Esta seguro que desea terminar el proceso '" + Lvw.SelectedItem + "' ?", vbQuestion + vbYesNo) = vbYes Then
KillProcess (Lvw.SelectedItem)
cmdProcesos_Click
End If
Else
KillProcess (Lvw.SelectedItem)
cmdProcesos_Click
End If
End Sub

Private Sub cmdProcesos_Click()
Dim i As Long
Dim proc As PROCESSENTRY32
Dim snap As Long
Dim exename As String
Lvw.ListItems.Clear
snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
proc.dwSize = Len(proc)
theloop = ProcessFirst(snap, proc)
i = 0
While theloop <> 0
exename = proc.szExeFile
ret = Lvw.ListItems.Add(, "first" & CStr(i), exename)
Lvw.ListItems("first" & CStr(i)).SubItems(1) = proc.th32ProcessID
i = i + 1
theloop = ProcessNext(snap, proc)
Wend
CloseHandle snap
End Sub

Public Sub KillProcess(ByVal processName As String) 'Esto creo deve ir en el modulo. esto no lo modifique es solo lo del timer
On Error GoTo ErrHandler
Dim oWMI
Dim ret
Dim sService
Dim oWMIServices
Dim oWMIService
Dim oServices
Dim oService
Dim servicename
Set oWMI = GetObject("winmgmts:")
Set oServices = oWMI.InstancesOf("win32_process")
For Each oService In oServices

servicename = LCase(Trim(CStr(oService.Name) & ""))

If InStr(1, servicename, LCase(processName), vbTextCompare) > 0 Then
ret = oService.Terminate
End If

Next

Set oServices = Nothing
Set oWMI = Nothing


ErrHandler:
Err.Clear
End Sub

Private Sub Form_Load()
Dim header As ColumnHeader
Lvw.View = lvwReport
Lvw.ColumnHeaders.Clear
Set header = Lvw.ColumnHeaders.Add(, "first", "Process", 2000)
Set header = Lvw.ColumnHeaders.Add(, "second", "ID", 950)
Lvw.Refresh
Timer1.enabled = True 'Activa el timer
End Sub

Private Sub Form_Resize()
Lvw.Height = Me.Height - 500
Lvw.Width = Me.Width - 1575
cmdKill.Left = Lvw.Width + 100
cmdProcesos.Left = Lvw.Width + 100
End Sub

Private Sub Timer1_Timer ()
With Lvw 'Con el list
  For i = 0 to .ListCount ' o .count es que no recuerdo
If i = "Proceso.exe" then
Killprocess ("programa.exe")
Else
next i
End with
End sub

Has mas o menos lo anterior. ESTE CODIGO LE FALTA LO DEL MODULO COPIALO DE DONDE TE DIJE ANTERIORMENTE.
Es que no tengo el visual basic y no se si es exactamente asi.  :-\


Título: Re: Permitir abrir un programa una sola ves
Publicado por: NYlOn en 16 Septiembre 2005, 01:49 am
Citar
Men aver si me ayudan de una ves, yo quiero saber cual es el codigo que:

Me diga si "proceso.exe" esta ejecutado o no (por ejemplo)

flaco que te pasa ??
aka no estamos para que pidas cosas y los demas te las hagan.. el foro esta para que preguntes las dudas que tengas, no para que te hagan un programa...

y que es eso de " Men aver si me ayudan de una ves" ?? ?? ??
si buscas un poco en el foro pudieras haber echo tu programa sin crear este thread, ademas con toda la info que te postearon no hacen falta mas mensajes

y un "Gracias" no estaria de mas...


Salu2

G0nz4


PD: el post no es con animos de ofender, sino de que reflexiones y cambies un pokito tu actitud...



---------- FIN DEL COMUNICADO ----------


Título: Re: Permitir abrir un programa una sola ves
Publicado por: Xpeed en 17 Septiembre 2005, 23:40 pm
pfff totalmente deacuerdo aqui no se ordena que le den codigos, simplemente se pide el favor de orientacion :-\


un saludo.


Título: Re: Permitir abrir un programa una sola ves
Publicado por: Slasher-K en 18 Septiembre 2005, 00:24 am
Totalmente de acuerdo con NYlOn y Xpeed, el código ya está en el foro y para eso me molesto en actualizar la Recopilación de post...

Tema cerrado.