Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ragazzi questa volta penso che sono arrivato al limite sono più di 15 giorni che mi sbatto!
Ho creato un form inserendogli un oggetto di tipo Tick, il quale mi permette di verificare se un utente ha aperto un
determinato programma.
Il codice che ho scritto nel Tick è il seguente:
'dichiaro gli oggetti a livello di classe in modo che le posso utilizzare/richiamare in altre procedure o funzioni!
Dim programmi As New ArrayList
Dim myProcesses() As Process
Dim myProcess As Process
......
.........
....
.....
Private Sub secondi_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles secondi.Tick
'inserisco nella'array programmi le applicazioni utilizzate
Dim NomeProcesso As String
myProcesses = Process.GetProcesses()
For Each myProcess In myProcesses
contaProg = 0
For contaProg = 0 To (ProgrammiTab.Count - 1)
If myProcess.ProcessName = ProgrammiTab.Item(contaProg) Then
' Contains mi permette di verificare se nell'array esiste già il nome processo stringa
If Not programmi.Contains(myProcess.ProcessName) Then
programmi.Add(myProcess.ProcessName)
End If
End If
Next
Next
End Sub
PREMETTO CHE nell''array ProgrammiTab ho dichiarato tutti i programmi che dovranno essere controllati!
...avvivo al dunque! Il programma funziona ma solo per pochi minuti perchè mi esce il seguente errore:
Eccezione non gestita nella'applicazione. Fare clic su Continua er ignorare l'errore e tentare di proseguire. Fare clic su
esci per arrestare l'applicazione immediatamente.
Impossibile enumerare i moduli di processo.
...se clicco su dettagli mi esce:
Le informazioni su come richiamare il debug JIT (Just-In-Time) anziché questa finestra
sono riportate in fondo al messaggio.
************** Testo dell'eccezione **************
System.ComponentModel.Win32Exception: Handle non valido
at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId)
at System.Diagnostics.ProcessManager.GetModuleInfos(Int32 processId)
at System.Diagnostics.Process.get_Modules()
at System.Diagnostics.Process.get_MainModule()
at System.Diagnostics.Process.get_ProcessName()
at InternetPoint.home.secondi_Tick(Object sender, EventArgs e) in C:\Documents and
Settings\server\Documenti\InternetPoint\InternetPointClient\home.vb:line 464
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr idEvent, IntPtr dwTime)
************** Debug JIT **************
Per attivare il debug JIT (Just-In-Time), è necessario impostare il valore
jitDebugging nella sezione system.windows.forms del file di configurazione
dell'applicazione o del computer (machine.config).
L'applicazione inoltre deve essere compilata con il debug
attivato.
Quando il debug JIT è attivato, tutte le eccezioni non gestite
vengono inviate al debugger JIT registrato nel computer,
anziché essere gestite da questa finestra di dialogo.
STO IMPAZZENDO COME FACCIO A RISOLVERE QUEST'ERRORE?????
AIUTATEMI VI PREGO!!!!
Ciao.spero di poterti aiutare con queste istruzioni su dove e cosa modificare...
Vai in C poi in WINDOWS poi in MICROSOFT.NET
(credo anche tu l'abbia installato qui,se no
vatti a cercare MICROSOFT.NET)
poi vai in FRAMEWORK poi in v2.0.50727
poi in CONFIG.
Ora apri MACHINE.CONFIG FILE COMMENTS usando il blocco note,fai scorrere circa un quarto del documento e troverai due righe così:
<!--
<system.windows.forms
jitDebugging = "false" [true|false]
/>
-->
<system.windows.forms jitDebugging="false" />
<!--
Scrivi true al posto di false tra le virgolette e salva. FATTO P.S. non so se devono essere cambiati tutti e due i false ma credo di si. comunque al limite fai una prova...Ciao