Kann man mit einem Vbscript Websites detecten?
Hallo, weiß jemand wie ich in ein Vbscript einen Befehl einbaue, der das Script so lange warten lässt, bis die Website/URL "www.example.com" in Firefox aufgerufen wird, und erst dann mit dem Script weitermacht?
Danke schonmal im vorraus :)
2 Antworten
Moderne Browser wie sind erstmal in sich abgeschlossenen Systeme, welche nicht ohne weiteres ihren inneren Status anderen Anwendungen bekanntgeben oder sich steuern lassen.
Ein Zugriff auf innere Funktionen war mit dem alten Internetexplorer durchaus möglich:
Inwieweit es möglich wäre eine unabhängig geöffnete Instanz zu "überwachen" habe ich noch nie probiert.
VBscript solltest Du definitivbegraben, da es einfach nicht mehr zeitgemäß ist und nur aus Kompatibilität im System ist. Wenn es um das Ansprechen Systemnaher Funktionen geht, bieten Powershell und C# mehr als es VBS je konnte.
Um von "Außen" zu detectieren ob (durch einen beliebigen Browser) eine Verbindung zu einer Internetadresse aufgebaut wird müss man mit systemnahen Funktionen unterhalb des Browsers arbeiten.
- https://docs.microsoft.com/de-de/dotnet/api/system.net.networkinformation?view=net-5.0
- https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.ipglobalproperties.getactivetcpconnections?view=net-5.0
soweit muss man jedoch garnich gehen. Die einfachste Form auf eine etablierte Internetverbindung zu prüfen, wäre periodisch mit netstat den Verbindugsstatus abzufragen und mit find auf die entsprechende IP zu filtern
Diese kleine Batch prüft ganz trivial ob irgendein Programm mit "Gutefrage.net" kommuniziert:
check_GFnet_Connect.cmd
@echo off
rem Endlosschleife...
for /l %%a in (0) do (
rem prüfe alle 5 sekunden ob Verbindung zu Gutefrage.net besteht.
netstat -n |find /i "hergestellt"|find "2001:780:12e::" &&(
echo Verbindung zu gutefrage.net besteht.
)
timeout 5 >nul
)
in Powershell ist Get-NetTCPConnection das Äquivalent zu netstat
ups...
Kommentar in die Antworten "gerutscht": https://www.gutefrage.net/frage/kann-man-mit-einem-vbscript-websites-detecten#answer-417402745
Ok, vielen Dank für die Auskunft, ich schaue mal was mir weiterhilft^^
Mit .AppActivate kann man versuchen ein Fenster in den Vordergrund zu holen. (Klappt mit dem neuen Fenstermanagement ab Win 10 nicht immer!)
In VBScript gibt es keine Möglichkeit festzustellen, welches Fenster gerade den Focus hat.
Mit Powershell oder C# etc. ist die Abfrage über PInvoke trivial:
Get_Focused_Window.ps1
'Bitte setze zum Testen den Focus auf ein anderes Fenster'
'warte 5 Sekunden'
sleep -s 5
#hier gehts los C#assembly für PInvoke erstellen
Add-Type @'
using System;
using System.Runtime.InteropServices;
public class U32 {
[DllImport("user32.dll")] public static extern int GetForegroundWindow();
[DllImport("user32.dll")] public static extern IntPtr GetWindowText(IntPtr hWnd, System.Text.StringBuilder text, int count);
}
'@
$stringbuilder = New-Object System.Text.StringBuilder 256 #Objekt, welches den Fensternamen übermittelt bekommt
$hWnd=[U32]::GetForegroundWindow() #Fensterhandle
if ([int][U32]::GetWindowText($hWnd, $stringbuilder, 256) -gt 0){ #lies Fenstertitel in den stringbuilder
'Das Fenster mit dem Title:"{0}" hat den Focus' -f $stringbuilder.ToString()
}
else {'Kein Fenster hat den Focus'}
pause
Danke, ich denke damit komme ich weiter :D
Ps: Kannst du mir eine gute (Kostenfreie) möglichkeit empfehlen, wie ich am besten Powershell oder C# von Grund auf lernen kann?
ich greife einfach mal so etwas aus den Googleergebnissen raus:
- https://www.linetwork.de/powershell-lernen/
- https://attilakrick.com/powershell/powershell-tutorial/
- https://blog.netwrix.de/2019/10/17/tutorial-zur-skripterstellung-mit-windows-powershell-fur-einsteiger/
Ein wichtiges Nachschlagewerk zu einzelnen Powershell Kommandos ist:
für den schnell Einstieg in C# empfehle ich gern :
das Tutorial verfügt über einen Onlinecompiler zum Experimentieren.
Für kleine C#-Programme brachst Du auch kein VisualStudio oder anderen aufdwändigen Kram. In jedem System mit .Net Framework (4.8 ist Standard in win10) befindet sich ein C#-Compiler (csc.exe).
Hier eine kleine Batch, welche als Droptarget für dateien mit C#-Code dient.
compile_c#.cmd
@echo off
chcp 65001 >nul
if "%~1"=="" (
echo C# Compiler-Batch.
echo:
echo Ziehe eine Datei mit C#-Source auf "%~nx0" ...
timeout 7
exit /b
)
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\*csc.exe"') do (
set "csc=%%v"
)
if "%csc%"=="" (
echo Kein C#-Compiler gefunden
echo Bitte installiere Microsoft-.NetFramework!
pause
exit /b
)
echo "%csc%" gefunden.
"%csc%" -nologo -platform:anycpu -out:"%~dpn1.exe" "%~f1" >compile.log && (
echo Hat geklappt...
echo .... %~dpn1.exe...
echo Ausgabe Deines Programms:
echo:
"%~dpn1.exe"
echo:
pause
) || (
echo Compilererror...
echo:
type compile.log
echo:
pause
)
Danke dir, da werde ich wohl in nächster Zeit was zu tun haben ^-^
Hallo Erzesel, ich habe nochmal eine Frage zu Vbscripts.
Gibt es eine möglichkeit, um zu detecten, wenn ich ein Programm/Prozess (evt. sichtbar im vordergrund) geöffnet habe? Also z.b. Firefox oder Minecraft?
Etwas schwer beschrieben, aber das soll es dann ungefähr tun:
Wenn [Minecraft] aktiv
Dann [Rest des Codes]
Sonst Stoppe Script (also wenn Minecraft nicht geöffnet)
Ps: Vbscripte finde ich halt interessant, daher wird das mit dem begraben vorerst nix😅.