WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 12.02.2012, 22:46   #1
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard Hilfe zu VBS: PDF nach Ausdruck löschen

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
Problem ist, daß ich gerne nach dem Ausdruck das File gelöscht hätte und ich mit den vielen Anführungszeichen nicht so zurecht komme.
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
mankra ist offline   Mit Zitat antworten
Alt 13.02.2012, 15:59   #2
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
wbendl ist offline   Mit Zitat antworten
Alt 13.02.2012, 20:59   #3
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

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
mankra ist offline   Mit Zitat antworten
Alt 13.02.2012, 21:52   #4
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
wbendl ist offline   Mit Zitat antworten
Alt 13.02.2012, 23:49   #5
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

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
mankra ist offline   Mit Zitat antworten
Alt 14.02.2012, 01:34   #6
FranzK
Inventar
 
Registriert seit: 23.03.2000
Ort: Graz
Alter: 71
Beiträge: 3.567


Standard

Solche Dinge können mit AutoIt oder AutoHotkey wesentlich einfacher programmiert werden.

____________________________________
Ciao
FranzK ist offline   Mit Zitat antworten
Alt 14.02.2012, 09:51   #7
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
Der Nachteil von SendKeys ist halt, daß immer das Fenster aktiviert werden muß.


mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 15.02.2012, 09:22   #8
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

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
mankra ist offline   Mit Zitat antworten
Alt 15.02.2012, 11:47   #9
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
wbendl ist offline   Mit Zitat antworten
Alt 15.02.2012, 12:36   #10
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

Autoit schaut wirklich interressant aus. Mal schauen, wann ich Zeit finde, mich einzuarbeiten.
Soweit funktioniert es ja.
____________________________________
www.mankra.com Meine private Site
mankra ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:08 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag