VBS auf button springen

Guten abend,

ich würde gerne wissen wie ich per vbs auf einen bestimmten Button springen kann.
Ich spiele nämlich gerade ein bisschen mit vbs rum und versuche nun einen text auf dem Desktop zu speichern.

Nachdem ich den dateinamen festgelegt habe simuliere ich zweimal die Tab Taste um auf "Speichern" zu kommen, aber was ist wenn es bei jemand anderen nicht zweimal die Tab Taste ist? Dann lande ich sonstwo, und um dies zu vermeiden will ich halt direkt auf "Speichern" springen?

Geht das?

Ps. Mein Code:
Code:
set WshShell = CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1000
WshShell.AppActivate "notepad"
WScript.Sleep 500
WshShell.SendKeys "Hey"
WScript.Sleep 500
WshShell.SendKeys " "
WScript.Sleep 500
WshShell.SendKeys "Habo" 
WScript.Sleep 500
WshShell.SendKeys "%{F4}"
WScript.Sleep 500
WshShell.SendKeys "{Enter}"
WScript.Sleep 500
WshShell.SendKeys "{Home}"
WScript.Sleep 500
WshShell.SendKeys "{Del}"
WScript.Sleep 500
WshShell.SendKeys "Hey Jan" //Dateiname
WScript.Sleep 500
WshShell.SendKeys "{Tab}"
WScript.Sleep 500
WshShell.SendKeys "{Tab}"
WScript.Sleep 500
WshShell.SendKeys "{Enter}"
 
Du brauchst es dir nicht so umständlich zu machen und mit Tab hin und her springen. Du kannst über Shortcuts direkt auf die Menü-Elemente zugreifen und zumindest die Standard-Windows-Anwendungen akzeptieren als OK-Klick auch einen Tastendruck mit "Enter".
Zudem kannst du als Dateinamen auch absolute Pfade mitgeben, sodass du die Datei überall abspeichern kannst ohne mit SendKeys navigieren zu müssen:

Code:
set WshShell = CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1000
WshShell.AppActivate "notepad"
WScript.Sleep 100
WshShell.SendKeys "hallo"
WScript.Sleep 100
WshShell.Sendkeys "^s"                         ' simuliert STRG + S
WScript.Sleep 100
WshShell.Sendkeys "c:\windows\test.txt"        ' vollständiger Dateiname
WScript.Sleep 100
WshShell.Sendkeys "{ENTER}"                    ' Speichern mit ENTER
WScript.Sleep 100
WshShell.Sendkeys "%{F4}"                      ' Schließen der Anwendung mit ALT + F4
WScript.Sleep 100
Set WshShell = Nothing                         ' Objekt wieder freigeben
 
Zuletzt bearbeitet von einem Moderator:
Danke, klappt wunderbar! :)
Noch eine Frage, gibt es einen ausdruck für ALLE Benutzernamen?
Also das es egal ist ob der Benutzer Hans oder Peter heißt...versteht ihr was ich meine?
 
Ja, so etwas gibt es. Und nennt sich Umgebungsvariable. :)
In diesem Fall wäre es %USERNAME%. In dieser Variable speichert Windows den aktuell angemeldeten User. Du könntest ihn so bspw. ins Notepad schreiben:
Code:
sUser = WshShell.ExpandEnvironmentStrings("%USERNAME%")
WshShell.SendKeys sUser

Wenn du in der Kommandozeileneingabe (cmd.exe) set eingibst, siehst du alle verwendeten Umgebungsvariablen.
 
set WshShell = CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1000
WshShell.AppActivate "notepad"
WScript.Sleep 500
WshShell.SendKeys "Hey"
WScript.Sleep 500
WshShell.SendKeys " "
WScript.Sleep 500
WshShell.SendKeys "Habo"
WScript.Sleep 500
WshShell.SendKeys "^s"
WScript.Sleep 500
WshShell.SendKeys "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\Hey Habo.txt"
WScript.Sleep 500
WshShell.SendKeys "{Enter}"
WScript.Sleep 500
WshShell.SendKeys "%{F4}"

Mach ich was falsch? Da kommt nämlich ne Fehlermeldung...
 
Zuletzt bearbeitet:
Nur Windows kann etwas mit der Variablen %USERNAME% anfangen. Du musst also die Umgebungsvariable zuerst auslesen und in einer VB-Variablen zwischenspeichern. Diese Verkettest du dann mit deinem String.
Code:
set WshShell = CreateObject("WScript.Shell")
[b]sUser = WshShell.ExpandEnvironmentStrings("%USERNAME%")[/b]     ' Auslesen des Benutzernamens
WshShell.Run "notepad"
WScript.Sleep 1000
WshShell.AppActivate "notepad"
WScript.Sleep 500
WshShell.SendKeys "Hey"
WScript.Sleep 500
WshShell.SendKeys " "
WScript.Sleep 500
WshShell.SendKeys "Habo"
WScript.Sleep 500
WshShell.SendKeys "^s"
WScript.Sleep 500
WshShell.SendKeys "C:\Dokumente und Einstellungen\[b]" & sUser &  "[/b]\Desktop\Hey Habo.txt"
WScript.Sleep 500
WshShell.SendKeys "{Enter}"
WScript.Sleep 500
WshShell.SendKeys "%{F4}"
 
Zurück
Oben