Torna al Thread

Imports System.Runtime.InteropServices Public Class TuaForm <StructLayout(LayoutKind.Sequential)> _ Structure FileInformation 'ID del processo che tiene aperto il file Public ProcessID As Integer 'Handle del file aperto dal processo '(è riferito al contesto del processo, quindi non puoi farci praticamente niente con questo) Public FileHandle As IntPtr End Structure 'Importa la funzione dalla dll. Inserisci il percorso completo corretto della dll, 'oppure assicurati che la dll si trovi nella cartella dell'eseguibile <DllImport("WhoLocked.dll")> _ Shared Function GetPidLockingFile( _ <MarshalAs(UnmanagedType.LPWStr)> ByVal filePath As String, _ <[In](), Out()> ByVal outInfo As FileInformation(), _ ByVal maxCount As Integer) As Integer End Function Private Sub TuoButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TuoButton.Click 'Richiede il file da monitorare Dim OFD As New OpenFileDialog() If (OFD.ShowDialog() <> Windows.Forms.DialogResult.OK) Then Return 'Alloca l'array che conterrà gli ID dei processi che tengono aperto il file Dim fileInfo(50) As FileInformation 'Ottiene le informazioni dalla funzione nella Dll, e il numero di processi trovati Dim count As Integer = GetPidLockingFile(OFD.FileName, fileInfo, 50) 'Cicla su tutti i processi mostrando l'output in una RichTextBox For i As Integer = 0 To count - 1 'Scrive le informazioni sulla richtextbox TuaRichTextBox.AppendText(String.Format("Process ID: {0}" & vbCrLf & "Handle: 0x{1:X}" & vbCrLf & vbCrLf, _ fileInfo(i).ProcessID, CInt(fileInfo(i).FileHandle))) Next End Sub End Class
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5