Quote Originariamente inviata da GrandeTimoniere Visualizza il messaggio
Ti ringrazio! Mi sei stato di grande aiuto. Ma ho ancora un piccolo problema.
Anzitutto:

1) Ho creato un Form contenente un TextBox (che contiene il path del programma WordPad.EXE) e un Button. Il codice è banale e funziona perfettamente:

----------------------------------
Imports System
Imports System.Diagnostics
Imports System.ComponentModel


Public Class Form1
Public Aperto As Boolean
Public X As Process


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Programma As New Process()
If Aperto = True Then
X.Kill()
End If
Programma.StartInfo.UseShellExecute = False
Programma.StartInfo.FileName = TextBox1.Text
Programma.StartInfo.CreateNoWindow = False
Programma.Start()
X = Programma
Aperto = True
End Sub


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Aperto = False
End Sub


End Class

--------------------------
Grazie a If ... End If Ogni volta che premo Button1 viene chiusa la sessione (eventualmente già aperta) di WordPad e ne viene creata una nuova (poco male: avrei preferito aprire un file all'interno di quella già aperta, ma mi accontento...).

2) Il fatto è che se l'utente, dopo aver aperto WordPad premendo Button1, chiude la finestra di WordPad e poi preme Button1, il programma si interrompe perché, giustamente, non "vede" più il processo WordPad da "Killare".
Bisognerebbe inserire del codice come questo:

If finestra WordPad = aperta Then X.Kill Else Continua così.

Un suggerimento? Grazie in anticipo!
LA classe process ha la proprietà HasExited che dovrebbe fare al caso tuo