WScript-Befehl - Ausführen-Minimiert? (MSAccess/VBA)
Bin ich mit einem quick PING gegen die vom Benutzer ausgewählte server-IP-Adresse, um zu bestätigen, es ist erreichbar.
Folgende code tut genau das, was ich brauche, außer ich möchte vermeiden, die schnellen Blitz von der Befehls-Shell-Fenster.
Was muss ich ändern, um zu minimieren, dass lästige CMD-Fenster?
SystemReachable (myIP)
If InStr(myStatus, "Reply") > 0 Then
' IP is Confirmed Reachable
Else
' IP is Not Reachable
End If
''''''''''''''''''''''
Function SystemReachable(ByVal strIP As String)
Dim oShell, oExec As Variant
Dim strText, strCmd As String
strText = ""
strCmd = "ping -n 1 -w 1000 " & strIP
Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec(strCmd)
Do While Not oExec.StdOut.AtEndOfStream
strText = oExec.StdOut.ReadLine()
If InStr(strText, "Reply") > 0 Then
myStatus = strText
Exit Do
Else
myStatus = ""
End If
Loop
End Function
- möglich, Duplikat der verstecken Wollen Eingabeaufforderungsfenster bei Verwendung von WshShell.Exec-Methode
- Sah, dass Methode, die aber keinen Luxus umleiten in eine Datei - mehrere Benutzer. Hoffte, halten Sie die stdout-Ansatz. Werde weiter suchen, thx
- Re: "nicht-Luxus-Umleitung in eine Datei - mehrere Benutzer" - das ist etwas, Das ausgeführt werden aus der Datenbank-front-end-und Sie sind stellt sicher, dass jeder Benutzer hat seine eigenen lokalen Kopie der front-end -, rechts...?
- Ja, Umdenken. Siehe unten, wird eine Datei erstellt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage vielleicht ein wenig alt, aber ich vermute, dass diese Antwort noch in der Lage sein zu helfen.
(Getestet mit Excel-VBA, nicht in der Lage gewesen, um zu testen mit Access)
Den WshShell.Exec-Methode ermöglicht die Verwendung von .StdIn, .StdOut und .StdErr Funktionen zum schreiben und Lesen von der consol-Fenster.
Die WshShell.Run-Methode nicht erlaubt diese Funktionalität für einige Zwecke, die Verwendung von Exec erforderlich ist.
Während es wahr ist, dass es keine eingebaute Funktion zum starten des Exec-Methode minimiert oder ausgeblendet werden, können Sie verwenden die API, um schnell die Exec-Fenster hwnd und minize/ausblenden.
Meine unten das Skript nimmt die ProcessID von dem Exec-Objekt zu finden, das Fenster Hwnd. Mit der Hwnd-Sie können dann das Fenster Status anzeigen.
Von meinen Tests mit Excel 2007 VBA in den meisten Fällen, die ich nie sehen sogar die Fenster... In einigen Fällen kann es sichtbar sein, für ein paar Millisekunden, aber würde nur erscheinen, eine schnelle flackern oder blinken... Anmerkung: ich hatte bessere Ergebnisse mit SW_MINIMIZE als ich mit SW_HIDE, aber Sie können spielen, um mit es.
Fügte ich die TestRoutine Sub zu zeigen, ein Beispiel, wie die "HideWindow" - Funktion.
Die "HideWindow" - Funktion verwendet die "GetHwndFromProcess' - Funktion, um das Fenster hwnd aus der ProcessID.
Ort, der unten in ein Modul...
ShowWindow-Funktion:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
GetWindow-Funktion:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633515%28v=vs.85%29.aspx
GetDesktopWindow Funktion:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633504%28v=vs.85%29.aspx
GetWindowThreadProcessId Funktion:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522%28v=vs.85%29.aspx
Wenn du mehr Informationen benötigst, wie die API ' s zu arbeiten, eine schnelle google-Suche werden Sie mit einer Tonne von Informationen.
Ich hoffe, dass dies helfen kann... Danke.
Fand eine sehr praktikable und silent Ansatz:
die run-Methode des wscript enthält bereits argumewnts zu laufen minimiert. So, ohne Mühe, dass alle oben gezeigt wird, verwenden Sie einfach
alten code
neuen code
finden Sie in der Microsoft-Hilfe für die Verwendung der run-Methode wscript.
hinsichtlich
Ytracks