امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
دفعات پرینت
نویسنده پیام
rouzbeh_ziafati آفلاین
تازه وارد

ارسال‌ها: 17
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۸۸

تشکرها : 2
( 2 تشکر در 2 ارسال )
ارسال: #1
دفعات پرینت
من می خوام تعداد دفعاتی که از گزارش پرینت میگیرم رو ثبت کنم .
چطور میشه این کار رو کرد ؟
۳۱-فروردین-۱۳۸۸, ۰۱:۳۶:۲۳
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #2
RE: دفعات پرینت
خب یه فایل تکست کنار برنامه ات بساز و توش عدد 0 رو ذخیره کن.
هر موقع روی دکمه پرینت کلیک شد، عددی که داخل فایل تکست هست رو بخون و اون رو با 1 جمع کن و دوباره توی فایل ذخیره کن.
این جوری متوجه می شی که چند بار پرینت شده.
همین کار رو می تونی توی Registry هم انجام بدی.
اگه واست مهمه که کسی به عدد دسترسی نداشته باشه می تونی اون رو تو خود فایل EXE ذخیره کنی
از DB هم می شه کمک گرفت

پارک24
مرجع خرید و فروش خودرو
۳۱-فروردین-۱۳۸۸, ۰۹:۴۲:۴۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sav68
sav68 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 219
موضوع‌ها: 27
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 469
( 126 تشکر در 47 ارسال )
ارسال: #3
RE: دفعات پرینت
نقل قول: اگه واست مهمه که کسی به عدد دسترسی نداشته باشه می تونی اون رو تو خود فایل EXE ذخیره کنی

يكم بيشتر توضيح ميدي لطفا؟

دنیا دو روز است یک روز با تو و یک روز علیه تو
روزی که با تو است مغرور نباش و روزی که علیه توست صبور باش
چون هر دو پایان پذیرند
حضرت علی ع

سال جديد بر پارسيان مبارك باد


من برای مدتی نیستم
۳۱-فروردین-۱۳۸۸, ۱۶:۵۴:۴۱
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #4
RE: دفعات پرینت
(۳۱-فروردین-۱۳۸۸, ۱۶:۵۴:۴۱)sav68 نوشته است: يكم بيشتر توضيح ميدي لطفا؟

شما می تونی یه برنامه داشته باشی و بهش بگی برو از بایت شماره 8000 توی خودت، یه کاراکتر رو بخون.
این کاراکتر می تونه همون عددی باشه که باید تعداد پرینت ها رو ثبت کنه. این عدد رو خود فایل، می تونه تغییر بده.
یعنی برنامه رو بایت 8000 ام خودش، تعداد دفعات پرینت رو ثبت می کنه.

اگه برنامه های تروجان رو دیده باشی، 2 تا فایل دارن. یه دونه Server، یه دونه Edit_Server
Server فایلی هست که باید برای قربانی بفرستی. مثلاً قراره وقتی فایل اجرا می شه یه پیغام ظاهر بشه. شما می خوای متن پیغام رو هر چی خواستی بذاری. پس توی برنامه Server می نویسی:
وقتی اجرا شدی، برو از بایت 67889 ام، بخون، یه عبارتی اونجا نوشته، اون رو توی Msgbox نمایش بده.
حالا می تونی با برنامه Edit_Server، بایت 67889 ام برنامه Server رو تغییر بدی و به تبعش، متن پیغام عوض می شه.
این هم یه نمونه مال خود ایرانویج: http://www.iranvig.com/3629.html

پارک24
مرجع خرید و فروش خودرو
۰۱-اردیبهشت-۱۳۸۸, ۱۱:۴۸:۴۸
وب سایت ارسال‌ها
پاسخ
rouzbeh_ziafati آفلاین
تازه وارد

ارسال‌ها: 17
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۸۸

تشکرها : 2
( 2 تشکر در 2 ارسال )
ارسال: #5
RE: دفعات پرینت
(۳۱-فروردین-۱۳۸۸, ۰۹:۴۲:۴۵)far_222000 نوشته است: خب یه فایل تکست کنار برنامه ات بساز و توش عدد 0 رو ذخیره کن.
هر موقع روی دکمه پرینت کلیک شد، عددی که داخل فایل تکست هست رو بخون و اون رو با 1 جمع کن و دوباره توی فایل ذخیره کن.
این جوری متوجه می شی که چند بار پرینت شده.
همین کار رو می تونی توی Registry هم انجام بدی.
اگه واست مهمه که کسی به عدد دسترسی نداشته باشه می تونی اون رو تو خود فایل EXE ذخیره کنی
از DB هم می شه کمک گرفت


این کار رو میشه در بانک هم انجام داد . مشکل من اینکه چطور تشخیص بدم که دکمه پرینت در قسمت گزارش گیری فشرده شده ! همون دکمه که بطور پیش فرض توی قسمت گزارش دیتا ریپورت اون بالا میاد
(آخرین ویرایش در این ارسال: ۰۴-اردیبهشت-۱۳۸۸, ۰۰:۴۱:۳۷، توسط rouzbeh_ziafati.)
۰۴-اردیبهشت-۱۳۸۸, ۰۰:۳۹:۱۵
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #6
RE: دفعات پرینت
یه برنامه با دیتاریپورت بذار، ببینم کجا رو می گی

پارک24
مرجع خرید و فروش خودرو
۰۴-اردیبهشت-۱۳۸۸, ۲۳:۳۳:۰۲
وب سایت ارسال‌ها
پاسخ
rouzbeh_ziafati آفلاین
تازه وارد

ارسال‌ها: 17
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۸۸

تشکرها : 2
( 2 تشکر در 2 ارسال )
ارسال: #7
RE: دفعات پرینت
(۰۴-اردیبهشت-۱۳۸۸, ۲۳:۳۳:۰۲)far_222000 نوشته است: یه برنامه با دیتاریپورت بذار، ببینم کجا رو می گی

شما برو اینجا و فایل رو دانلود کن لینک دانلود وسط صفحه هست قرمز .

در برنامه وقتی دکمه print رو کلیک کنی گزارش باز میشه . که تازه در اون صفحه گزارش شما می تونی از گزارش با کلیک کردن دکمه بالای صفحه سمت چپ پرینت بگیری .
http://www.a1vbcode.com/app-3663.asp
ضمنا این رو هم اضافه کنم . در یک فروم خارجی سوال رو مطرح کردم . این لینک رو بهم دادند .
اما اصلا نمی دونم چطوری کار می کنه !
http://www.merrioncomputing.com/Programm...rinter.htm
(آخرین ویرایش در این ارسال: ۱۰-اردیبهشت-۱۳۸۸, ۰۵:۵۱:۱۸، توسط rouzbeh_ziafati.)
۱۰-اردیبهشت-۱۳۸۸, ۰۵:۴۶:۱۶
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #8
RE: دفعات پرینت
این هم اون برنامه ای که می خواین!
وقتی برنامه رو اجرا می کنین با استفاده از API ها، تعداد پرینت هایی که همون موقع به پرینتر ارسال شدن رو بهتون نمایش می ده. البته می دونم که احتمال خطا هم وجود داره و مثلاً اگه نرم افزار دیگه ای هم پرینت فرستاده باشه، عددش با عددی که شما دنبالیش جمع می شه.
کد:
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) 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 Form_Load()
    'KPD-Team 2001
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim hPrinter As Long, lNeeded As Long, lReturned As Long
    Dim lJobCount As Long
    OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
    EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
    If lNeeded > 0 Then
        ReDim byteJobsBuffer(lNeeded - 1) As Byte
        EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned
        If lReturned > 0 Then
            lJobCount = lReturned
        Else
            lJobCount = 0
        End If
    Else
        lJobCount = 0
    End If
    ClosePrinter hPrinter
    MsgBox "Jobs in printer queue: " + CStr(lJobCount), vbInformation

End Sub
ویژوال بیسیک رو باز کنین، وارد بخش کد نویسی بشین. هر کدی که اونجا نوشته رو پاک کنین. این ها رو اونجا بنویسین. حالا برنامه رو اجرا کنین.

پارک24
مرجع خرید و فروش خودرو
۱۰-اردیبهشت-۱۳۸۸, ۱۱:۳۷:۴۲
وب سایت ارسال‌ها
پاسخ
rouzbeh_ziafati آفلاین
تازه وارد

ارسال‌ها: 17
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۸۸

تشکرها : 2
( 2 تشکر در 2 ارسال )
ارسال: #9
RE: دفعات پرینت
(۱۰-اردیبهشت-۱۳۸۸, ۱۱:۳۷:۴۲)far_222000 نوشته است: این هم اون برنامه ای که می خواین!
وقتی برنامه رو اجرا می کنین با استفاده از API ها، تعداد پرینت هایی که همون موقع به پرینتر ارسال شدن رو بهتون نمایش می ده. البته می دونم که احتمال خطا هم وجود داره و مثلاً اگه نرم افزار دیگه ای هم پرینت فرستاده باشه، عددش با عددی که شما دنبالیش جمع می شه.
کد:
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) 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 Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim hPrinter As Long, lNeeded As Long, lReturned As Long
Dim lJobCount As Long
OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
If lNeeded > 0 Then
ReDim byteJobsBuffer(lNeeded - 1) As Byte
EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned
If lReturned > 0 Then
lJobCount = lReturned
Else
lJobCount = 0
End If
Else
lJobCount = 0
End If
ClosePrinter hPrinter
MsgBox "Jobs in printer queue: " + CStr(lJobCount), vbInformation

End Sub
ویژوال بیسیک رو باز کنین، وارد بخش کد نویسی بشین. هر کدی که اونجا نوشته رو پاک کنین. این ها رو اونجا بنویسین. حالا برنامه رو اجرا کنین.




این کد رو تست کردم وقتی که می زنم چاپ با چاپگر اصلا چیزی رو تشخیص نمی ده و فقط 0 رو نشون میده . البته این رو هم بگم که در حالتی که با پرینتر مجازی چاپ میگیرم درست نشون میده اما وقتی که میزنم روی پرینتر نصب شده و حقیقی 0 نشون میده .
شما اگر می تونی رو اون برنامه که دادم این رو پیاده سازی کنی برام ممنوت میشم .
http://www.a1vbcode.com/app-3663.asp
(آخرین ویرایش در این ارسال: ۱۲-اردیبهشت-۱۳۸۸, ۰۲:۵۱:۰۲، توسط rouzbeh_ziafati.)
۱۱-اردیبهشت-۱۳۸۸, ۲۰:۲۹:۳۳
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #10
RE: دفعات پرینت
بالاخره یافتم!!!!! خودم کلی ذوق کردم! :d

خود دیتاریپورت یه Event داره به نام DataReport_AsyncProgress
این Event یه آرگومان داره به نام JobType
JobType می تونه سه مقدار رو به ما بده: rptAsyncPrint، rptAsyncExport، rptAsyncPreview

خوب پس با این حساب کد زیر به ما می گه که کی روی دکمه Print کلیک شده و کی روی دکمه Export

کد:
Private Sub DataReport_AsyncProgress(ByVal JobType As MSDataReportLib.AsyncTypeConstants, ByVal Cookie As Long, ByVal PageCompleted As Long, ByVal TotalPages As Long)

    Select Case JobType
        Case rptAsyncPrint
            MsgBox "Print"
        Case rptAsyncExport
            MsgBox "Export"
    End Select

End Sub
فقط یادت نره این Event ماله دیتاریپورت هستش یه وقت توی فرم،Paste نکنی!!!(باید روی DataReport کلیک کنی تا به محیط کد نویسی وارد بشی، بعد اونجا این کد رو Paste کنی)

پارک24
مرجع خرید و فروش خودرو
۱۲-اردیبهشت-۱۳۸۸, ۱۱:۳۱:۳۴
وب سایت ارسال‌ها
پاسخ
rouzbeh_ziafati آفلاین
تازه وارد

ارسال‌ها: 17
موضوع‌ها: 5
تاریخ عضویت: فروردین ۱۳۸۸

تشکرها : 2
( 2 تشکر در 2 ارسال )
ارسال: #11
RE: دفعات پرینت
(۱۲-اردیبهشت-۱۳۸۸, ۱۱:۳۱:۳۴)far_222000 نوشته است: بالاخره یافتم!!!!! خودم کلی ذوق کردم! :d

خود دیتاریپورت یه Event داره به نام DataReport_AsyncProgress
این Event یه آرگومان داره به نام JobType
JobType می تونه سه مقدار رو به ما بده: rptAsyncPrint، rptAsyncExport، rptAsyncPreview

خوب پس با این حساب کد زیر به ما می گه که کی روی دکمه Print کلیک شده و کی روی دکمه Export

کد:
Private Sub DataReport_AsyncProgress(ByVal JobType As MSDataReportLib.AsyncTypeConstants, ByVal Cookie As Long, ByVal PageCompleted As Long, ByVal TotalPages As Long)

Select Case JobType
Case rptAsyncPrint
MsgBox "Print"
Case rptAsyncExport
MsgBox "Export"
End Select

End Sub
فقط یادت نره این Event ماله دیتاریپورت هستش یه وقت توی فرم،Paste نکنی!!!(باید روی DataReport کلیک کنی تا به محیط کد نویسی وارد بشی، بعد اونجا این کد رو Paste کنی)



مرسی واقعا ، خیلی لطف کردی .
حالا یه مشکل دیگه که اگر حل بشه خیلی خوب میشه .
در پنجره print setup میشه تعیین کرد که از صفحه چند بار کپی (پرینت گرفته بشه ) . چطور میشه تعداد کپی ( پرینتی) که از گزارش گرفته میشه رو تشخیص داد؟ کسی راهی بلده ؟
۱۴-اردیبهشت-۱۳۸۸, ۰۰:۵۵:۳۹
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  پرینت از دیتا گرید ویو mahdi61 2 3,767 ۰۵-دى-۱۳۹۵, ۱۱:۰۲:۳۴
آخرین ارسال: mahdi61
  درخواست کد پرینت گراف در PictureBox برای VB6 javad917 11 9,818 ۱۲-تير-۱۳۹۳, ۱۳:۳۸:۱۳
آخرین ارسال: javad917
  ارور در پرینت automa 2 3,060 ۳۰-دى-۱۳۹۱, ۱۷:۴۸:۴۶
آخرین ارسال: automa
  پرینت با کادر محاوره print مرد یخی 2 3,486 ۲۶-آبان-۱۳۹۰, ۱۹:۱۷:۳۶
آخرین ارسال: مرد یخی
  کمک در مورد پرینت گرفتن...فوری و ضروری mohammadbm 9 8,578 ۲۲-خرداد-۱۳۸۸, ۱۶:۰۴:۵۹
آخرین ارسال: PouriaAmid
  پرینت گرفتن از ترسیمات پیکچر باکس فاطمه وطن دوست 6 4,231 ۳۱-مرداد-۱۳۸۷, ۱۹:۲۲:۲۹
آخرین ارسال: meno
  پرینت گرفتن از مقدایر موجود در لیست Vig 3 2,966 ۰۶-اردیبهشت-۱۳۸۷, ۱۲:۵۹:۲۳
آخرین ارسال: ajlajlajl
  پرینت صفحه وب eidazha 4 3,445 ۲۶-خرداد-۱۳۸۵, ۱۵:۱۹:۳۹
آخرین ارسال: behzad-khazama

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS