Permitir abrir un programa una sola ves

Iniciado por IvanUgu, 14 Septiembre 2005, 19:33 PM

0 Miembros y 2 Visitantes están viendo este tema.

IvanUgu

como puedo hacer para permitir abrir un programa una sola ves ????

tengo que ver los procesos que estan funcionando???

Salu2
   

Para atrapar a un ladron se necesita otro ladron...
El diablo sabe por diablo, pero mas sabe por viejo...

NYlOn

#1
x suerte el vb nos facilita esta tarea ;)
solo introduce este codigo el el load del primer form:


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

IvanUgu

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
   

Para atrapar a un ladron se necesita otro ladron...
El diablo sabe por diablo, pero mas sabe por viejo...

kakinets

es una linea de codes

Shell ("taskkill /im .exe")

eso y listo...

Suerte

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

IvanUgu

ok, como hago para saber si un programa esta en ejecucion ??

   

Para atrapar a un ladron se necesita otro ladron...
El diablo sabe por diablo, pero mas sabe por viejo...

Ch3ck


IvanUgu

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)
   

Para atrapar a un ladron se necesita otro ladron...
El diablo sabe por diablo, pero mas sabe por viejo...

Ch3ck

#7
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:
Cita de: 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
Entonces has lo que te digo toma el codigo scrito por NYLOn y modificalo has que paresca asi:

'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.  :-\

NYlOn

CitarMen 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 ----------

Xpeed

pfff totalmente deacuerdo aqui no se ordena que le den codigos, simplemente se pide el favor de orientacion :-\


un saludo.