S_VB.max
شنبه 26 خرداد 1386, 22:56 عصر
سلام
من می خوام وقتی که دستور پرینت از هر برنامه ای مثل word ، Adobe Reader و ... به ویندوز داده شد برنامه متوجه شود بعد یه دستور دلخواه را اجرا کنم
چجوری می تونم اینکار را بکنم ؟
majidghost
شنبه 26 خرداد 1386, 23:49 عصر
وقتی میخواد پرینت بگیره مسلما یه سری مسیج بین پنچره ها رد و بدل میشه ... .
noorsoft
یک شنبه 27 خرداد 1386, 06:26 صبح
از API مربوط به چاپگر SPOOL استفاده کن
__siavash__
یک شنبه 27 خرداد 1386, 09:54 صبح
سلام
من می خوام وقتی که دستور پرینت از هر برنامه ای مثل word ، Adobe Reader و ... به ویندوز داده شد برنامه متوجه شود بعد یه دستور دلخواه را اجرا کنم
چجوری می تونم اینکار را بکنم ؟
من دقیقا نمیدونم
اما شاید با توابع GetMessage یا PeekMessage بشه این کارو انجام داد.
S_VB.max
یک شنبه 27 خرداد 1386, 21:29 عصر
با تشکر از توجه شما مشکلم حل شد http://qsmile.com/qsimages/76.gif
__siavash__
دوشنبه 28 خرداد 1386, 00:03 صبح
با تشکر از توجه شما مشکلم حل شد http://qsmile.com/qsimages/76.gif
میشه بگی چه طوری این کارو کردی ؟؟
S_VB.max
دوشنبه 28 خرداد 1386, 19:12 عصر
باید وضعیت jobهای پرینتر را در هر لحظه مونیتورینگ کرد هر وقت یک job جدید توی صف چاپ اومد به منزله اینه که دکمه زده شده
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" _
(ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal _
hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As _
Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) _
As Long
Private Sub Timer_Timer()
Dim hPrinter As Long, lngResult As Long, lngJobsCount As Long
Dim lngJobsFirstJob As Long, lngJobsEnumJob As Long, lngJobsLevel As Long
Dim lngJobsNeeded As Long, lngJobsReturned As Long
Dim byteJobsBuffer() As Byte
List1.Clear
lngResult = OpenPrinter("äÇã �ÑäÊÑ", hPrinter, ByVal vbNullString)
lngJobsEnumJob = 99 ' total number of print jobs to enumerate
lngJobsLevel = 1
lngResult = EnumJobs(hPrinter, lngJobsFirstJob, lngJobsEnumJob, lngJobsLevel, _
ByVal vbNullString, 0, lngJobsNeeded, lngJobsReturned)
' Check out the number of jobs will be returned
If lngJobsNeeded > 0 Then
ReDim byteJobsBuffer(lngJobsNeeded - 1)
ReDim udtJobInfo1(lngJobsNeeded - 1)
lngResult = EnumJobs(hPrinter, lngJobsFirstJob, lngJobsEnumJob, _
lngJobsLevel, byteJobsBuffer(0), lngJobsNeeded, lngJobsNeeded, _
lngJobsReturned)
' Check out the number of jobs returned
If lngJobsReturned > 0 Then
For lngJobsCount = 0 To lngJobsReturned - 1
List1.AddItem "Job " & List1.ListCount
Next
End If
End If
End Sub
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.