Hallo,
is doch gar net so leicht wie ich gedacht habe XD
ja, ich weiß.
Eine noch verschwommene Idee, wie es gehen könnte habe ich im Kopf, die hat aber noch nicht die Gestalt eines Quellcodes. 
habs zwar jetzt n bissel runtergekürzt so wie ichs ca brauche.
Hab schon ne „such“ funktion eingebaut aber jetzt is des
problem geht das so überhaupt wie ich mit dass vorgestellt
habe.
Den komplizierten Code muss ich mir erst mal genauer ansehen, aber ich frage einfach mal etwas, mal sehen, ob wir den überhaupt brauchen.
Du arbeitest die ganze Zeit mit Handles und deshalb mit Fenstertiteln statt mit .exe Namen. Das funktioniert natürlich nur so lange, wie Du das auf Programme anwendest, bei denen zur Laufzeit der Titel nicht verändert wird. Wenn das OK ist, könnte es recht leicht werden.
Was tut Dein Code eigentlich? Gibt der einfach nur das Handle eines Fensters zurück, dessen Titel Du kennst? Dann geht das mit FindWindow einfacher.
Starte mal das Notepad und lass es leer, nicht sichern, Namen festlegen …
Dann kopierst Du den folgenden Code in ein leeres Projekt, keine Steuerelemente und startest das ‚Programm‘.
In der Titelzeile steht dann das Handle des Notepads.
Option Explicit
Private Declare Function FindWindow Lib "user32" \_
Alias "FindWindowA" (ByVal lpClassName As String, \_
ByVal lpWindowName As String) As Long
Private Sub Form\_Load()
Me.Caption = FindWindow(vbNullString, "Unbenannt - Editor")
End Sub
um einfach nur das Programm ‚Rechner‘ anzuhalten, genügt das hier:
Option Explicit
Private Declare Function FindWindow Lib "user32" \_
Alias "FindWindowA" (ByVal lpClassName As String, \_
ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" \_
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, \_
ByVal wParam As Integer, ByVal lParam As Any) As Long
Const WM\_Close = &H10
Private Sub Form\_Load()
Dim Handle As Long
Handle = FindWindow(vbNullString, "Rechner")
If Handle 0 Then
SendMessage Handle, WM\_Close, ByVal 0&, ByVal 0&
End If
End
End Sub
Hilft das?
Gruß, Rainer