Oppure

Loading
15/10/10 14:04
cristian3095
ho creato un progetto banale in VB 2005 che praticamente conta i minuti in cui il pc è acceso.....siccome gioco ad un gioco online....quando c'è il processo del mio file aperto il gioco mi rallenta anche di molto...quindi volevo interrompere il timer che conta i minuti in modo da ridurre gli effetti.......ho provato con questo codice ma non va....il processo si chiama "Fiesta.bin"
Dim processo() As Process
        processo = Process.GetProcessesByName("Fiesta",My.Computer.Name)
        If processo.Length > 0 Then
             MsgBox("l'applicazione_verrà_interrotta",MsgBoxStyle.Information)
            End If

così facendo non funziona......non mi manda quel messaggio....come posso fare? :-|
Ultima modifica effettuata da cristian3095 15/10/10 14:06
aaa
15/10/10 18:36
pinotarallino
se vuoi farlo da codice non saprei ma se per te è importante solo terminare il programmino vai su gestione attività che sicuramente ci sarà sul tuo computer, tra le attività in corso fai tasto destro sul tuo programma e premi termina processo.
aaa
15/10/10 19:32
cristian3095
vorrei farlo fare automaticamente al programma se si può perchè ogni volta è una rottura :rofl:
aaa
15/10/10 20:03
noitide
se ti può interessare esiste questa funzione:

Environment.TickCount.ToString


che restituisce in millisecondi da quanto tempo è acceso il pc.. che forse è più comodo che eseguire un timer all'avvio e lasciarlo aperto consumando risorse :)
così facendo forse dovresti evitare di spegnere il programma quando accendi il gioco, anche se non è molto chiaro se alla chiusura del gioco vuoi riavviare il programmino o cosa. comunque il problema del codice che hai postato è chiaramente che l'applicazione non può sapere quando si apre il processo, quindi ti consiglierei di mettere un timer che esegue ogni 1 o 2 secondi le azioni che hai postato tu e se posso permettermi di darti un suggerimento usa questo codice che forse è più corretto e un po meno "brutale" :)
Dim listaprocessi() As Process
        listaprocessi = Process.GetProcesses
        For Each p As Process In listaprocessi
            If p.ProcessName = "nomeprocesso" Then  'il nome processo è senza l'estensione (quindi .bin nel tuo caso)
                MsgBox("l'applicazione verrà interrotta", MsgBoxStyle.Information)
                p.CloseMainWindow()
            End If
        Next


spero di essere stato d'aiuto e di non aver confuso le idee :rotfl:
aaa
15/10/10 21:23
cristian3095
:k: ok...questo funziona e innanzi tutto ti ringrazio...e se volessi sapere anche quando questo processo viene chiuso? :-|
aaa
16/10/10 13:09
noitide
intendi il tuo processo Fiesta.bin?? se si, per capire quando viene chiuso devi necessariamente lasciare aperta l'applicazione che hai creato, altrimenti non c'è alcun modo per saperlo.. per quanto mi risulta :)
aaa
16/10/10 13:58
netarrow
Ti suggerisco di non sviluppare questa funzionalità all'interno di una normale windows application, ma di fare piuttosto un windows service.

Un servizio è fatto apposta per fare da demone e girare ad un livello tale da ottimizzare le prestazioni di attività in avvio in background e gestire facilmente l'avvio, la sospensione e lo stop del servizio stesso.
aaa
16/10/10 17:33
cristian3095
allora se il processo "Fiesta.bin" è aperto non devo chiudere il programma ma semplicemente stoppare tutti i timer tranne uno che ogni 2 min controllerà se il processo è ancora aperto e fin qua ci sono....il problema è capire quando questo processo viene chiuso in quanto quando succede questo deve riattivare i timer come prima in modo da far funzionare il programma come prima.

Non ho voluto utilizzare la tua funzione che mi dice da quanto tempo è acceso il pc, perchè è troppo semplice e siccome non sono molto bravo in VB preferisco sperimentare qualcosa di nuovo anche perchè il prossimo anno sarò al triennio nel ramo Informatico :heehee:
aaa