| |
|
|
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? |
|
|
| |
|
|
|
| Welches System?
Da hat noch jemand solch "Problem" [...]
Das ist wohl WinSpool-Zeugs, hier wohl etwas Source in VB: [...] |
|
|
| |
|
|
|
Rolf Koch | |
|
| |
|
|
|
| |
|
| |
|
|
|
Rolf Koch | OK da kämpf ich mal - Danke iF ^^ |
|
|
| |
|
|
|
| Hab leider nix zu, aber hätte gern. ^^
Hehe schau mal guter Einstieg: [...] |
|
|
| |
|
|
|
| Hier [...] liegt auch was. |
|
|
| |
|
|
|
Rolf Koch | Naja da liegt zwar einiges, aber wie gesagt möchte ich lediglich erkennen ob der Drucker gerade druckt und das druckende Programm ist kein Profanprogramm. Es erscheint ganz kurz immer ein Druckerdialog und dann druckt das Teil. |
|
|
| |
|
|
|
| Hehe hier schau mal [...] ist zwar Pascal... |
|
|
| |
|
|
|
Frank Abbing | Du musst eigentlich nur kontinuierlich nach einem Fenster mit dem Druckernamen suchen. Beim Drucken wird kurz ein Trayicon eingeblendet, zu dem das (unsichtbare) Fenster gehört. Ein weiterer Weg wäre das Suchen nach dem Drucker-Prozess. |
|
|
| |
|
|
|
| Hier Rolf so gehts wenn der PrintMon [...] (von oben der Link) nebenher läuft: KompilierenMarkierenSeparieren
$cleq}
const myPMon.Title="PrinterMonitor v3 (c) 2001 by -=Assarbad=- [1.31]"
const myPMon.getMsgSize=sendMessage(hList,wm_getTextLength,0,0)
windowTitle "SoundPlugin: "+myPMon.Title
windowStyle 512 | 8 | 16 | 32
window 640,480
long h=findWindow(myPMon.Title)
casenot getText$(h)==myPMon.Title : end
long hList=myPMon.enumListFromPMonHWnd(h)
casenot h : end
print "hmkey... letz wait"
long myPMon.lastMsgSize=myPMon.getMsgSize,c
do {
waitInput 2500
case %key==2 : break
c=myPMon.getMsgSize
case myPMon.lastMsgSize==c : continue
myPMon.lastMsgSize=c
print ".";
whileLoop 3 {
sound 1000,20*loop
sound 500*loop,20*loop
sound 2000,20*loop
}
}
end
myPMon.enumListFromPMonHWnd(long h){
h=findWindowEx(h,,"Edit",)
casenot h : return null
return h
}
bzw. KompilierenMarkierenSeparierenDECLARE __cf1&
Def __cf1(2) !"KERNEL32","GetProcAddress"
Def __cf2(1) !"KERNEL32","GetModuleHandleA"
__cf1&=__cf1(__cf2("user32.dll"),"FindWindowExA")
WINDOWTITLE "SoundPlugin: "+"PrinterMonitor v3 (c) 2001 by -=Assarbad=- [1.31]"
WINDOWSTYLE 512 | 8 | 16 | 32
WINDOW 640,480
var H&=FINDWINDOW("PrinterMonitor v3 (c) 2001 by -=Assarbad=- [1.31]")
IFNOT GETTEXT$(H&)="PrinterMonitor v3 (c) 2001 by -=Assarbad=- [1.31]"
end
ENDIF
var HLIST&=MYPMON.ENUMLISTFROMPMONHWND(H&)
IFNOT H&
end
ENDIF
PRINT "hmkey... letz wait"
var MYPMON.LASTMSGSIZE&=SENDMESSAGE(HLIST&,$000E,0,0)
var C&=0
WHILE 1
WAITINPUT 2500
IF %KEY=2
BREAK
ENDIF
C&=SENDMESSAGE(HLIST&,$000E,0,0)
IF MYPMON.LASTMSGSIZE&=C&
CONTINUE
ENDIF
MYPMON.LASTMSGSIZE&=C&
PRINT ".";
WHILELOOP 3
SOUND 1000,20*&LOOP
SOUND 500*&LOOP,20*&LOOP
SOUND 2000,20*&LOOP
ENDWHILE
ENDWHILE
end
proc MYPMON.ENUMLISTFROMPMONHWND
PARAMETERS H&
H&=call(__cf1&,H&,0,"Edit",0)
IFNOT H&
RETURN 0
ENDIF
RETURN H&
endproc
Wenn beide Exen laufen wird gebeept sobald irgendwas im Bezug auf die Drucker passiert... |
|
|
| |
|
|
|
Rolf Koch | Das stimmt Frank, jedoch gibt es das Problem, dass ich nicht am Rechner in der Fa. proggen und testen kann - also nur hier zuhause. Durch iF bin hab ich nun [...] heruntergeladen und getestet. Perfekt wenn ich die beiliegende Exe starte. Wenn ich drucke dann wirds brav erkannt. Jedoch wenn ich die 100 Dateien sehe und naja die 0 Ahnung von der Sprache ... ^^ |
|
|
| |
|
|