Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124

    Programma che resta sempre aperto

    Salve, ho un problema: ho messo in esecuzione automatica un programma e ogni tanto questo si chiude. Io sto cercando un modo affinchè quando il computer "vede" che il programma non è più in esecuzione, lo riapre. Non so da dove partire, se fare un programma in C++ che analizza la memoria ma non ne sono capace. Potreste aiutarmi?

  2. #2
    Non so se sai programmare con Visual Basic 6.0, in caso affermativo potresti creare un'applicazione che ti controlli l'esecuzione del file impostando un timer con intervallo basso: se il file non viene trovato vieni avvertito.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124
    no io non so programmare..mio fratello che ora è via sa fare qualcosa in c++ e c...forse anche visual basic non so...però mi ha detto che lui non sa perchè ci vuole un qualcosa che analizzi la RAM e veda quali processi sono attivi però non sa il codice...

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124
    magari se non ti dispiace potresti darmi il codice, non credo sia molto lungo...in fondo se tu sai programmare per te questa è una cosa elementare credo

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124
    per favore qualcuno mi può aiutare?

  6. #6
    INSERISCI QUESTO IN UN MODULO:
    Private Const TH32CS_SNAPPROCESS As Long = 2&
    Private Const MAX_PATH As Long = 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 Sub CloseHandle Lib "Kernel32.dll" (ByVal hPass As Long)
    Private Declare Function CreateToolhelpSnapshot Lib "Kernel32.dll" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
    Private Declare Function ProcessFirst Lib "Kernel32.dll" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
    Private Declare Function ProcessNext Lib "Kernel32.dll" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) 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

    INSERIRE IL CODICE IN UN FORM:
    Private Sub Form_Load()
    Timer1.Interval = 200
    End Sub
    Private Function HyperJump(ByVal URL As String) As Long
    HyperJump = ShellExecute(0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus)
    End Function
    Private Sub Form_Terminate()
    Timer1.Interval = 0
    End Sub

    Private Sub Timer1_Timer()
    If ProcessoAttivo(Trim(Text1.Text)) Then
    Label1.Caption = "L'Applicazione è in esecuzione"
    Else
    Label1.Caption = "L'Applicazione non è in esecuzione"
    End If
    End Sub
    Private Function ProcessoAttivo(NomeProcesso As String) As Boolean
    Dim hSnapShot As Long
    Dim uProcess As PROCESSENTRY32
    Dim continua As Long
    Dim Verifica As String
    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    If hSnapShot = 0 Then Exit Function
    uProcess.dwSize = Len(uProcess)
    continua = ProcessFirst(hSnapShot, uProcess)
    contaprocessi = 1
    ProcessoAttivo = False
    Do While continua
    continua = ProcessNext(hSnapShot, uProcess)
    Verifica = uProcess.szExeFile
    If Trim(Verifica) <> "" Then
    If InStr(1, Right(LCase(Left(Verifica, InStr(1, Verifica, Chr(0)) - 1)), Len(LCase(NomeProcesso))), LCase(NomeProcesso)) <> 0 Then ProcessoAttivo = True: Exit Function
    End If
    Loop
    Call CloseHandle(hSnapShot)
    End Function

    'inserisci nel form 1 textbox e 1 label. Nella textbox inserisci il file da controllare e la label ti darà la risposta.
    Questo però non è il codice perfetto di cosa mi hai chiesto te, ma è molto simile. Ora non ho tempo di fare ciò che mi hai chiesto ma sono sicuro che tuo fratello sia in grado di modificarlo, anche perchè è banale....se poi non ci riesce fatti risentire che lo scrivo apposta per le tue esigenze..ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124
    solo una cosa...dov'è che gli dico quale programma voglio monitorare?

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124
    cioè, per sapere come si chiama il processo basta che faccio il TaskManager e copio il nome del fie(per esempio IEXPLORE.EXE)?

  9. #9
    In questo caso specifico nel text1 del form, con l'indirizzo completo. Ti ripeto però che non è quello che hai chiesto, anche perchè dal momento che il file non è più in esecuzione ti cambia la caption della label.
    Cmq, riscrivendo il codice, potrei fare in modo che la form sia ridotta ad icona e si visualizzi solo quando il programma non è più in esecuzione..

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    124
    ok appena posso ci risentiamo ciao e grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.