Direktlink Google Bildersuche als Kontextmenü im Windows Explorer
Häufig suche ich bestimmte Bilder im Web mit besserer Auflösung oder einfach nur nach Herkunft oder Inhalt verschiedener Bilder. Meist bastle ich mir schöne Desktophintergründe für mein Dualscreen-System.
Bei der Suche muss ich immer erst die Google Bildersuche aufrufen, auf "Datei hochladen" gehen und dann das Bild auf dem PC auswählen.
Gibt es eine Möglichkeit, für den Windows Explorer ein Kontextmenü für Bilddateien zu konstruieren, welches dieses Vorgehen automatisiert?
So in etwa: "https://www.google.de/imghp" "Bild hochladen" %1.
Ich habe etwas von Google APIs gelesen, aber nichts zu Direktaufrufen der Bildersuche gefunden.
Schönen Sonntag noch.
Peter
Bei der Suche muss ich immer erst die Google Bildersuche aufrufen, auf "Datei hochladen" gehen und dann das Bild auf dem PC auswählen.
Gibt es eine Möglichkeit, für den Windows Explorer ein Kontextmenü für Bilddateien zu konstruieren, welches dieses Vorgehen automatisiert?
So in etwa: "https://www.google.de/imghp" "Bild hochladen" %1.
Ich habe etwas von Google APIs gelesen, aber nichts zu Direktaufrufen der Bildersuche gefunden.
Schönen Sonntag noch.
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 371244
Url: https://administrator.de/forum/direktlink-google-bildersuche-als-kontextmenue-im-windows-explorer-371244.html
Ausgedruckt am: 15.04.2025 um 01:04 Uhr
36 Kommentare
Neuester Kommentar
Hallo Peter,
Hier ein Beispiellink mit ersetzem %1:
Dass statt der Url (http...bild.jpg) auf ähnlich einfache Weise eine lokale Datei (D:\...Bild.jpg) verwendet werden kann, möchte ich ausschließen.
Ich könnte mir als Lösung nur vorstellen, dass der lokale Pfad zum Bild an ein speziell geschriebenes Tool übergeben werden kann, dass in Browsermanier den Dateiinhalt ausliest und an Google sendet. Wobei dann zuvor geklärt werden müsste wohin der Datenstrom geschickt werden müsste.
Ein anderer Ansatz könnte ein Makro sein.
Eventuell kann man was mit Autohotkey basteln, dass man ins Kontextmenü aufnimmt.
Das Folgende gälte es dabei zu automatisieren:
1. start https://www.google.de/imghp
2. zum Kamera-Symbol springen und [Enter] oder auf Kamera-Symbol klicken
3. [Shift]+[Tab] damit "Bild hochladen" den Fokus erhält, dann [Enter]
4. [Tab] damit "Durchsuchen..." den Fokus erhält, dann [Enter]
5. lokalen Pfad (aus %1) ins Eingabefeld "Dateiname:" einfügen und [Enter]
Fertig
Schwierigkeiten sehe ich hier nur bei 2., also wie man per Tastatur zum Kamera-Symbol navigieren kann, habe ich nicht ermitteln können und per automatisiertem Klick, müsste man dessen Position kennen.
Wenn man den Browser maximiert und seine Bildschirmauflösung kennt, wäre die Position als x/y-Koordinaten zu ermitteln und wiederholbar verwendbar.
Schöner wäre es aber über eine Tastaturnavigation.
Gruß Frank
Zitat von @PeterleB:
Gibt es eine Möglichkeit, für den Windows Explorer ein Kontextmenü für Bilddateien zu konstruieren, welches dieses Vorgehen automatisiert?
So in etwa: "https://www.google.de/imghp" "Bild hochladen" %1.
Ein Bild, dass schon in Web ist, also eine URL hat, könntest Du so suchen lassen:Gibt es eine Möglichkeit, für den Windows Explorer ein Kontextmenü für Bilddateien zu konstruieren, welches dieses Vorgehen automatisiert?
So in etwa: "https://www.google.de/imghp" "Bild hochladen" %1.
start https://www.google.de/searchbyimage?image_url=%1&image_content=&filename=&hl=de
https://www.google.de/searchbyimage?image_url=https://administrator.de/icons/members/profile_man_128x128.png&image_content=&filename=&hl=de
Ich könnte mir als Lösung nur vorstellen, dass der lokale Pfad zum Bild an ein speziell geschriebenes Tool übergeben werden kann, dass in Browsermanier den Dateiinhalt ausliest und an Google sendet. Wobei dann zuvor geklärt werden müsste wohin der Datenstrom geschickt werden müsste.
Ein anderer Ansatz könnte ein Makro sein.
Eventuell kann man was mit Autohotkey basteln, dass man ins Kontextmenü aufnimmt.
Das Folgende gälte es dabei zu automatisieren:
1. start https://www.google.de/imghp
2. zum Kamera-Symbol springen und [Enter] oder auf Kamera-Symbol klicken
3. [Shift]+[Tab] damit "Bild hochladen" den Fokus erhält, dann [Enter]
4. [Tab] damit "Durchsuchen..." den Fokus erhält, dann [Enter]
5. lokalen Pfad (aus %1) ins Eingabefeld "Dateiname:" einfügen und [Enter]
Fertig
Schwierigkeiten sehe ich hier nur bei 2., also wie man per Tastatur zum Kamera-Symbol navigieren kann, habe ich nicht ermitteln können und per automatisiertem Klick, müsste man dessen Position kennen.
Wenn man den Browser maximiert und seine Bildschirmauflösung kennt, wäre die Position als x/y-Koordinaten zu ermitteln und wiederholbar verwendbar.
Schöner wäre es aber über eine Tastaturnavigation.
Zitat von @PeterleB:
Ich habe etwas von Google APIs gelesen, aber nichts zu Direktaufrufen der Bildersuche gefunden.
Hast Du den Link dazu?Ich habe etwas von Google APIs gelesen, aber nichts zu Direktaufrufen der Bildersuche gefunden.
Gruß Frank
Hallo selbst,
[Shift]+[Tab] springt vom Eingabefeld auf das Kamera-Symbol
Gruß an mich
Zitat von @Pedant:
Schwierigkeiten sehe ich hier nur bei 2., also wie man per Tastatur zum Kamera-Symbol navigieren kann, habe ich nicht ermitteln können
So schwer war's dann doch nicht:Schwierigkeiten sehe ich hier nur bei 2., also wie man per Tastatur zum Kamera-Symbol navigieren kann, habe ich nicht ermitteln können
[Shift]+[Tab] springt vom Eingabefeld auf das Kamera-Symbol
Gruß an mich
Servus Peter.
Nimmst du z.B. folgendes Powershell-Skript, das du dann folgendermaßen aufrufst
Das öffnet dann automatisch deinen Browser mit dem Ergebnis.
Oder wenn du Python magst, das geht auch wenn man das 'requests' Modul nachinstalliert:
(Zeigt dir in Beispiel nur die URL an).
Viel Spaß
Grüße Uwe
Zitat von @PeterleB:
Hier noch was:
https://developers.google.com/custom-search/json-api/v1/reference/cse/li ...
Ist es aber nicht. Es reicht hier das Bild via MultiPart-Form POST direkt eine spezielle Google URL zu schicken und die URL die per 302 Redirect zurück kommt im Browser aufzurufen. Das kannst du mit jeder Programmier und besseren Skriptsprache realisieren.Hier noch was:
https://developers.google.com/custom-search/json-api/v1/reference/cse/li ...
Nimmst du z.B. folgendes Powershell-Skript, das du dann folgendermaßen aufrufst
powershell -Executionpolicy Bypass -C "&'C:\Pfad\Script.ps1' 'D:\deinbild.jpg'"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
param(
[string]$file
)
function Get-GoogleImageSearchResult([string][ValidateScript({Test-Path $_})]$path){
$boundary = [datetime]::now.Ticks.ToString()
$p1 = @"
--$boundary
Content-Disposition: form-data; name="encoded_image"; filename="$([IO.Path]::GetFileName($path))"
Content-Type: image/$([System.IO.Path]::GetExtension($path).substring(1))
"@
$p2 = @"
--$boundary
Content-Disposition: form-data; name="image_content"
--$boundary--
"@
$bytes = [System.Text.Encoding]::ASCII.GetBytes($p1) + ([IO.File]::ReadAllBytes($path)) + [System.Text.Encoding]::ASCII.GetBytes($p2)
$request = [Net.HttpWebRequest] ([Net.HttpWebRequest]::Create('https://images.google.com/searchbyimage/upload'))
$request.Method = "POST"
$request.ContentType = "multipart/form-data; boundary=$boundary"
$request.ContentLength = $bytes.Length
$request.AllowAutoredirect = $false
$stream = $request.GetRequestStream()
$stream.Write($bytes, 0, $bytes.Length)
$stream.Close()
return [regex]::match((New-Object Io.StreamReader $request.GetResponse().GetResponseStream()).ReadToEnd(),'(?is)HREF="([^"]+)"').Groups[1].Value
}
$url = Get-GoogleImageSearchResult $file
if ($url){start $url}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
import sys
import requests
filePath = sys.argv[-1]
sUrl = 'https://www.google.com/searchbyimage/upload'
parts = {'encoded_image': (filePath, open(filePath, 'rb')), 'image_content': ''}
response = requests.post(sUrl, files=parts, allow_redirects=False)
url = response.headers['Location']
print(url)
Viel Spaß
Grüße Uwe
Hallo Peter,
Mir gefällt's und ich hab's testweise zum Laufen gebracht.
Autohotkey habe ich als zip runtergeladen, dann läuft's auch ohne Installation.
Ausgepackt hab ich's nach "C:\Program Files (x86)\Tools\AutoHotkey\"
Die geschriebene Makrodatei habe ich auch dort abgelegt, sie könnte aber auch woanders abgelegt werden.
Genannt habe ich die "Bildersuche.ahk".
Um Autohotkey etwas als Parameter (zusätzlich zum Skript) mitzugeben ist die Syntax so:
Im übergebenen Skript kann man auf den Parameter (Bla Bla) per
Bildersuche.ahk
Der Aufruf aus der Kommandozeile sähe dann so aus:
Um den Aufruf ins Kontextmenü zu bekommen ist eine Sache etwas merkwürdig:
Man muss es scheinbar nicht dem Dateityp unterschieben:
Das wird ignoriert und ist daher nutzlos,
sondern der Anwendung, mit der der Dateityp verknüpft ist.
Das ist zwar etwas unintuitiv, hat aber den Vorteil, dass es sich auf alle verknüpften Dateitypen auswirkt, aber auch den Nachteil, dass es nicht mehr funktioniert, wenn man dem Dateityp eine andere Anwendung zuordnet.
Man könnte es auch pauschal allen Dateitypen unterschieben
aber das wäre hier denkbar unelegant.
Wer will schon sein
Wenn Du "Mein-Bildbetrachter.exe" und falls nötig ein paar Pfade anpasst, kannst Du's gerne benutzen.
Gruß Frank
PS:
Mit der API beschäftige ich mich - zumindest heute - nicht, aber danke für den Link.
Mir gefällt's und ich hab's testweise zum Laufen gebracht.
Autohotkey habe ich als zip runtergeladen, dann läuft's auch ohne Installation.
Ausgepackt hab ich's nach "C:\Program Files (x86)\Tools\AutoHotkey\"
Die geschriebene Makrodatei habe ich auch dort abgelegt, sie könnte aber auch woanders abgelegt werden.
Genannt habe ich die "Bildersuche.ahk".
Um Autohotkey etwas als Parameter (zusätzlich zum Skript) mitzugeben ist die Syntax so:
AutoHotkeyU64.exe Skriptdatei.ahk "Bla Bla"
%1%
zugreifen.Bildersuche.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Run, https://www.google.de/imghp
WinWaitActive Google Bilder
Sleep 1000
Send +{Tab}
Sleep 100
Send {Enter}
Sleep 100
Send +{Tab}
Sleep 100
Send {Enter}
Sleep 100
Send {Tab}
Sleep 100
Send {Tab}
Sleep 100
Send {Enter}
Sleep 100
;Send, D:\Meine Bilder\Testbild.jpg
Send, %1%
Sleep 100
; Das letze Enter ist vorläufig noch auskommentiert,
; damit man in der Testphase noch lesen kann, was automatisch eingetragen wurde.
;Send {Enter}
Der Aufruf aus der Kommandozeile sähe dann so aus:
1
"C:\Program Files (x86)\Tools\AutoHotkey\AutoHotkeyU64.exe" "C:\Program Files (x86)\Tools\AutoHotkey\Bildersuche.ahk" "D:\Meine Bilder\Testbild.jpg"
Um den Aufruf ins Kontextmenü zu bekommen ist eine Sache etwas merkwürdig:
Man muss es scheinbar nicht dem Dateityp unterschieben:
1
2
2
[HKEY_CLASSES_ROOT\jpegfile\shell\Bildersuche\command]
@="\"C:\\Program Files (x86)\\Tools\\AutoHotkey\\AutoHotkeyU64.exe\" \"C:\\Program Files (x86)\\Tools\\AutoHotkey\\Bildersuche.ahk\" \"%1\""
sondern der Anwendung, mit der der Dateityp verknüpft ist.
1
2
2
[HKEY_CLASSES_ROOT\Applications\Mein-Bildbetrachter.exe\shell\Bildersuche\command]
@="\"C:\\Program Files (x86)\\Tools\\AutoHotkey\\AutoHotkeyU64.exe\" \"C:\\Program Files (x86)\\Tools\\AutoHotkey\\Bildersuche.ahk\" \"%1\""
Man könnte es auch pauschal allen Dateitypen unterschieben
1
2
2
[HKEY_CLASSES_ROOT\*\shell\Bildersuche\command]
@="\"C:\\Program Files (x86)\\Tools\\AutoHotkey\\AutoHotkeyU64.exe\" \"C:\\Program Files (x86)\\Tools\\AutoHotkey\\Bildersuche.ahk\" \"%1\""
Wer will schon sein
Sterererklärung.doc
in die Bildersuche hochladen.Wenn Du "Mein-Bildbetrachter.exe" und falls nötig ein paar Pfade anpasst, kannst Du's gerne benutzen.
Gruß Frank
PS:
Mit der API beschäftige ich mich - zumindest heute - nicht, aber danke für den Link.
Hallo Uwe,
Mein Makro schmier' ich mir dann in die Haare.
Gruß Frank
Zitat von @colinardo:
...funktioniert wie immer einwandfrei.powershell -Executionpolicy Bypass -C "&'C:\Pfad\Script.ps1' 'D:\deinbild.jpg'"
Mein Makro schmier' ich mir dann in die Haare.
Gruß Frank
Noch zur Info für all die, die das mit anderen Sprachen realisieren möchten. Es gibt hier eine fiese Falle/Bug welche mich beim Implementieren einige Zeit gekostet hat. Und zwar betrifft das den Content-Type- Header und das boundary Feld. Laut RFC darf dieses Feld durchaus mit Anführungszeichen (") umgeben sein.
Es gibt aber einige Implementierungen die eben diesen Fakt nicht richtig interpretieren. Microsoft hat es korrekt nach RFC implementiert, aber die Gegenseite bei Google kommt damit nicht klar, dort dürfen beim Request keine Anführungszeichen im Header-Feld übermittelt werden, ansonsten gibt Google eine falsche URL zurück!!
Wenn man also mit .NET und HttpClient oder Invoke-Webrequest arbeiten wollte geht das auf den ersten Versuch hin deshalb nicht, deswegen die Umsetzung über einen RAW HttpWebRequest.
Grüße Uwe
Content-Type: multipart/form-data; boundary="123456789"
Content-Type: multipart/form-data; boundary=123456789
Grüße Uwe
Zitat von @PeterleB:
Powershell.exe -Executionpolicy Bypass -C "&'C:\Scripts\GoogleImgSearch.ps1' %1"
wird das Kontextmenü angezeigt, die PowerShell startet und schließt sich, dann passiert nichts mehr.
Als Direktaufruf hat es so schön funktioniert.
Das %1 gehört in Hochkommata, da ansonsten Leerzeichen im Pfad zu einer Parametertrennung führen!Powershell.exe -Executionpolicy Bypass -C "&'C:\Scripts\GoogleImgSearch.ps1' %1"
wird das Kontextmenü angezeigt, die PowerShell startet und schließt sich, dann passiert nichts mehr.
Als Direktaufruf hat es so schön funktioniert.
1
Powershell.exe -Executionpolicy Bypass -C "&'C:\Scripts\GoogleImgSearch.ps1' '%1'"
Könnte man das PowerShell-Fenster ganz ausblenden und dafür eine MsgBox "Suche gestartet" anzeigen?
Kann man, entweder den Parameter -Windowstyle Hidden nutzen oder das Skript via VBS starten, oder via .NET Function ausblenden, du hast viele Möglichkeiten.(Vielleicht schaffe ich das sogar selbst.)
Oder einfach mal die Suche hier anwerfen, das hab ich hier schon bis zum Abwinken gepostet.Ich nehm dir jetzt mal nicht den Forscherdrang weg, du schaffst das! Ist ja Sonntag.
Habe noch einen anderen Key gefunden, der funktioniert:
HKEY_CLASSES_ROOT\SystemFileAssociations\image\Shell
Oder auch einfach Verknüpfung ins Sendto legen.HKEY_CLASSES_ROOT\SystemFileAssociations\image\Shell
p.s. Powershell-Grundlagen gehören hier nicht schon wieder hin, die sollten doch mittlerweile Standard sein. Merci!
Keine Ursache.
Hier nachzulesen
Formatierungen in den Beiträgen
Zitat von @PeterleB:
PS: Wie geht das mit der Code-Zeile?
Wenn ich hier links auf "Codeblock" drücke, sehe ich dann nur die HTML-Anweisung.
Das ist normal wenn du deinen Text bearbeitest, kopiere deinen Quelltext zwischen die Tags und wenn du auf Vorschau klickst siehst du wie es aussieht ...PS: Wie geht das mit der Code-Zeile?
Wenn ich hier links auf "Codeblock" drücke, sehe ich dann nur die HTML-Anweisung.
Hier nachzulesen
Formatierungen in den Beiträgen
Pillepalle, einfach dem Webrequest die Creds über ein Proxy Objekt übergeben
https://stackoverflow.com/questions/9603093/proxy-basic-authentication-i ...
https://stackoverflow.com/questions/9603093/proxy-basic-authentication-i ...
Hallo Peter,
Danke, der ist besser als die von mir aufgeführten.
Gruß Frank
Zitat von @PeterleB:
Habe noch einen anderen Key gefunden, der funktioniert:
HKEY_CLASSES_ROOT\SystemFileAssociations\image\Shell
Habe noch einen anderen Key gefunden, der funktioniert:
HKEY_CLASSES_ROOT\SystemFileAssociations\image\Shell
Danke, der ist besser als die von mir aufgeführten.
Gruß Frank
Jetzt muss noch das PowerShell-Fenster weg und eine Meldung, dass was passiert.
Hatte ich dir oben schon die passenden Hinweise dafür gegeben! Wenn du es ganz weg haben willst starte es über ein VBS Script, -WindowStyle Hidden lässt es zwar verschwinden es blitzt aber noch kurz auf. Alternativ kompilier es zu einer Exe.Lösung über VBS, erstelle dir folgendes VBS:
1
2
3
2
3
If MsgBox ("Datei '" & WScript.Arguments(0) & "' jetzt zu Google hochladen.", vbInformation Or vbYesNo) = vbYes Then
CreateObject("Wscript.Shell").Run("powershell -NoProfile -Executionpolicy Bypass -C ""&'C:\Pfad\script.ps1' '" & WScript.Arguments(0)& "'"""),0,False
End If
wscript //NOLOGO "C:\pfad\script.vbs" "%1"
if($proxyenabled.ProxyEnable = 1) {
Das funktioniert nicht!! Das Gleichheitszeichen ist ein Zuweisungsoperator und kein Vergleichsoperator. Zum Vergleichen nutzt du -eq!Grüße Uwe
Zitat von @PeterleB:
Lieber wäre mir eine MsgBox ohne Benutzereingabe, die sich bei Öffnen des Browserfensters selbst schließt.
Lieber wäre mir eine MsgBox ohne Benutzereingabe, die sich bei Öffnen des Browserfensters selbst schließt.
Auch noch Sonderwünsche
Powershell kann Windows-Forms oder WPF in allen Spielarten da kannst du machen was du willst:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
param(
[string]$file
)
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
function Get-GoogleImageSearchResult([string][ValidateScript({Test-Path $_})]$path){
$boundary = [datetime]::now.Ticks.ToString()
$p1 = @"
--$boundary
Content-Disposition: form-data; name="encoded_image"; filename="$([IO.Path]::GetFileName($path))"
Content-Type: image/$([System.IO.Path]::GetExtension($path).substring(1))
"@
$p2 = @"
--$boundary
Content-Disposition: form-data; name="image_content"
--$boundary--
"@
$bytes = [System.Text.Encoding]::ASCII.GetBytes($p1) + ([IO.File]::ReadAllBytes($path)) + [System.Text.Encoding]::ASCII.GetBytes($p2)
$request = [Net.HttpWebRequest] ([Net.HttpWebRequest]::Create('https://images.google.com/searchbyimage/upload'))
$request.Method = "POST"
$request.ContentType = "multipart/form-data; boundary=$boundary"
$request.ContentLength = $bytes.Length
$request.AllowAutoredirect = $false
$stream = $request.GetRequestStream()
$stream.Write($bytes, 0, $bytes.Length)
$stream.Close()
return [regex]::match((New-Object Io.StreamReader $request.GetResponse().GetResponseStream()).ReadToEnd(),'(?is)HREF="([^"]+)"').Groups[1].Value
}
function ShowForm(){
$form1 = New-Object System.Windows.Forms.Form
$lblStatus = New-Object System.Windows.Forms.Label
$form1.ClientSize = [System.Drawing.Size]::new(292,62)
$form1.ControlBox = $False
$form1.StartPosition = 1
$form1.FormBorderStyle = 5
$form1.Name = "form1"
$form1.Text = "Uploading ..."
$form1.add_Shown({
$form1.Update()
$url = Get-GoogleImageSearchResult $file
if ($url){
start $url
}
$form1.Close()
})
$lblStatus.Dock = 5
$lblStatus.Font = New-Object System.Drawing.Font("Arial",13,1,3,0)
$lblStatus.Location = [System.Drawing.Point]::new(0,0)
$lblStatus.Name = "lblStatus"
$lblStatus.Size = [System.Drawing.Size]::new(292,62)
$lblStatus.Visible = $true
$lblStatus.Text = "Uploading file, please wait."
$lblStatus.TextAlign = [System.Drawing.ContentAlignment]::MiddleCenter
$form1.Controls.Add($lblStatus)
$form1.ShowDialog() | out-null
}
ShowForm
Hallo Peter,
...dann siehst Du aber auch die schicke Sonderwunsch-MsgBox-ohne-Benutzereingabe nicht.
...falls doch, dann nutz colinardos vb-Skript.
Das if und die Rückfrage kannst Du ja weglassen, wenn Du beides nicht brauchst.
Es bliebe dann nur dieser Einzeiler übrig:
und für die Registy hieße es dann, wie colinardos schrieb:
Gruß Frank
...dann siehst Du aber auch die schicke Sonderwunsch-MsgBox-ohne-Benutzereingabe nicht.
...falls doch, dann nutz colinardos vb-Skript.
Das if und die Rückfrage kannst Du ja weglassen, wenn Du beides nicht brauchst.
Es bliebe dann nur dieser Einzeiler übrig:
CreateObject("Wscript.Shell").Run("powershell -NoProfile -Executionpolicy Bypass -C ""&'C:\Pfad\script.ps1'
wscript //NOLOGO "C:\pfad\script.vbs" "%1"
Gruß Frank
Das ist keine Msgbox im Powershell-Skript, das ist eine ausgewachsene Windows Form und diese wird vom WindowStyle Parameter nicht beeinflusst weil der nur die Sichtbarkeit der Konsole und nicht des ganzen Prozesses festlegt.
Im Gegensatz dazu macht das VBS den ganzen Powershell-Thread unsichtbar inkl. abhängig gestarteter Forms.
Also entweder Message im VBS zeigen oder im Powershell-Skript. Man kann aber auch per Win32 die Konsole verstecken, also das WindowStyle Hidden quasi mit eigenem Code im PS Script anstoßen aber das kannst du zu Genüge in diversen meiner Beiträge nachlesen falls es dich interessiert.
.
Siehe als bsp. Powershell Logon Script - Ausgabe anzeigen
So jetzt haben wird das ganze aber bis zum Abwinken abgehandelt, das sollte eigentlich reichen für weitere eigene Experimente.
p.s. Herzlichen Dank für deine Spende
.
Im Gegensatz dazu macht das VBS den ganzen Powershell-Thread unsichtbar inkl. abhängig gestarteter Forms.
Also entweder Message im VBS zeigen oder im Powershell-Skript. Man kann aber auch per Win32 die Konsole verstecken, also das WindowStyle Hidden quasi mit eigenem Code im PS Script anstoßen aber das kannst du zu Genüge in diversen meiner Beiträge nachlesen falls es dich interessiert.
Siehe als bsp. Powershell Logon Script - Ausgabe anzeigen
So jetzt haben wird das ganze aber bis zum Abwinken abgehandelt, das sollte eigentlich reichen für weitere eigene Experimente.
p.s. Herzlichen Dank für deine Spende