![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Schon länger dabei
![]() |
![]() Mit VBS hab ich bis jetzt noch keine Erfahrung. Per Tante Google hab ich mir folgendes Skript zusammengesucht, welches einen Ordner auf neue PDF Dateien überwacht und gegebenenfalls ausdruckt.
Soweit klappt dies auch. Code:
On Error Resume Next strFolder = "T:\ordner" 'ohne abschließenden "\", auch bei Root-Folder WScript.Echo "Druckprogramm gestartet" strUserFolder = """" & Replace(strFolder, "\", "\\\\") & """" strComputer = "." Set fso = CreateObject("Scripting.FileSystemObject") fso.DeleteFile("T:\ordner\*.pdf"),true Set objShell = CreateObject("Wscript.Shell") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _ & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ & "TargetInstance.GroupComponent= " _ & "'Win32_Directory.Name=" & strUserFolder & "'") Do Set objLatestEvent = colMonitoredEvents.NextEvent strNewFile = objLatestEvent.TargetInstance.PartComponent arrNewFile = Split(strNewFile, "=") strFileName = arrNewFile(1) strFileName = Replace(strFileName, Chr(34), "") Select Case LCase(fso.GetExtensionName(strFileName)) Case "pdf" 'Typ in Kleinbuchstaben angeben objShell.Run """C:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe"" /p """ & strFileName & """" Case Else ' keine Aktion erforderlich End Select Loop z.B: fso.DeleteFile("T:\rechnungen\11\etiketten\""" & strFileName & """"),true nach dem Foxit Reader Aufruf funktioniert nicht (keine Fehlermeldung, aber die Files bleiben stehen). Andere komplette Noob Frage: Über Google hätte ich nichts gefunden: Gibt es außer echo keine Möglichkeit einer Bildschirmausgabe? Z.B. ein Fenster, welches jede gedruckte Datei anzeigt.
____________________________________
www.mankra.com Meine private Site |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Mit VBS hab ich es nicht so, aber üblicherweise ist die Syntax identisch mit VB6/VBA. In diesem Fall müßte es so aussehen: fso.DeleteFile("T:\rechnungen\11\etiketten\" & strFileName),true Die vielen komplizierten Hochkommas sind nur in der Eingabeaufforderung notwendig. Oder wie in deinem Fall, wenn mit der Shell gearbeitet wird. Wobei es auch ohne Hochkommas funktioniert, wenn keine Leerzeichen in Pfad und Dateinamen enthalten sind. mfg WB |
![]() |
![]() |
![]() |
#3 |
Schon länger dabei
![]() |
![]() Danke, werds am Mittwoch probieren.
Kann mir noch jemand beantworten, ob oder wie man ein Fenster mit VBS öffnen kann?
____________________________________
www.mankra.com Meine private Site |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Ich weiß ja nicht, was du genau machen willst. Die korrekte Lösung beginnt wahrscheinlich mit CreateProcess, aber das ist höchst fortgeschritten. Eine leichter zu verstehende Lösung könnte so aussehen: Den Editor starten, und mit SendKeys steuern. Damit hast du die Daten in einem Fenster gesammelt, und kannst sie bei Bedarf auch gleich als Datei abspeichern. mfg WB |
![]() |
![]() |
![]() |
#5 |
Schon länger dabei
![]() |
![]() Wie oben geschrieben, eine visuelle Ausgabe, daß A das Programm läuft und B daß ein PDF gedruckt wurde, wäre praktisch.
Es passiert immer wieder, daß meine Leute das Programm doppelt starten, dann werden die PDFs auch doppelt ausgedruckt. Also hab ich das richtig verstanden, eine simple Methode einer Bildschirmausgabe, wie z.B. bei Batch Dateien gibt es nicht.
____________________________________
www.mankra.com Meine private Site |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() Registriert seit: 23.03.2000
Ort: Graz
Alter: 71
Beiträge: 3.567
|
![]() Solche Dinge können mit AutoIt oder AutoHotkey wesentlich einfacher programmiert werden.
![]()
____________________________________
Ciao |
![]() |
![]() |
![]() |
#7 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Die Ausgabe in ein Fenster des Editors betrachte ich als "simple Methode". Konsolenfenster sollte auch möglich sein, finde ich aber nicht so schön. Hier ein paar Zeilen, die zeigen wie das gedacht ist: Code:
'Editor öffnen, und Text schreiben 'on error resume next set ws = CreateObject("Wscript.Shell") AppID = ws.run("%WINDIR%\notepad.exe") 'Etwas Zeit lassen, damit das Programm auch wirklich schon läuft wscript.sleep 1000 'Sicherheitshalber das Editorfenster aktivieren ws.AppActivate AppID 'Text im Fenster ausgeben ws.SendKeys "Testtext", True mfg WB |
![]() |
![]() |
![]() |
#8 |
Schon länger dabei
![]() |
![]() Danke, damit hab ich einen Anhaltspunkt.
Sehe aber schon, das VBS doch eingeschränkt ist und dies für die Anzeige keine Lösung ist (Es soll sich das Fenster nicht immer nach vorne drängen).
____________________________________
www.mankra.com Meine private Site |
![]() |
![]() |
![]() |
#9 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Eine wesentliche Einschränkung von VBS ist Deklaration von Variablen. Da es keine Typen gibt, können keine API-Aufrufe eingesetzt werden. Um diese Einschränkung zu umgehen kann ein API-Wrapper eingesetzt werden, z. B. die dynacall.dll. Soweit ich weiß arbeiten auch die von FranzK erwähnten Tools auf diese Art. Über die dann verfügbare Windows API können alle deine Wünsche umgesetzt werden. Allerdings ist das nicht mehr Einsteigerniveau. Vielleich solltest du dir die von FranzK erwähnten Tools näher anschauen. mfg WB |
![]() |
![]() |
![]() |
#10 |
Schon länger dabei
![]() |
![]() Autoit schaut wirklich interressant aus. Mal schauen, wann ich Zeit finde, mich einzuarbeiten.
Soweit funktioniert es ja.
____________________________________
www.mankra.com Meine private Site |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|