29-09-2010, 07:41 PM
بالنسبة للدالة GetDC فإنها تعطي المقبض الخاص بالجهاز ، وأناأريـــد الشاشة وهذا رقم لا يتغير أثناء مسيرة عمل البرنامج ، فلا داعي لتكرار مناداتها في الـ Timer ، فالمناسب هو مناداتها عند تشغيل البرنامج فقط.
أما الدالة GetPixel فهي تعطي إحداثيات الماوس وما فيها من ألوان فالمناسب مناداتها كل مرة فوضعت في الحدث Timer .
نعم كان المناسب أن أكتب هكذا :
أما بالنسبة للدالة ReleaseDC فإنها مع عدة محاولات لم تعمل عندي والله اعلم .
ولما نقلت الملف التنفيذي إلى الجهاز الآخر للاختبار ظهرت العبارة : Pixel Invalid. فعلمت أن الخطأ في الدالة
GetPixel .
وجربت طريقة أخرى موجودة على هذا الموقع
ولكن أيضاً نفس المشكلة .
أما الدالة GetPixel فهي تعطي إحداثيات الماوس وما فيها من ألوان فالمناسب مناداتها كل مرة فوضعت في الحدث Timer .
نعم كان المناسب أن أكتب هكذا :
كود :
begin
// DC := ReleaseDC(0,0); // error !
// DC := ReleaseDC(Application.Handle,0); // error !
// DC := ReleaseDC(GetActiveWindow,0); // error !
DC := GetDC(0); // okey
if DC = 0 then
Timer1.Enabled := False;
end;كود :
pColor := GetPixel(DC, p.X, p.Y);
if pColor <> CLR_INVALID then
begin
GetColor (pColor) ;
SetColor;
end
else txtColor.Caption := 'Pixel Invalid.';أما بالنسبة للدالة ReleaseDC فإنها مع عدة محاولات لم تعمل عندي والله اعلم .
ولما نقلت الملف التنفيذي إلى الجهاز الآخر للاختبار ظهرت العبارة : Pixel Invalid. فعلمت أن الخطأ في الدالة
GetPixel .
وجربت طريقة أخرى موجودة على هذا الموقع
كود :
http://www.delphitricks.com/source-code/graphic/get_a_pixel_color_of_the_desktop.htmlولكن أيضاً نفس المشكلة .
وإن تقدم ذو تقوى بصالحةٍ *** قدمتُ بين يديه عبرة الندمِ

