[SOLUCIONADO] Reiniciar Aplicación

Iniciado por e500, 6 Septiembre 2010, 16:17 PM

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

_katze_

se llega a descargar de memoria !! podrias decir que es un "reinicio"? alguien que conteste !

e500

#11
Cita de: Petro_Boca en  6 Septiembre 2010, 20:20 PM
Código (vb) [Seleccionar]


'Con esta instruccion cierras el formulario descargandolo de la memoria
Unload me
'Luego mandas llamar al mismo formulario con la instruccion
Nomform.show



No respondas tantas veces lo mismo, tu code no me sirve en lo absoluto. Reiniciar una App es lo que busco... mediante un commando button.

Saludos

e500

Cita de: _katze_ en  6 Septiembre 2010, 20:03 PM
espera una respuesta coherente !

gracias por la aclaracion.

saludos

_katze_

de nada man ! proba lo que te dije asi si llega a descargar de memoria ! y si guardas todo en un archivo ini la configuracion al abrilo mejor ! saludos man

Elemental Code

encontre el codigo de leandrito.

Código (vb) [Seleccionar]
Option Explicit
'Autor: Leandro Ascierto
'Web:   www.leandroascierto .com.ar
'Date:  28/12/2009
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function CreateWindowEx Lib "user32.dll" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, ByRef lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function SetProp Lib "user32.dll" Alias "SetPropA" (ByVal hwnd As Long, ByVal lpString As String, ByVal hData As Long) As Long
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Sub FatalExit Lib "kernel32" (ByVal code As Long)

Dim hWinStatic As Long
Dim AppPath As String
Dim LastError As Long

Private Function CallSomeFunction()
    'No borrar esta linea
End Function

Public Sub StarProtect()
    hWinStatic = CreateWindowEx(0, "Static", "WindowControlerCras h", 0, 0, 0, 0, 0, 0, 0, 0, 0&)
    AppPath = GetAppPath
    SetTimer hWinStatic, 0, 100, AddressOf TimerProc
End Sub

Public Sub EndProtect()
    KillTimer hWinStatic, 0
    DestroyWindow hWinStatic
End Sub

Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Dim Ret As String
   
    If Err.Number = 40040 Then
        ShellExecute hWinStatic, vbNullString, AppPath, LastError, vbNullString, 1
        FatalExit 1
    Else
        LastError = Err.Number
        Ret = CallSomeFunction
    End If
   
End Sub

Private Function GetAppPath() As String
    Dim ModuleName As String
    Dim Ret As Long
    ModuleName = String$(255, Chr$(0))
    Ret = GetModuleFileName(App.hInstance, ModuleName, 255)
    GetAppPath = Left$(ModuleName, Ret)
End Function


para probarlo armate un form con tres botones y codealo asi:

Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
    If Command$ <> "" Then Me.Caption = "Aplicación Reinciada por error: " & Command$
    StarProtect 'comienza la protección
End Sub

Private Sub Form_Unload(Cancel As Integer)
    EndProtect 'Detiene la protección
End Sub


Private Sub Command1_Click()
    MsgBox 1 / 0 'Error Divición por cero
End Sub

Private Sub Command2_Click()
    Dim i As Integer
    i = 8000000000000# 'Error Desvordamiento
End Sub

Private Sub Command3_Click()
    Dim c As Date
    c = "hola" 'Error no coinciden los tipos
End Sub


si queres que sea un boton, o modificas el codigo o metes la pata aproposito en el boton para que se reinicie :D

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

e500

Cita de: e500 en  6 Septiembre 2010, 16:30 PM
Cita de: ssccaann43 en  6 Septiembre 2010, 16:21 PM
Leandro Ascierto publico un modulo para ello...! Buscalo...!

Bueno, gracias  :) pero no anda su web, me podrias pasar el link.

Y otra cosa, necesito reiniciar mi aplicacion mediante un BOTON, no mediante un ERROR.

Saludos

Lo he visto al code @Elemental Code y no queria q por medio de un error tenga q reiniar la aplicación, sino por medio d eun boton, en modo manual pero desde la aplicacion.

Te agradezco la ayuda, y espero que puedan darme una mano.

Saludos

Dessa

Mirá si te sirve algo así, solo a modo de idea yá que depende de lo quieras hacer podrias usar CreateMutex o alguna Alternativa a CreateMutex.




Option Explicit

Private Sub Command1_Click()
  Shell App.Path & "\" & App.EXEName, vbNormalFocus
  End  ' o Unload Me
End Sub

Private Sub Form_Load()
 
  If App.LogMode = 0 Then
    MsgBox "Ejecutar compilado"
    End
  End If
 
  If App.PrevInstance Then
    Me.Caption = "Instancia Auuxiliar"
  Else
    Me.Caption = "Primera instancia"
  End If

End Sub





Saludos

Adrian Desanti

e500

Al fin!!!! @Dessa Graciass!!!!!!!!!!!!!!!!! eso es lo que quería voy a probar bien y te confirmo :)

Saludos

Dessa

Por nada ( tambien te lo había sugerido _katze_  )

Saludos


Adrian Desanti

_katze_

Cita de: Dessa en  7 Septiembre 2010, 01:19 AM
Mirá si te sirve algo así, solo a modo de idea yá que depende de lo quieras hacer podrias usar CreateMutex o alguna Alternativa a CreateMutex.




Option Explicit

Private Sub Command1_Click()
  Shell App.Path & "\" & App.EXEName, vbNormalFocus
  End  ' o Unload Me
End Sub

Private Sub Form_Load()
 
  If App.LogMode = 0 Then
    MsgBox "Ejecutar compilado"
    End
  End If
 
  If App.PrevInstance Then
    Me.Caption = "Instancia Auuxiliar"
  Else
    Me.Caption = "Primera instancia"
  End If

End Sub





Saludos




es exactamente lo que te recomende no lo hice al code porque estaba en clases y no puedo hacer mucho desde hay ! bn dessa es justo eso je