| |
|
|
- Seite 1 - |
|
Rolf Koch | Hallöchen heut frag ich mal so in die Runde, da ich mit Drucken nie soviel gemacht habe. Folgende Problemstellung: Wir haben bei uns ein Computer mit Drucker auf dem Lager. Wenn ein Kunde ein Gerät gekauft hat und an der Kasse bezahlt hat, so kommt bei uns ein entsprechender Beleg aus dem Drucker, damit wir die Waschmaschine, TV oder solch ein Zeugs raussuchen können. Jetzt würde ich gerne ein nebenbeilaufendes Tool schreiben, welches einen Sound abspielt, wenn ein solcher Beleg aus dem Drucker kommt. Meint Ihr, ich könnte dies irgendwie erreichen? |
|
|
| |
|
|
| |
|
- Seite 8 - |
|
|
| Ja,
das erlaubt XProfan nicht -
ein Return innerhalb While/ Repeat Schleife.
Ein Programmierfehler.
Schleifen mit Break durchbrechen. |
|
|
| |
|
|
|
Rolf Koch | Jepp, hab sowas in Erinnerung. Naja, das kann ich ja lösen. Wie das Leben so spielt, ist mir auch noch der Drucker verreckt LOOOOL. Also hab ich Fileprinter eingestellt und siehe da (nachdem ich es testweise ohne XPSE laufen lasse), da kommt nix an. HEEEEUUUULLLL. So wie das Programm aussieht, wäre es genau das, was ich will, sogar das wichtige DOKUMENTTITEL ist dabei!
Nachtrag: Egal ob der Drucker am A..h ist, Druckaufträge gehen ja raus und zum Testen reicht es. Kommen also an. Aber Rest, mal kucken.
Nachtrag 2: Im Profaninterpreter läuft es einwandfrei, wenn ich es pur wie geschrieben mit Profan compiliere und eine Exe erstelle, kommt eine EAccess Violation ???? |
|
|
| |
|
|
|
Andreas Miethe
| Rolf Koch (11.11.12)
Jepp, hab sowas in Erinnerung. Naja, das kann ich ja lösen.
Das wird aber nicht so einfach sein, denn genau an dieser Stelle musst Du raus aus der Prozedur, sonst wirst du eine Fehlermeldung bekommen. Ob XProfan das erlaubt ?, MUSS erlauben . Bei mir funktioniert das nur so
Funktioniert denn die EXE ? |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 11.11.2012 ▲ |
|
|
|
|
Rolf Koch | Nein leider nicht Andreas, wie geschrieben EAccess Violation ..... irgendwas mit Lesen von Adresse. Man kann doch raus? Indem man eine globale Variable setzt und vor dem Return diese füllt, oder bin ich zu lange raus gewesen? ^^ Also falsch ausgedrückt. Anstatt Return eine Variable füllen so meinte ich. |
|
|
| |
|
|
|
Rolf Koch | Keine Ahnung ob es Erfolgsversprechend ist, aber hab gerade über den Rechner meiner Frau einen Druck rausgeschickt. Wie gesagt im Interpreter läuft es ja und dieser Druck wurde fein angezeigt. Die Frage ist nun: Verhält sich ein direkt angeschlossener Drucker per Netzwerkkabel genauso? Also die Frage, wird wirklich alles abgefragt? Dann müsste ich nur noch den Code laufbar bekommen als EXE. Kann es kaum erwarten, denn diese Sache nagt schon Monatelang an mir rum und ich drehe noch ab. |
|
|
| |
|
|
|
| @Andreas: Was spricht gegen Break und dagegen, nach dem Schleifenkörper
die Funktion zu verlassen? Return innerhalb von Schleifen bringt Stacks durcheinander -
beim interpretierten XProfan imho gleichermassen wie beim nativen (n)Profan.
Darum meldet XPSE das auch als Fehler, XProfan meldet das imho erst zur Laufzeit
als Fehler aber ich weiß nicht bei welchen Versionen. |
|
|
| |
|
|
|
Andreas Miethe
| Hallo Rolf, , das sollte mit Windows7 auch mit der Dll funktionieren, nur besser, da kein Zweitprocess benötigt wird. Der Aufruf der Funktion sollte so aussehen:
Result$ = String$(WMIResult1("SELECT Document,Caption,TimeSubmitted FROM Win32_PrintJob","root\\CIMV2","","",""),0)
Also alle Leerstrings auch leer lassen, nicht 0.0.0.0 |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 12.11.2012 ▲ |
|
|
|
|
Rolf Koch | Okay ich versuch es dann nochmal so |
|
|
| |
|
|
|
Rolf Koch | Ähhh Andreas folgendes liegt mir in Deinem Code vor: KompilierenMarkierenSeparierenWINDOW 800,700
CLS
Var OldR& = 0
Var s& = Create("listbox",%hwnd,"",10,20,200,600)
Var s2& = Create("listbox",%hwnd,"",210,20,500,600)
Var ende& = 0
WhileNot ende&
WaitInput 200'alle 200 Millisekunden aktualisieren
'Daten von Printjobs auflisten
' Parameter: 'Query,'Adresse,'IP,Computername,Passwort,Listbox1,Listbox2
OldR& = external("AMP_WMI.DLL","WMIResult","Win32_PrintJob","root\CIMV2","192.168.0.3","","",S&,S2&)
'Prozessordaten auflisten
'OldR& = external("AMP_WMI.DLL","WMIResult","Win32_Processor","root\CIMV2","","","",S&,S2&)
'Cdrom drives auflisten
'OldR& = external("AMP_WMI.DLL","WMIResult","Win32_CDROMDrive","root\CIMV2","","","",S&,S2&)
'Sound-Device auflisten
'OldR& = external("AMP_WMI.DLL","WMIResult","Win32_SoundDevice","root\CIMV2","","","",S&,S2&)
'Base-Board auflisten
'OldR& = external("AMP_WMI.DLL","WMIResult","Win32_Bios","root\CIMV2","","","",S&,S2&)
Locate 0,0
Print " Anzahl : " ;oldR&
If OldR& = 0
SendMessage(s&,$184,0,0)'listen löschen
SendMessage(s2&,$184,0,0)
EndIf
EndWhile
End
Wo bau ich denn Deinen Result$ String ein? Sorry! |
|
|
| |
|
|
|
Andreas Miethe
| Ups, da hast Du noch den alten Code. Versuch den hier. KompilierenMarkierenSeparieren $H Windows.ph
ImportDll("AMP_WMI.DLL","")
WINDOW 800,600
WindowTitle "WMI-Test"
UseIcon "A"
CLS ~GetSysColor(~COLOR_3DFACE)
Var OldR& = 0
Var Result$ = ""
Var ende& = 0
Declare A$[]
Declare B$[]
Declare s$[]
Declare Jobs&
Var PrintTjobs& = Create("Text",%hwnd,"Printjobs",10,60,300,20)
SetFont PrintTjobs&,~GetStockObject(~DEFAULT_GUI_FONT)
Var T$ = "Job;0;160;Drucker;0;200;Dokument;0;200;Zeit;0;200"
Var Grid& = Create("GridBox", %hwnd,T$,0,10,80,764,360)
Proc Printjobs
~Lockwindowupdate(Grid&)
Repeat
DeleteString(Grid&,0)
Until GetCount(Grid&) = 0
Result$ = String$(WMIResult1("SELECT Document,Caption,TimeSubmitted FROM Win32_PrintJob","root\\CIMV2","","",""),0)
A$[] = Explode(Result$,chr$(10)+chr$(13))
Jobs& = (A$[0])
WhileLoop 0, SizeOf(A$[]) - 1
If Left$(A$[&loop],8) = "Document"
B$[] = Explode(A$[&loop],";")
Whileloop 1,Jobs&
s$[&loop] = s$[&loop]+"|"+Translate$(B$[&loop],";",":")
EndWhile
ElseIf Left$(A$[&loop],7) = "Caption"
B$[] = Explode(A$[&loop],";")
Whileloop 1,Jobs&
s$[&loop] = Str$(&loop)+"|"+Translate$(B$[&loop],";",":")
EndWhile
ElseIf Left$(A$[&loop],13) = "TimeSubmitted"
B$[] = Explode(A$[&loop],";")
Whileloop 1,Jobs&
s$[&loop] = s$[&loop]+"|"+String$(DateTime(B$[&loop]),0)
EndWhile
EndIf
EndWhile
Whileloop 1, Jobs&
Addstring(Grid&,s$[&loop])
EndWhile
~Lockwindowupdate(0)
EndProc
KeinFlackern()
PrintJobs()
WhileNot ende&
WaitInput 1000'alle 1 Sekunden aktualisieren
PrintJobs()
EndWhile
End
Proc KeinFlackern
~SetClassLong(%hwnd,~GCL_STYLE,(~GetClassLong(%hwnd,~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
SetStyle %hwnd, GetStyle(%hwnd) | ~WS_CLIPCHILDREN
SetStyle 1,%hwnd, GetStyle(1,%hwnd) | $2000000'WS_EX_COMPOSITED (Double Buffer)
EndProc
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 12.11.2012 ▲ |
|
|
|
|
Rolf Koch | OK |
|
|
| |
|
|
|
Rolf Koch | Leider wieder was, siehe Anhang. |
|
|
| |
|
|