PDA

View Full Version : جلوگیری از کپی عکس توی دلفی



bigboy_user
شنبه 11 اردیبهشت 1389, 17:45 عصر
با سلام به دوستان !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
دارم یه برنامه توی دلفی 7 می نویسم که یه سری عکسها را به کاربر نشون میده
عکسها کم یاب و خیلی روشون کار شده ،
حالا میخوام کاربر نتونه اون عکسها را کپی کنه ، البته با یه روش تونستم جلوی کپی برداری عکس با دکمهprint screen را بگیرم
مشکل اصلی من نرم افزارهایی که از صفحه نمایش عکس میگیرن مثل snagit که خیلی قوی و میشه تنظیمش کرد و هر مثلا 50 ثانیه از صفحه نمایش عکس بگیره !!!!!!!!!!!!
میشه جلوی این برنامه را از توی دلفی گرفت یا چه میدونم lmage خودم یه جوری توی دلفی lock کنم ؟؟؟

معرفی یه سورس میتونه خیلی کمکم کنه
سپـــــــــــــــــــــــ ــاس

حسین شهریاری
شنبه 11 اردیبهشت 1389, 21:10 عصر
واقعا این تصاویر این قدر مهم هستند؟
فکر نمیکنم اینقدرها ارزش داشته باشه که شما زمان با ارزشتونا براش تلف کنید.(البته نظر من هست)

ولی به هر حال با زا کار انداختن کلید PrintScren و توابع کارسازی که توی API های ویندوز هست این کار نیز شدنی است.
به کتابی که انتشارات ناقوس(اگه املاشا درست نوشته باشم) چند سال پیش به نام توابع API منتشر کرد مراجعه کنید.

موفق باشید

Felony
شنبه 11 اردیبهشت 1389, 21:28 عصر
ولی به هر حال با زا کار انداختن کلید PrintScren و توابع کارسازی که توی API های ویندوز هست این کار نیز شدنی است.
کار ساز نیست ، شما توابعی که خودمون با دلفی برای print Screen گرفتن مینویسیم رو ببینید ، اونها رو چه طور میخواین کنترل کنید ؟

tdkhakpur
شنبه 11 اردیبهشت 1389, 21:57 عصر
میشه جلوی این برنامه را از توی دلفی گرفت یا چه میدونم lmage خودم یه جوری توی دلفی lock کنم ؟؟؟

فقط یه کار میتوانید انجام بدید و اون اینکه وقتی برنامه شما اجرا شد صفحه کلید و همچنین ماوس را هوک کنید اما زنجیره انتهایی را قفل کنید (منظور next نکنید) تا کنترل ماوس و صفحه کلید فقط متعلق به برنامه جاری شما باشد.
امیدوارم تقاضای کد نکنید وقت میگیره ولی دوستان کدهایی خوبی برای هوک کردن ماوس و صفحه کلید ارائه دادن میتوانید تغییرات لازم را بدید.

Felony
شنبه 11 اردیبهشت 1389, 22:04 عصر
فقط یه کار میتوانید انجام بدید و اون اینکه وقتی برنامه شما اجرا شد صفحه کلید و همچنین ماوس را هوک کنید اما زنجیره انتهایی را قفل کنید (منظور next نکنید) تا کنترل ماوس و صفحه کلید فقط متعلق به برنامه جاری شما باشد.
با هوک کار درسته نمیشه ، ممکنه یه برنامه بنویسن و تو یه تایمر از صفحه عکس بگیرن ، اون وقت هوک کارساز نیست .

tdkhakpur
شنبه 11 اردیبهشت 1389, 23:03 عصر
با هوک کار درسته نمیشه ، ممکنه یه برنامه بنویسن و تو یه تایمر از صفحه عکس بگیرن ، اون وقت هوک کارساز نیست .
ایشان نکته زیر را مد نظر گرفته اند بالاخره وقتی چیزی با چشم دیده میشود نمیتوان پنهان کرد با استفاده از کارت های تصویری هم میشه تصویر را به جاهای دیگر هدایت کرد.


مشکل اصلی من نرم افزارهایی که از صفحه نمایش عکس میگیرن مثل snagit که خیلی قوی و میشه تنظیمش کرد و هر مثلا 50 ثانیه از صفحه نمایش عکس بگیره !!!!!!!!!!!!

مهران رسا
شنبه 11 اردیبهشت 1389, 23:05 عصر
میتونید عکس هارو Full size یا True Color در معرض نمایش قرار ندید . برای مثال تصاویر به صورت پیشفرض مات یا کوچک باشند و زمانی که مواس روی قسمتی از عکس قرار میگیره ، فقط اون ناحیه شفاف و یا Zoom بشه . البته بازم باید دید جزئیات کار به چه صورت هست .

bigboy_user
یک شنبه 12 اردیبهشت 1389, 17:50 عصر
میتونید عکس هارو Full size یا True Color در معرض نمایش قرار ندید . برای مثال تصاویر به صورت پیشفرض مات یا کوچک باشند و زمانی که مواس روی قسمتی از عکس قرار میگیره ، فقط اون ناحیه شفاف و یا Zoom بشه . البته بازم باید دید جزئیات کار به چه صورت هست .

[COLOR="Black"]باسپاس ازهمه دوستان
روشی هم که m8spy گفته روش خوبی منتها عکسهای من یه حالت آموزش دارن و کاربر میخواد واسه یه چند دقیقه هم که شده عکس بصورت واقعی ببینه !!!!!!!!
حالا واقعا روشی نیست ؟؟؟؟
من خودم چند تا نظریه دارم اما نمیدونم عملی هست و اگه هست چطوری توی دلفی پیادش کنم :
1)برنامه هایی که دارن از صفحه نمایش عکس میگیرن ، یه جایی عکس مثلا Temp یا هر مسیر دیگری کپی میکنند،اگه بشه هر چی فایل توی اون مسیر هرچند ثانیه پاک بشه ( من مسیر پیش فرض Snagit نتونستم پیدا کنم !!!!!)
2)عکس مد نظر طوری لود بشه که جز صفحه نمایش نباشه ، مثلا یه Screen مجازی تعریف کنیم :متعجب:
3) ......

Felony
یک شنبه 12 اردیبهشت 1389, 19:15 عصر
1)برنامه هایی که دارن از صفحه نمایش عکس میگیرن ، یه جایی عکس مثلا Temp یا هر مسیر دیگری کپی میکنند،اگه بشه هر چی فایل توی اون مسیر هرچند ثانیه پاک بشه ( من مسیر پیش فرض Snagit نتونستم پیدا کنم !!!!!)
در حافظه کپی میکنن !


2)عکس مد نظر طوری لود بشه که جز صفحه نمایش نباشه ، مثلا یه Screen مجازی تعریف کنیم
صفحه مجازی در هر صورت در صفحه اصلی مانیتور شما نشون داده میشه یا نه ؟ نکنه میخواین عکس رو کاربر در ذهنش به صورت مجازی فرض کنه ؟

vcldeveloper
دوشنبه 13 اردیبهشت 1389, 01:20 صبح
راه حل 100% ایی برای این کار وجود نداره. اگر میخواید کاربر نتونه بعضی فرامین خاص را از طریق کیبورد یا موس به سیستم بده، باید موس و کیبورد را هوک کنید. البته همانطور که برنامه شما میتونه آنها را هوک کنه، برنامه های دیگه هم می تونند آنها را هوک کنند، و کار شما را بی اثر کنند.

راهکار دیگه ایجاد یک Desktop توسط برنامه شما، و نمایش پنجره برنامه ها در آن Desktop هست. در اون صورت، برنامه هایی که Screen Capture می کنند، تصویری که Capture میشه، مربوط به همان Desktopایی هست که برنامه به آن تعلق داره، نه Desktop ایی که برنامه شما ایجاد کرده. البته اگر برنامه مربوطه مطلع باشه که شما Desktop رو سوئیچ کردید، و دسترسی های لازم رو هم داشته باشه، میتونه از Desktop شما هم تصویر بگیره. این همون کاری هست که پنجره لاگین ویندوز یا پنجره نمایش پیام های UAC در ویندوز ویستا و ویندوز 7 انجام میدند. با این تفاوت که Desktopایی که اونها استفاده می کنند،Secure هست، و Processهای سایر Desktopها نمی تونند بهش دسترسی داشته باشند، و Process اون Secure Desktop هم نمیتونه به سایر Desktopها سوئیچ کنه. در هر حال، این روش پیچیده تری هست، و دور زدن آن سخت تر هست. البته برای انجام همچین کاری باید با مفهوم Desktop, Window Station, و Session در ویندوز آشنا باشید، و بدونید که ارتباطشون با هم چگونه هست:

http://msdn.microsoft.com/en-us/library/ms682573%28v=VS.85%29.aspx

راهکار دیگه این هست که عکس ها را Watermarked کنید؛ یعنی یک تصویر کم رنگ روی عکس ها ثبت کنید، که بیان کننده مالکیت شما بر عکس ها باشه. در اون صورت، اگر عکس ها Capture هم بشند، با نشانه شما Capture شدند، و در صورت استفاده از اون تصاویر در سایر جاها، به راحتی منبع عکس قابل کشف هست، و معمولا تصاویر Watermarked شده برای افراد و شرکت ها قابل استفاده نیستند، مگر اینکه فرد بخواد بصورت شخصی از اون تصاویر استفاده کنه، و قصد انتشار آنها را نداشته باشه.

البته می تونید ترکیبی از این روش ها را هم استفاده کنید.

DAMAVAND
دوشنبه 13 اردیبهشت 1389, 03:01 صبح
مشکل شما خيلي راحت تر از اين حرفها حل ميشه.
ببينيد وقتي يه برنامه ميخواد از صفحه نمايش عکس بگيره صرف نظر از اينکه چه برنامه اي هستش ,عکس گرفته شده رو اول در Clipboard ذخيره ميکنه حالا اگه شما Clipboard رو قفل کني به هيچ وجه امکان کپي نه عکس نه هيچ چيز ديگه وجود نداره ! براي اين کار هم کافيه از تابع OpenClipboard استفاده کنيد تا وقتي که برنامه شما درحال اجرا باشه عکس قابليت کپي در رو OpenClipboard نداره .
برنامه رو اجرا کنيد بعد خودتون با PrintScreen از صفحه عکس بگيريد بعد بريد تو Paint ميبينيد که چيزي براي Copy کردن نيست ....


procedure TForm1.FormCreate(Sender: TObject);
begin
OpenClipboard(Handle);
end;

براي آزاد کردن Clipboard هم ميتونيد يا برنامتون رو ببنديد يا از اين تابع CloseClipboard استفاده کنيد .

vcldeveloper
دوشنبه 13 اردیبهشت 1389, 05:12 صبح
مشکل شما خيلي راحت تر از اين حرفها حل ميشه.
ببينيد وقتي يه برنامه ميخواد از صفحه نمايش عکس بگيره صرف نظر از اينکه چه برنامه اي هستش ,عکس گرفته شده رو اول در Clipboard ذخيره ميکنهاین هم یک برنامه ساده که تصویر صفحه نمایش رو Capture میکنه؛ شما ببینید آیا از Clipboard استفاده میکنه؟ یا مانیتور کردن Clipboard مانع اون میشه یا نه:

procedure CaptureWindow(Source: THandle; Dest: TBitmap);
var
SourceCanvas : TCanvas;
SourceRect : TRect;
begin
if (Source <=0) or (not Assigned(Dest)) then
raise Exception.Create('Wrong parameters.');

SourceCanvas := TCanvas.Create;
try
SourceCanvas.Handle := GetWindowDC(Source);
GetWindowRect(Source, SourceRect);
Dest.Width := SourceRect.Right;
Dest.Height := SourceRect.Bottom;
Dest.Canvas.CopyRect(Rect(0,0,Dest.Width,Dest.Heig ht),SourceCanvas,SourceRect);
finally
SourceCanvas.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CaptureWindow(GetDesktopWindow,Image1.Picture.Bitm ap);
end;

DAMAVAND
دوشنبه 13 اردیبهشت 1389, 06:30 صبح
این هم یک برنامه ساده که تصویر صفحه نمایش رو Capture میکنه؛ شما ببینید آیا از Clipboard استفاده میکنه؟ یا مانیتور کردن Clipboard مانع اون میشه یا نه:



کاملا درست ميفرماييد فکر اينجا رو نکرده بودم. تعميم دادن به همه برنامه ها درست نبود. شايد بقول دوستان هيچ راه کاملي براي اين کار وجود نداشته باشه بجز همون Watermarked که قبلا خودتون اشاره کرديد .

alinikaein
دوشنبه 13 اردیبهشت 1389, 15:14 عصر
سلام؛

اين ايده يه دفعه به ذهنم رسيد، نمي‌دونم درست هست يا نه و آيا قابل پياده‌سازي هست يا نه.

احتمال داره اگه بتوني روي صفحه نمايش، يك نويز با فركانس مشخصي كه براي چشم انسان قابل تشخيص نباشه، ايجاد كني، با توجه به اين كه برنامه‌اي كه مي‌خواد از صفحه نمايش عكس بگيره، قاعدتاً نياز به زماني بيشتر از يك پريود از اين فركانس داره، بسته به فركانس، مقداري از تصوير ذخيره نمي‌شه.

ولي آيا واقعاً اين ايده عملي هست يا نه و از نظر تئوري صحيح هست يا نه، نمي‌دونم. دوستان در اين زمينه راهنمايي كنند.

bigboy_user
دوشنبه 13 اردیبهشت 1389, 16:01 عصر
هکار دیگه این هست که عکس ها را Watermarked کنید؛ یعنی یک تصویر کم رنگ روی عکس ها ثبت کنید، که بیان کننده مالکیت شما بر عکس ها باشه. در اون صورت، اگر عکس ها Capture هم بشند، با نشانه شما Capture شدند، و در صورت استفاده از اون تصاویر در سایر جاها، به راحتی منبع عکس قابل کشف هست، و معمولا تصاویر Watermarked شده برای افراد و شرکت ها قابل استفاده نیستند، مگر اینکه فرد بخواد بصورت شخصی از اون تصاویر استفاده کنه، و قصد انتشار آنها را نداشته باشه.
اما خب عکسی که watermarket شده اول کپی میشه بعد مثلا توی فتوشاپ ویرایش میشه و نشونه ای که من گذاشتمو بر میدارن درسته ؟؟؟:افسرده:

من Clipboard ویندوز با استفاده از دستور Clipboard.clear هر 1 ثانیه توی تایمر پاک میکنم ولی همانطور که دوستمون کشاورز گفتن این مشکل حل نمی کنه
من با برنامه snagit را کارمیکنم که فکر کنم از چیزی شبیه سورسی که آقای کشاورز گذاشتن استفاده میکنه و پاک کردن clipboard ویندوز تاثیری نداره !!!!!
پاک کردن clipboard میتونه جلوی دکمه ptint screen رابگیره

DAMAVAND
دوشنبه 13 اردیبهشت 1389, 20:21 عصر
اما خب عکسی که watermarket شده اول کپی میشه بعد مثلا توی فتوشاپ ویرایش میشه و نشونه ای که من گذاشتمو بر میدارن درسته ؟؟؟:افسرده:

من Clipboard ویندوز با استفاده از دستور Clipboard.clear هر 1 ثانیه توی تایمر پاک میکنم ولی همانطور که دوستمون کشاورز گفتن این مشکل حل نمی کنه
من با برنامه snagit را کارمیکنم که فکر کنم از چیزی شبیه سورسی که آقای کشاورز گذاشتن استفاده میکنه و پاک کردن clipboard ویندوز تاثیری نداره !!!!!
پاک کردن clipboard میتونه جلوی دکمه ptint screen رابگیره

شما چرا هر يک ثانيه اين کار رو ميکنيد ??? !!!!!! اگه اون کدي که من گذاشتم رو استفاده کنيد
احتياجي به تايمر و مرتب پاک کردن که نيست فقط يک بار ! clipboard رو قفل ميکنه !
ولي خوب همون طوري که بحث شد براي همه برنامها جواب نميده ...

watermarket بستگي داره چطوري باشه اگه اسمتون رو گوشه عکس مينويسيد که با Paint هم ميشه پاکش کرد . منظور watermarket هايي هست که بصورت يک نوشته کم رنگ روي تمام عکس رو ميپوشونه و پاک کردنش با فتوشاپ خيلي سخته ....

Felony
دوشنبه 13 اردیبهشت 1389, 20:33 عصر
اگه اون کدي که من گذاشتم رو استفاده کنيد
احتياجي به تايمر و مرتب پاک کردن که نيست فقط يک بار ! clipboard رو قفل ميکنه !
کدی که شما گزاشتید در این مورد کاربرد نداره ، به دست گرفتن ClipBoard توسط برنامه برای زمانی هست که شما میخواین طی مدت زمان بسیار کوتاهی ( 1 الی 2 ثانیه ) ClipBoard در اختیار برنامه شما باشه تا داده های مورد نظرتون به وسیله اون انتقال داده بشه و بعد CliPBoard به حالت عادی بازگرده نه اینکه در تمام طول مدت زمان اجرای برنامه CliPBoard در اختیار برنامه شما باشه ، اونوقت کاربر بیچاره اگر بخواد یک متن یا ... رو کپی کنه 1000 تا ناسزا به شما و برنامتون میده !

vcldeveloper
دوشنبه 13 اردیبهشت 1389, 23:03 عصر
به دست گرفتن ClipBoard توسط برنامه برای زمانی هست که شما میخواین طی مدت زمان بسیار کوتاهی ( 1 الی 2 ثانیه ) ClipBoard در اختیار برنامه شما باشه تا داده های مورد نظرتون به وسیله اون انتقال داده بشه و بعد CliPBoard به حالت عادی بازگرده
برای کنترل Clipboard و اون چیزی که منظور آقایا DAMAVAND هست، نیازی به قفل کردن Clipboard نیست، فقط کافیه یک Clipboard Monitor نوشته بشه که به طور خودکار هر زمان چیزی وارد Clipboard میشه، توسط ویندوز فراخوانی میشه، و برنامه نویس میتونه با بررسی نوع فرمت (مثلا اگر IMAGE بود)، Clipboard رو خالی کنه.

bigboy_user
سه شنبه 14 اردیبهشت 1389, 17:58 عصر
بهترین راه حلی که من دیدم همون watermarket
البته میشه clipboard ,پاک کرد بعدش هم یه سر از برنامه ها را که عملیات کپچر را انجام میدن را توی محیط برنامه نویسی لیست کرد و بعد end process کرد ، که باز هم 100% عملی نیست ولی خوب واسه کاربرهای عادی فکر میکنم کافی باشه

alinikaein
سه شنبه 14 اردیبهشت 1389, 20:12 عصر
سلام؛

اين ايده يه دفعه به ذهنم رسيد، نمي‌دونم درست هست يا نه و آيا قابل پياده‌سازي هست يا نه.

احتمال داره اگه بتوني روي صفحه نمايش، يك نويز با فركانس مشخصي كه براي چشم انسان قابل تشخيص نباشه، ايجاد كني، با توجه به اين كه برنامه‌اي كه مي‌خواد از صفحه نمايش عكس بگيره، قاعدتاً نياز به زماني بيشتر از يك پريود از اين فركانس داره، بسته به فركانس، مقداري از تصوير ذخيره نمي‌شه.

ولي آيا واقعاً اين ايده عملي هست يا نه و از نظر تئوري صحيح هست يا نه، نمي‌دونم. دوستان در اين زمينه راهنمايي كنند.

آقاي كشاورز در مورد اين ايده‌اي كه من گفتم، نظري نداريد؟

DAMAVAND
سه شنبه 14 اردیبهشت 1389, 20:52 عصر
اصلا برنامه اي که عکس ميگيره با نويز و صفحه نمايش کاري نداره !
شما تصورتون از عکس گرفتن برنامه اين هستش که برنامه مثل دوربين عکاسي مياد از صفحه نمايش عکس ميگيره ! در حالي که اين طور نيست برنامه در واقع با بدست آوردن پنجره زمينه گرافيگي عکس مورد نظر رو بدست مياره. حالا شما يه نويز 1 G Hz درست کن بفرست رو مانيتور هر چند اصلا بيشتر از 120 Hz امکان نداره

بعدش حتي اگه بر فرض محال هم بشه دقت کنيد ميگم بر فرض محال اين چه کاري هست که براي کپي نشدن يه عکس بخواهيم نويز بسازيم اصلا کامپيوتر رو منفجر کنيم که راحت تره که !

vcldeveloper
سه شنبه 14 اردیبهشت 1389, 23:42 عصر
آقاي كشاورز در مورد اين ايده‌اي كه من گفتم، نظري نداريد؟
همانطوری که دوستان ذکر کردند، نویز شما فقط روی کار مانیتور اخلال ایجاد میکنه، ولی دریافت تصویر ربطی به مانیتور نداره. شما اگر مانیتورتان خاموش هم باشه، یک نرم افزار میتونه تصویر یک پنجره را دریافت و ذخیره کنه. روش شما زمانی به درد میخوره که بخوایم مانع از تصویربرداری با دوربین بشیم. مثلا در بعضی از سینماها در خارج از کشور، برای جلوگیری از ضبط فیلم از روی پرده سینما، سیگنال هایی در سالن پخش میشه، یا از نور مادن قرمز استفاده میشه، که برای انسان قابل دیدن نیستند، ولی در صورت فیلم برداری با دوربین، لنز دوربین آنها را دریافت میکنه، و تصویر گرفته شده غیرقابل نمایش میشه.


بعدش هم یه سر از برنامه ها را که عملیات کپچر را انجام میدن را توی محیط برنامه نویسی لیست کرد و بعد end process کرد
شما اگر برای برنامه خودتون Desktop جدا ایجاد کنید، برنامه شما مثل یک برنامه Kiosk اجرا میشه، یعنی هیچ آیکن، یا Taskbar یا منوی Startایی روی Desktop ساخته شده وجود نخواهد داشت. فقط برنامه شما روی صفحه Desktop خواهد بود. امکان اجرای برنامه دیگه از روی اون Desktop هم از طریق رابط گرافیکی کاربر ممکن نیست. البته اینکه میگم اینها وجود ندارند، منظورم این نیست که مثلا برنامه ها بسته میشند، یا منوی Start و Taskbar مخفی میشند! شما می تونید توی ویندوز چندین Desktop مختلف داشته باشید، و روی هر کدام از آنها هم پنجره های مختلفی باز باشند، و شما بدون اینکه برنامه های باز را تحت تاثیر قرار بدید، از یک Desktop به Desktop دیگه سوئیچ کنید. مثلا، صفحه لاگین ویندوز، که در صورت سوئیچ کردن بین حساب های کاربری، یا در صورت فعال بودن Screen Saver با رمز ورود، نمایش داده میشه، در واقع یک Desktop هست. یعنی پنجره لاگین روی صفحه نمایش داده میشه، و تا رمز را وارد نکنید، نمی تونید وارد Desktop خودتان بشید، در حالی که برنامه ها و پنجره هایشان در Desktop خودتان همچنان باز هستند و به کار خودشان مشغولند.

Desktopها در ویندوز Securable هستند، یعنی میشه براشون قواعد امنیتی تعریف کرد، تا هر برنامه نتونه به آنها هر دسترسی داشته باشه. پس اگر شما یک Desktop برای برنامه خودتان ایجاد کنید، و آن را به درستی محافظت کنید، برنامه های در حال اجرا نمی تونند به راحتی به آن Desktop سوئیچ کنند و از آن تصویر بگیرند. البته از اونجایی که شما نمی دونید کاربر شما با چه نوع حسابی در ویندوز از برنامه شما استفاده میکنه، کاربر میتونه برنامه ایی رو با مجوزهای مدیر اجرا کنه، و چون اون برنامه دسترسی مدیریتی داره، بتونه محدودیت های اعمال شده برای دسترسی به Desktop شما را غیرفعال کنه. اصولا مدیر میتونه هر کاری انجام بده. اما برای همچین کاری، اون کاربر باید خودش برنامه نویس باشه، لیست Desktopهای فعال را به دست بیاره، نام Desktop شما را هم به یک شکلی (مثلا با سعی و خطا) پیدا کنه، مجوزهای امنیتی اون رو هم دستکاری کنه، و بعد برنامه ایی بنویسه که به Desktop شما سوئیچ کنه، و ازش تصویر بگیره. همچین کاری عرف نیست، و فقط زمانی ارزش داره که عکس های شما واقعا برای اون فرد قیمتی باشند. پس استفاده از ترکیبی از کنترل Clipboard برای داده های تصویری، استفاده از Desktop مجزا برای نمایش برنامه، و استفاده از Watermark می تونید امنیت قابل قبولی را برای تصاویرتان فراهم کنید.

کارهای دیگه ایی هم میشه در کنار آن انجام داد، مثلا وضوح تصاویر را در یک سطح مشخص محدود کنید (فرضا 1024 در 768)، تا برای کاربر امکان استفاده از آنها در کارهای با کیفیت بالا فراهم نباشه. یا تصاویر را با فرمتی مثل JPEG و میزان فشرده سازی نسبتا بالا ذخیره کنید، تا در صورت ویرایش شدن (مثلا با نرم افزارهایی مثل Photoshop) خروجی ویرایش کیفیت مناسبی نداشته باشه. یا اگر تصاویر خیلی مهم هستند، برای استفاده از نرم افزار، از کاربران بخواهید که رجیستر کنند، و اطلاعات کاربر رجیستر شده را در زمان نمایش تصاویر توسط برنامه، به صورت رمزنگاری در عکس، یا Watermark، در نقاطی از تصویر درج کنید، تا اگر کاربری تصاویر را منتشر کرد، بتوان با استفاده از آن اطلاعات، کاربر خاطی را شناسایی کرد.

bigboy_user
چهارشنبه 15 اردیبهشت 1389, 17:58 عصر
سپاس آقای کشاورز
عالی بود
اگه سایتی مد نظر دارید که کدی برای این کار داشته باشم ممنون میشم ، البته خودهم دارم جستجو میکنم :خجالت:

hojjatcroos
پنج شنبه 16 اردیبهشت 1389, 07:57 صبح
اگه Clipboard رو قفل کنیم و توابع Capture Screen رو و تابع FindWindows رو هم هوک کنیم تا هندل برنامه ما رو نتونن به دست بیارن بازم راهی هست یا نه؟

vcldeveloper
پنج شنبه 16 اردیبهشت 1389, 17:55 عصر
توابع Capture Screen رو و تابع FindWindows رو هم هوک کنیم
توابع اختصاصی برای Capture Screen وجود نداره. توابع GDI ویندوز هستند که ممکنه توسط برنامه خودتان، و سایر برنامه ها هزاران بار در ثانیه فراخوانی بشند، و معلوم نیست بلوکه کردن آنها چه رفتارهای غیر منتظره ایی رو روی سیستم شما ایجاد بکنه.

M_Maskout
شنبه 28 اسفند 1389, 12:05 عصر
شما اگر برای برنامه خودتون Desktop جدا ایجاد کنید، برنامه شما مثل یک برنامه Kiosk اجرا ...
Desktopها در ویندوز Securable هستند ...
اما برای همچین کاری، اون کاربر باید خودش برنامه نویس باشه، لیست Desktopهای فعال را به دست بیاره، نام Desktop شما را هم به یک شکلی (مثلا با سعی و خطا) پیدا کنه، مجوزهای امنیتی اون رو هم ...

برای عکس گرفتن از هر جور برنامه‌ای با هر سطح امنیتی، یه راه کاملاً ساده وجود داره: استفاده از پی سی‌های مجازی.
فقط کافیه برنامه رو تو یه ویندوز پی سی مجازی نصب کنیم، بعد از پنجره پی سی مجازی مذکور عکس بگیریم. این راهیه که تقریباً مطمئنم عمراً نشه هیچ جور جلوش رو بگیریم، مگر اینکه همراه هر نسخه از نرم افزار یه آدم قلچماق به صورت اجباری به کاربر بدیم و اون نذاره کاربر دست از پا خطا کنه!!!

vcldeveloper
شنبه 28 اسفند 1389, 17:57 عصر
فقط کافیه برنامه رو تو یه ویندوز پی سی مجازی نصب کنیم، بعد از پنجره پی سی مجازی مذکور عکس بگیریم. این راهیه که تقریباً مطمئنم عمراً نشه هیچ جور جلوش رو بگیریم، مگر اینکه همراه هر نسخه از نرم افزار یه آدم قلچماق به صورت اجباری به کاربر بدیم و اون نذاره کاربر دست از پا خطا کنه!!!
اجرا شدن برنامه در داخل ماشین مجازی رو میشه برای نرم افزارهای مجازی سازی معروف مثل VMWare، از طریق کد متوجه شد.