Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS GoTo funktioniert nicht

Frage Entwicklung Batch & Shell

Mitglied: Motorcross

Motorcross (Level 1) - Jetzt verbinden

22.04.2010 um 16:58 Uhr, 6559 Aufrufe, 10 Kommentare

Hallo Administratoren,

ich programmiere gerade einen VBS Script, der ein Fenster in den Fordergrund stellt und dann eine Tastatureingabe simuliert.
Dies möchte ich in einer Schleife haben das sieht so aus:
01.
set WshShell = CreateObject("WScript.Shell") 
02.
anfang: 
03.
WScript.Sleep 180000 
04.
WshShell.AppActivate "ProfiLab" 
05.
WshShell.SendKeys "{ENTER}" 
06.
GoTo anfang
Ich weiß aber nicht wo der Fehler liegt.
Der Error befindet sich in der 6. Zeile, 1. Zeichen
Hätte jemand eine Idee?
Gruß Motorcross
Mitglied: Snowman25
22.04.2010 um 17:10 Uhr
es gibt kein Goto in VBS, allerdings könntest du es so lösen:


01.
set WshShell = CreateObject("WScript.Shell") 
02.
Do While TRUE 
03.
	WScript.Sleep 180000 
04.
	WshShell.AppActivate "ProfiLab" 
05.
	WshShell.SendKeys "{ENTER}" 
06.
loop
Bitte warten ..
Mitglied: ChrFriedel
22.04.2010 um 17:52 Uhr
Hiho,

also diese Lösung finde ich nicht so gelungen da Sie eine Endlosschleife erzeugt die man nur mittels Taskmanager killen kann...
Wie wärs mit so einer Lösung?

01.
 
02.
set WshShell = WScript.CreateObject("WScript.Shell") 
03.
 
04.
windowName = "Server ist ausgelastet"          'Hier muss der Titel des Fenster eingetragen werden an den der Tastendruck gesendet werden soll. Titel! also Titelleiste :) 
05.
choice = MsgBox ("Mit OK starten") 
06.
 
07.
answer  = 0 
08.
counter = 0 
09.
while answer <> 6	 
10.
	result = false 
11.
	result = WshShell.AppActivate (windowName)   'Hier wird versucht ein Fenster mit diesem Namen zu finden und zu fokussieren 
12.
 
13.
	if result = true then  
14.
                'Send "{TAB}"  eventuell benötigt um bei einem aufgehenden Fenster die Standardantwort durchzuschalten. bspw von No auf YES 
15.
		Send "{ENTER}" 
16.
		counter = counter + 1 
17.
	end if 
18.
 
19.
	answer = WshShell.Popup("Sendkey beenden?" & vbcrlf & vbcrlf & "Bisherige Treffer: " & counter,3, "Frage", 4 + 32) 
20.
	WScript.Sleep 1000 
21.
wend 
22.
 
23.
msgbox "Sendkey beendet" 
24.
 
25.
sub Send (sendString) 
26.
	WScript.Sleep 100 
27.
	WshShell.SendKeys sendString 
28.
end sub 
29.
 

Die Lösung macht sichtbar das das Script läuft, es lässt sich beenden, es schickt die Tasten nur an ein fest definiertes Fenster und zeigt die Anzahl der erfolgreichen Versuche.

Der Nachteil ist allerdings das nebenbei nicht am PC gearbeitet werden kann, aber ich vermute mal du brauchst das aus dem Grund um den PC unbeobachtet eine Aufgabe ausführen zu lassen die gelegentlich ne Frage stellt und auf eine Benutzereingabe wartet. Wenn ja sollte das genau das richtige für dich sein ;)

grüße
Bitte warten ..
Mitglied: Snowman25
23.04.2010 um 09:38 Uhr
Hallo ChrFriedel,

mit seinem eigenartigen GoTo-Konstrukt hätte Motorcross auch eine Endlose Iteration erzeugt. Ich habe seien Code nur auf ein funktionierendes Level gebracht.
übrignes passen deine Sleep-Zeiten nicht mit den benötigten Werten zusammmen. Wozu überhaupt der Sleep nach der MsgBox?

Gruß
Snow
Bitte warten ..
Mitglied: ChrFriedel
23.04.2010 um 09:54 Uhr
Huhu Snowman,

ich meinte auch nicht speziell deine Lösung sondern das ganze Prinzip. Bin gegen Endlosschleifen ;)

Der Sleep nach der Msgbox ist, zumindest bei Windows 7 und 1000ms, ein netter optischer Effekt da die Msgbox so langsam aus und dann wieder einblendet ;) Und wenn man dort höhere Werte verwendet kann man einstellen wie lange man vom nächsten Versuch verschont bleibt. Bspw 180000ms ;)

Grüße
Bitte warten ..
Mitglied: Snowman25
23.04.2010 um 10:01 Uhr
Zitat von ChrFriedel:
Der Sleep nach der Msgbox ist, zumindest bei Windows 7 und 1000ms, ein netter optischer Effekt da die Msgbox so langsam aus und
dann wieder einblendet
Jetzt bin ich neidisch... Ich musste mir dafür extra 'n FadeIn-/FadeOut-Schnipsel schreiben, damit das klappt (schleife mit opacity usw..). Problem dabei: Auf Rechnern mit schwacher GraKa bzw. ohne GraKa-treibern, wird das ganze auf einmal extrem langsam. Ausserdem ist Flüssigkeit und Geschwindigkeit des Effekts stark vom Rechner selbst abhängig...

Grüße
auch
Bitte warten ..
Mitglied: ChrFriedel
23.04.2010 um 10:20 Uhr
Zitat von Snowman25:
> Zitat von ChrFriedel:
> ----
> Der Sleep nach der Msgbox ist, zumindest bei Windows 7 und 1000ms, ein netter optischer Effekt da die Msgbox so langsam aus
und
> dann wieder einblendet
Jetzt bin ich neidisch... Ich musste mir dafür extra 'n FadeIn-/FadeOut-Schnipsel schreiben, damit das klappt
(schleife mit opacity usw..). Problem dabei: Auf Rechnern mit schwacher GraKa bzw. ohne GraKa-treibern, wird das ganze auf
einmal extrem langsam. Ausserdem ist Flüssigkeit und Geschwindigkeit des Effekts stark vom Rechner selbst abhängig...

Haste das wirklich geschrieben? Mach doch mal ne neue Anleitung. Das würde ich mir mal anschauen...

btw das Zitieren könnte besser sein oder ;)
Bitte warten ..
Mitglied: Snowman25
23.04.2010 um 10:55 Uhr
Zitat von ChrFriedel:
Zitat von Snowman25:
Zitat von ChrFriedel:
Der Sleep nach der Msgbox ist, zumindest bei Windows 7 und 1000ms, ein netter optischer Effekt da die Msgbox so langsam
aus
und
dann wieder einblendet
Jetzt bin ich neidisch... Ich musste mir dafür extra 'n FadeIn-/FadeOut-Schnipsel schreiben, damit das klappt
(schleife mit opacity usw..). Problem dabei: Auf Rechnern mit schwacher GraKa bzw. ohne GraKa-treibern, wird das ganze
auf
einmal extrem langsam. Ausserdem ist Flüssigkeit und Geschwindigkeit des Effekts stark vom Rechner selbst
abhängig...

Haste das wirklich geschrieben? Mach doch mal ne neue Anleitung. Das würde ich mir mal anschauen...
Habs aber bloß in C#..
Siehe hier:
01.
        private void fadein(object sender, EventArgs e) { 
02.
// als LOAD-Event der Form (bei Bedarf auch für Subforms und Dialoge) 
03.
            this.Opacity = 0; 
04.
            for (double i = 0; i < 100; i += 10) { 
05.
                this.Opacity = i / 100; 
06.
                this.Refresh(); 
07.
08.
            this.Opacity = 1; 
09.
10.
        private void fadeout(object sender, EventArgs e) { 
11.
// als CLOSED-Event der Form (bei Bedarf auch für Subforms und Dialoge -> ohne Application.Exit) 
12.
            for (double i = 100; i > -1; i -= 10) { 
13.
                this.Opacity = i / 100; 
14.
                this.Refresh(); 
15.
16.
            Application.Exit(); 
17.
        }
Hab das projekt mal auf meinen Server hochgeladen (ist nicht vollständig. Hatte bisher keine Lust, das Ding fertig zu machen.)

btw das Zitieren könnte besser sein oder ;)
:-P
Bitte warten ..
Mitglied: ChrFriedel
23.04.2010 um 11:33 Uhr
Achso alles klar. Ich dachte in VBScript ;)

Aber ne lustige Spielerei ist es. Und auch viel cooler als der "Effekt" in meinem VBS. Aber ich kann mir vorstellen was du mit den Performanceproblemen meinst . Liegt vermutlich an den Refreshs. Aber wie man das umgehen kann weiß ich leider auch nicht so aus dem Stehgreif.. vielleicht irgendwas mit Buffern... oder du versucht es mit nem Timer der alle 20ms feuert und die opacity verändert und sich bei 1 abschaltet. Könnte sein das du damit die Refreshs umgehen kannst... alles aber ohne Garantie ;)
Bitte warten ..
Mitglied: Snowman25
23.04.2010 um 11:39 Uhr
Hab ich schon alles ausprobiert. Aber das einzige, das zuverlässig funktioniert ist nunmal das. Auf diesem Rechner läuft der Effekt verdammt flüssig ab (frisch compiliert). Auf dem Laptop meiner mum (auch kein schlechtes Teil, allerdings vista) dauert der Effekt fast ewig. Kann aber auch am zusammenspiel des Effektes mit Aero liegen..

Hast du auch mal den Info-Screen geöffnet? Da kommt das am besten rüber, finde ich.

Gruß
Snow
Bitte warten ..
Mitglied: ChrFriedel
23.04.2010 um 13:43 Uhr
Jo den hab auch probiert. Gelungen finde ich den Effekt auch Nur eben doof wenn er nicht flüssig läuft.

Bleibt wohl nur auf WPF und .net 3+ umzusteigen. Da wurde die Sache mit der Opacity nochmal überarbeitet glaube ich
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Router & Routing
Transparenter Proxy funktioniert nicht? (1)

Frage von mrserious73 zum Thema Router & Routing ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Linux
LTSP: PXE Boot funktioniert nicht (23)

Frage von Fenris14 zum Thema Linux ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...