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
GELÖST

Hinweisfenster einblenden, welches vor einem durch die Batch gestartetem Tool erscheint

Frage Entwicklung Batch & Shell

Mitglied: blacksun

blacksun (Level 1) - Jetzt verbinden

21.08.2012, aktualisiert 12:39 Uhr, 5467 Aufrufe, 17 Kommentare

Hallo zusammen,

ich habe eine Batch, die zum Testen erst einmal mspaint wie folgt startet.

[code]
@echo off

REM hier den AnWendungspfad eintragen
cd "c:\wtsrv\system32"

mspaint.exe
...
[/code]


Diese Batch läuft "unsichtbar". Paint wird nicht per start gestartet, da noch etwas passieren soll, sobald Paint geschlossen wird. Dies passiert bei den Pünktchen.

Beim Anwender soll beim Aufruf also paint starten. Gleichzeitig soll im Vordergrund ein Hinweisfenster eingeblendet werden, das den Anwender über eine Wartezeit von einem definierten Zeitraum (z.B. 10 Sekunden) informiert und dann verschindet, so dass er dann das gestartete Paint sieht.

Idee:
Ich mache eine Hinweis.bat, welche den Anwender über die Wartezeit informiert und das dann nach dem von mir gewünschten Zeitraum wieder verschwindet.
Den Aufruf der Hinweis.bat schreibe ich vor das mspaint.exe


Problem:
Rufe ich das mit
[code]
start "" hinweis.bat
[/code]
auf, dann startet nach meiner Hinweis.bat sofort danach Paint. Allerdings befindet sich das Fenster mit dem Hinweis im Hintergrund hinter Paint.

Rufe ich die Hinweis.bat ohne das start "" auf, dann wird Paint erst gestartet, wenn die Hinweis.bat abgearbeitet wurde.


Frage:
Wie kann ich paint starten und vor paint einen Hinweis setzen der den Anwender informiert, zum Warten zwingt und der im Vordergrund bleibt?

Wie gesagt muss der Aufruf vor dem paint-Start erfolgen, da die Batch, die Paint startet, weiterhin noch aktiv bleibt und noch etwas ausführen soll, sobald Paint geschlossen wird.

Viele Grüße
Martin
Mitglied: ChrisDynamite
21.08.2012 um 12:46 Uhr
Das dürfte über eine MSGBox gehen. Dein Google Begriff ist MSGBOX + Batch
Bitte warten ..
Mitglied: blacksun
21.08.2012, aktualisiert um 13:20 Uhr
Zitat von ChrisDynamite:
Das dürfte über eine MSGBox gehen. Dein Google Begriff ist MSGBOX + Batch


jab aber wie bekomme ich die in den Vordergrund?
Die starte ich ja auch vor dem paint.

Und damit überdeckt Paint auch wieder diese MSGBOX
Bitte warten ..
Mitglied: 76109
21.08.2012 um 13:53 Uhr
Hallo blacksun!

Versuchs mal mit diesem Script (*.vbs):
01.
MsgBox "Bitte warten!", vbInformation,"Paint wird gestartet..." 
02.
CreateObject("Wscript.Shell").Run "mspaint.exe", 10, False
Gruß Dieter
Bitte warten ..
Mitglied: blacksun
21.08.2012 um 14:20 Uhr
Zitat von 76109:

Versuchs mal mit diesem Script (*.vbs):
01.
> MsgBox "Bitte warten!", vbInformation,"Paint wird gestartet..." 
02.
> CreateObject("Wscript.Shell").Run "mspaint.exe", 10, False 
03.
> 


Hallo Dieter,

bringt leider auch nichts.
Paint startet erst wenn die Meldung bestätigt wird.

- Es soll aber erreicht werden, dass Paint startet und gleichzeitig die Meldung im Vordergrund erscheint (nicht hinter Paint versteckt ist)
- die Meldung soll Paint "verdecken" mit dem Hinweis noch zu warten
- Nachdem paint vom Anwender geschlossen wird sollen noch weitere Befehle abgearbeitet werden.

Viele Grüße
Martin
Bitte warten ..
Mitglied: bastla
21.08.2012, aktualisiert um 14:49 Uhr
... und so
01.
Set Sh = CreateObject("WScript.Shell") 
02.
Sh.PopUp "Paint wird gestartet ...", 10 
03.
Sh.Run "mspaint.exe", 8, True
oder so (eher nicht )?
01.
Set Sh = CreateObject("WScript.Shell") 
02.
Sh.Run "mspaint.exe", 1, False 
03.
Sh.PopUp "Paint wird gestartet...", 10
Grüße
bastla

[Edit] Parameter "bWaitOnReturn" in Variante 1 auf True geändert [/Edit]
Bitte warten ..
Mitglied: 76109
21.08.2012 um 14:41 Uhr
Hallo bastla!

Mhm, dass Script soll doch nachdem Paint geschlossen ist weiterlaufen. Also eher Variante 1 mit True am Ende oder nicht?

Gruß Dieter
Bitte warten ..
Mitglied: bastla
21.08.2012 um 14:45 Uhr
Hallo Dieter!

Yep - wäre besser (ändere ich oben) ...

Grüße
bastla
Bitte warten ..
Mitglied: blacksun
21.08.2012, aktualisiert um 15:31 Uhr
hmm, ich bräuchte eine Kombination aus beidem

Das was der Anwender sieht soll so aussehen:
[IMG]http://i48.tinypic.com/e0lb0w.jpg[/IMG]

D.h. die Meldung soll zwingend IMMER vor Paint erscheinen.


Aber das Skript soll auf jeden Fall noch was tun, wenn paint vom Anwender geschlossen wird!

Insgesamt soll schematisch folgendes passieren:

[code]
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "connect.bat", 0, False

'Dann soll Paint starten mit der Meldung im VORDERGRUND
Set Sh = CreateObject("WScript.Shell")
Sh.PopUp "Paint wird gestartet ...", 10
Sh.Run "mspaint.exe", 8, True

'Wenn Paint geschlossen wird soll passieren
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "disconnect.bat", 0, False
[/code]


die connect.bat und disconnect.bat müssen aber in einem anderen Ordner ausgeführt werden wie mspaint (weil darin ein zweiteiliges Tool gestartet wird welches den zweiten Teil zwingend im gleichen Ordner erwartet

Ingesamt soll also folgendes passieren:
1. Eine Connect-Batch wird ausgeführt
2. Paint startet
3. Meldung erscheint
4. Erst wenn der Anwender paint schließt soll die Disconnect-Batch ausgeführt werden.
Bitte warten ..
Mitglied: pieh-ejdsch
21.08.2012, aktualisiert um 15:33 Uhr
moin blacksun,

sowas ähnliches gabs schonmal.
Im cmd gehts auch:
01.
@echo off 
02.
setlocal 
03.
set /a Timer=15 
04.
set "WSig=PaintFertig%Random%" 
05.
start "Warte auf Ende von Paint" /min cmd /c "mspaint && waitfor /si %wsig% " 
06.
timeout /t 2 >nul 
07.
start "Moment Bitte ..." cmd /c " mode 50,10 &(for /l %%i in (%timer% -1 1) do title Bitte noch %%i sekunde^(n^) Warten. &cls &echo Paint startet ... moment&<nul set /p "=Warten sie Bitte noch %%i sekunde(n)" &timeout /t 1 /nobreak >nul) " 
08.
waitfor %wsig% 
09.
title jetzt kanns hier weitergehen weil Paint beendet wurde. 
10.
for /l %%i in (5 -1 1) do cls &<nul set /p "=Programm endet in %%i sekunde(n)" &timeout /t 1 /nobreak >nul 
11.
exit /b
Waitfor wird mindestens dafür gebraucht.
Timeout könnte duch ping ersetzt werden.

Gruß Phil
Bitte warten ..
Mitglied: 76109
21.08.2012, aktualisiert um 18:13 Uhr
Hallo blacksun!

Na, in VBS dann mit 2 Skripts:
Skript1:
01.
Set Sh = CreateObject("WScript.Shell") 
02.
Sh.Run Replace(WScript.ScriptFullName, WScript.ScriptName, "PopUp.vbs"), 0, False 
03.
Sh.Run "mspaint.exe", 3, True
Skript2 (PopUp.vbs):
01.
WScript.Sleep 500   'anpassen 
02.
CreateObject("WScript.Shell").PopUp "Paint wurde gestartet bitte 15 Sekunden warten...", 15
Gruß Dieter

[edit] bastlas Vorschlag übernommen [/edit]
Bitte warten ..
Mitglied: blacksun
21.08.2012, aktualisiert um 16:34 Uhr
@phil und Dieter

Mensch, genau das hab ich gesucht, beide Varianten funktionieren perfekt.

Was mir schon seit einigen Wochen durch den Kopf geht:

Im Moment kommen bei mir Windows2003-Server (32-Bit) zum Einsatz. Ende nächsten Jahres sollen diese durch Windows Windows Server 2012 ersetzt werden.

Wie sieht das dann mit Batch und VBS aus?
Funktionieren dann Batch und VBS noch? Wie sieht das aus?
Muss ich dann meine ganzen Batch-Skripte umschreiben? Und wenn ja, in was?
Bitte warten ..
Mitglied: bastla
21.08.2012, aktualisiert um 17:57 Uhr
Hallo Dieter!

Vorschlag, um das noch etwas dynamischer zu machen:
Sh.Run Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "PopUp.vbs", 0, False
- dann genügt es, beide Scripts in den gleichen Ordner zu legen ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
21.08.2012, aktualisiert 22.08.2012
Hallo blacksun!

Hier noch eine 'PopUp.hta', die in der Anzeige die Sekunden herunterzählt und auch solange den Fokus behält:
01.
<html> 
02.
<head> 
03.
<title>Paint gestartet...</title> 
04.
<HTA:APPLICATION 
05.
     ID = "AutoRefresh" 
06.
     ApplicationName = "Paint" 
07.
     Scroll = "no" 
08.
     SysMenu = "no" 
09.
     SingleInstance="yes"/> 
10.
</head> 
11.
 
12.
<SCRIPT LANGUAGE="VBScript"> 
13.
    Const WaitSecond = 15       'Wartezeit in Sekunden 
14.
    Const WindowWidth = 260     'Fensterbreite 
15.
    Const WindowHeight = 100    'Fensterhöhe 
16.
 
17.
    Dim Zeit, oShell 
18.
    
19.
    Sub Window_OnLoad() 
20.
        Window.ResizeTo WindowWidth, WindowHeight 
21.
        Window.MoveTo ((Screen.Width - WindowWidth) / 2), ((Screen.Height - WindowHeight) / 2) 
22.
 
23.
        Set oShell = CreateObject("WScript.Shell") 
24.
        Zeit = DateAdd("s", WaitSecond, Now) 
25.
        Call RefreshTime: TimerID = Window.SetInterval("RefreshTime", 100) 
26.
    End Sub 
27.
 
28.
    Sub RefreshTime() 
29.
        If Zeit <= Now Then Close 
30.
        oShell.AppActivate "Paint gestartet..." 
31.
        Document.All.Sek.Value = Right(Space(4) & Second(Zeit - Now), 5) 
32.
    End Sub 
33.
</SCRIPT> 
34.
<body bgcolor='buttonface' style='font-family:Arial;font-size:12px'> 
35.
&nbsp;&nbsp;Bitte noch warten&nbsp;&nbsp; 
36.
<input type='text' name='Sek' value='' readonly='readonly' size='1' style='font-family:Arial;font-size:12px'> 
37.
&nbsp;&nbsp;Sekunden 
38.
</body> 
39.
</html>
@bastla
Deinen Vorschlag habe ich oben eingebaut

Gruß Dieter
Bitte warten ..
Mitglied: bastla
21.08.2012, aktualisiert um 23:05 Uhr
@Dieter
Deinen Vorschlag habe ich oben eingebaut
... und das très elegant

Grüße
bastla
Bitte warten ..
Mitglied: evinben
27.06.2013 um 23:35 Uhr
Hallo,

könnte die Zeit bei
01.
CreateObject("WScript.Shell").PopUp "TextZumAnzeigen", 1
weniger als Sekunde gesetzt werden? Z. B. nur eine halbe Sekunde?

Gruß
Evinben
Bitte warten ..
Mitglied: bastla
27.06.2013 um 23:52 Uhr
Hallo evinben!

Geht nur mit minimal 1 Sekunde.

Grüße
bastla
Bitte warten ..
Mitglied: evinben
28.06.2013, aktualisiert um 07:15 Uhr
Hallo bastla,

schade. Dann schaue ich einen neuen Beitrag Vormittag zu eröffnen. Sicherlich gäbe es da andere alternative und ebenso "KURZE" Lösungen (im Falle in VBA für Outlook).

Einen schönen Freitag!
evinben
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch - Inaktive Symbole in der Taskliste einblenden (2)

Frage von JustinVS zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Speicherkarten
Tool zum neuformatieren eines USB-Sticks (6)

Frage von flyingKangaroo zum Thema Speicherkarten ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...