ورود

View Full Version : حذف کردن دکمه پرینت اسکرین



h_mohamadi
چهارشنبه 24 شهریور 1389, 09:23 صبح
سلام بر دوستان خوب
من یک برنامه دارم که پرینت آن با فست ریپورت است و من می خواهم که موقعی که پیش نمایش پرینت در حال نشان دادن است کاربر نتواند از آن هیچ مستندی تهیه کند به این خاطر من امکان پرینت را در این برنامه بسته ام فقط این می ماند که کاربر از صفحه پرینت اسکرین بگیرد و آن را در برنامه paint یک فایل عکسی بسازد و پرینت بگیرد.
می خواستم بدانم از چه دستورری استفاده کنم ک نتواند این کار را انجام دهد؟

Felony
چهارشنبه 24 شهریور 1389, 11:15 صبح
کد زیر رو براتون نوشتم ، وقتی فکوس روی برنامه خودتون باشه اگر دکمه Print Screen فشار داده بشه حافظه موقت رو خالی میکنه :


procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean);
begin
if GetAsyncKeyState(VK_SNAPSHOT) <> 0 then
if Clipboard.HasFormat(CF_Picture) then
Clipboard.Clear;
Done := True;
end;

کد زیر رو هم در رویداد OnCreate فرمتون بنویسید :

Application.OnIdle := Form1.AppIdle;
--------------------
کد زیر رو براتون نوشتم ، وقتی فکوس روی برنامه خودتون باشه اگر دکمه Print Screen فشار داده بشه حافظه موقت رو خالی میکنه :


procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean);
begin
if GetAsyncKeyState(VK_SNAPSHOT) <> 0 then
if Clipboard.HasFormat(CF_Picture) then
Clipboard.Clear;
Done := True;
end;

کد زیر رو هم در رویداد OnCreate فرمتون بنویسید :

Application.OnIdle := Form1.AppIdle;

اگر میخواین وقتی فوکوس روی برنامه خودتون هم نبود این کار انجام بشه باید کلیدهای صفحه کلید رو به صورت Global هوک کنید ، همین کلمه هوک رو در سایت جست و جو کنید .

esmit61
چهارشنبه 24 شهریور 1389, 13:06 عصر
خوب برنامه های زیادی هستند که مبتنی بر کلید print screen نیستند. مثلاً snipping tool
در کل فکر نکنم راهی وجود داشته باشه

devil00x
پنج شنبه 25 شهریور 1389, 08:48 صبح
البته یک روش غیر مهندسیش اینه که وقتی وارد صفحه پیش نمایش شد تو یه تایمر مدام بیای Clipboard.Clear; رو اجرا کنی.
حالا چرا میخای همچین کاری و انجام بدی؟

MohsenB
پنج شنبه 25 شهریور 1389, 14:23 عصر
یه راه آسون و زیرکانه بردن فرم گزارش به حالت آلفابلیند هستش
البته این حالت تو ویندوز ایکس پی عمل می کنه و فرم تو حالت آلفا تو عکس نمیفته .

صابر طهماسبی
پنج شنبه 25 شهریور 1389, 18:11 عصر
اگه بخوای کلا جلوی سرقت اطلاعات رو بگیری امکان پذیر نیست چون فرضا اگه به طور کلی در کامپیوتر این امکان وجود نداشته باشد طرف می تونه از مانیتور با دوربین عکس بگیره!

h_mohamadi
شنبه 27 شهریور 1389, 21:43 عصر
ممنونم از راهنمايي دوستان
ولي عکس از مانيتور ديگر مستندي با کيفيت نيست. و من به نتيجه رسيدم با کمک آقاي مجتبی تاجیک (http://barnamenevis.org/forum/member.php?u=63881)

h_mohamadi
سه شنبه 30 شهریور 1389, 18:45 عصر
کد زیر رو براتون نوشتم ، وقتی فکوس روی برنامه خودتون باشه اگر دکمه Print Screen فشار داده بشه حافظه موقت رو خالی میکنه :


procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean);
begin
if GetAsyncKeyState(VK_SNAPSHOT) <> 0 then
if Clipboard.HasFormat(CF_Picture) then
Clipboard.Clear;
Done := True;
end;کد زیر رو هم در رویداد OnCreate فرمتون بنویسید :

Application.OnIdle := Form1.AppIdle;--------------------
کد زیر رو براتون نوشتم ، وقتی فکوس روی برنامه خودتون باشه اگر دکمه Print Screen فشار داده بشه حافظه موقت رو خالی میکنه :


procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean);
begin
if GetAsyncKeyState(VK_SNAPSHOT) <> 0 then
if Clipboard.HasFormat(CF_Picture) then
Clipboard.Clear;
Done := True;
end;کد زیر رو هم در رویداد OnCreate فرمتون بنویسید :

Application.OnIdle := Form1.AppIdle;اگر میخواین وقتی فوکوس روی برنامه خودتون هم نبود این کار انجام بشه باید کلیدهای صفحه کلید رو به صورت Global هوک کنید ، همین کلمه هوک رو در سایت جست و جو کنید .

با تشکر اين رويدادي که نوشته ايد را کجا بايد بگذارم و آيا بايد يونيتي را در uses فرم بگذارم؟؟؟

h_mohamadi
یک شنبه 04 مهر 1389, 16:57 عصر
کسی به ما کمک نمی کند؟؟؟؟؟؟؟؟!!!!!!

SAASTN
یک شنبه 04 مهر 1389, 17:05 عصر
با تشکر اين رويدادي که نوشته ايد را کجا بايد بگذارم و آيا بايد يونيتي را در uses فرم بگذارم؟؟؟
همه چیز رو که توضیح دادند. مشکل چیه؟
تنها چیز دیگه ای که باید اضافه بکنید:
procedure AppIdle(Sender: TObject; var Done: Boolean);
این خط رو باید به تعریف کلاس Form1 اضافه بکنید و توی همون یونیت هم باقی مسائل...

h_mohamadi
دوشنبه 05 مهر 1389, 08:14 صبح
دوستان به خط زیر گیر می دهد
if Clipboard.HasFormat(CF_Picture) then Clipboard.Clear;
کلمه
Clipboard را نمی شناسد


خواهشن کمک کنید

Felony
دوشنبه 05 مهر 1389, 08:51 صبح
دوستان به خط زیر گیر می دهد
if Clipboard.HasFormat(CF_Picture) then Clipboard.Clear;
کلمه
Clipboard را نمی شناسد


خواهشن کمک کنید

کتابخانه Clipbrd رو به Uses اضافه کنید .

h_mohamadi
سه شنبه 06 مهر 1389, 16:52 عصر
خیلی از دوستان ممنونم فقط محبت کنید همیشه کامل راهنمایی فرمائید که مثل من مبتدی هم کارش راه افتد