PDA

View Full Version : سوال: سیاه شدن قسمتی از فرم موقع عکس گرفتن



sajioo
پنج شنبه 05 آبان 1390, 12:53 عصر
سلام و درود به همه:لبخند:
پاییز بر همه مبارک :قلب:
دوستان یک سوال داشتم راستش مطمئن نیستم عملی بشه اما از اونجای که هرچیزی در این دنیا ممکنه شاید این هم بشه.
فرض اینه که من یک فرم دارم که در یک قسمتش یک عکس قرار داره.
شما می دونید که با زدن دکمه prt sc در کیبورد از صفحه نمایش عکس گرفته میشه. می خوام اگه فرم من بالا بود یا تمامش یا حداقل اون قسمتی که عکس هست سیاه بشه یا اصلا در عکس نیافته.
برخی برنامه ها هم از صفحه نمایش عکس می گیرند. می خوام اون برنامه ها هم نتونن عکس بگیرن از فرم من.
کسی راهی یا راهکاری بلده؟ :متفکر:

MohsenB
پنج شنبه 05 آبان 1390, 13:06 عصر
سلام

اگه از ویندوز ایکس پی استفاده میکنید ، وقتی AlphaBland فرم فعال باشه وقتی از صفحه عکس میگیرین اون فرم نمایش داده نمیشه .


موفق باشید .

sajioo
پنج شنبه 05 آبان 1390, 13:11 عصر
با تشکر از محسن عزیز اما فرض من بر روی هر ویندوزی هست .حالا این راه برای xp . دیگر ویندوزا چی؟ :متفکر:

sajioo
پنج شنبه 05 آبان 1390, 21:10 عصر
دوستان اگه کل فرم هم مخفی بشه ایراد نداره. راه حلی نیست؟

Felony
پنج شنبه 05 آبان 1390, 22:11 عصر
خیلی وقت پیش همچین تاپیکی زده شده بود میتونید دنبالش بگردید ؛ بهترین راه این هست که وقتی فرم برنامتون باز هست و دکمه Print Screen زده شد Clip Board رو خالی کنید .

کامروا
پنج شنبه 05 آبان 1390, 22:14 عصر
کد اسکی Print Scr چی هست؟
آخه الان میخوام اینو امتحان کنم...:لبخندساده:

سعید صابری
پنج شنبه 05 آبان 1390, 22:44 عصر
VK_SNAPSHOT یا 44

sajioo
جمعه 06 آبان 1390, 11:34 صبح
خوب این شاید برای دکمه prt sc کاربرد داشته باشه اما!!!!!
یکسری برنامه ها از دسکتاپ عکس می گیرن. اونا رو چه راه حلی پیشنهاد می کنید؟
راستی کامروا جان اگه کد نمونه داری در این مورد لطفا بذار. چطوری بفهمیم که prt sc زده شده و چطور clip board رو پاک کنیم؟
اگه میشه یک راهنمایی هم در این مورد بشه

سعید صابری
جمعه 06 آبان 1390, 13:36 عصر
برای کار با clipbord
برای مثال


uses clipbrd;
var
c:TClipboard;
begin
c:=TClipboard.Create;
if c.AsText <> '' then
c.Clear;

sajioo
جمعه 06 آبان 1390, 14:42 عصر
چطور بفهمم کلیک prt scr زده شده؟

کامروا
جمعه 06 آبان 1390, 17:37 عصر
این کد بالایی کار نمیکنه. نبازی به این کار نیست
فقط این رو توی تایمر بنویس درست میشه


Uses Clipbrd
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Clipboard.Clear;
end;

تا زمانی که برنامه شما Run هست تامیر clipboard رو خالی میکنه
موفق باشید

سعید صابری
جمعه 06 آبان 1390, 22:18 عصر
این دیگه چه کاریه حق استفاده از clipbord از کاربر بگیریم؟
به جای این کار فقط دکمه prtsc از کار میندازیم. اینو ببیبنید

کامروا
جمعه 06 آبان 1390, 22:49 عصر
حق با شماست. من که نتونستم برنامه رو Run کنم!
ولی بهتره کد بالا رو درست کنم. بهتر فقط عکس های کلیپ برد رو خالی کنیم، نه همه رو
با این کد:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Clipboard.HasFormat(CF_PICTURE) Then
Clipboard.Clear;
end;

از این برنامه هم میشه واسه کلا قفل کردن Prt_Src استفاده کرد. همون که آقای minair2004 (http://barnamenevis.org/member.php?63560-minair2004) میگن


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
id4: Integer;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = id4 then
ShowMessage('Print Screen Passed');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
id4 := GlobalAddAtom('Hotkey4');
RegisterHotKey(Handle, id4, 0, VK_SNAPSHOT);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, id4);
GlobalDeleteAtom(id4);
end;

end.



در پناه حق

mbshareat
جمعه 06 آبان 1390, 23:07 عصر
سلام
من تونستم برنامه رو اجرا کنم (چند تا کارکتر بی معنا قبل از unit Unit1; بود!)
اما باز هم تونستم تصویر رو تو Paint الصاق کنم!