View Full Version : سوال: عکس گرفتن از یک شماره هندل
na_3_er
چهارشنبه 19 فروردین 1394, 22:04 عصر
با سلام چطور میشه از یک برنامه خاص مثلا نوت پد با توجه به هندل نوت پد از فرمش عکس گرفت یا هر جور دیگه من فقط میخوام از چهار چوب برنامه نوت پد که اجراست در کامیپوترم عکس بگیرم؟ خیلی برام واجبه اگر راهنمایی کنید ممنون میشم
negative60
چهارشنبه 19 فروردین 1394, 22:29 عصر
با تابع GetWindowRect ميتونيد مختصات موقعيت پنجره رو تو صفحه نمايش و اندازه اون رو به دست بياريد
با تابع BitBlt هم ميتونيد از صفحه نمايش عکس بگيريد
برای اينکه فقط از پنجره مورد نظرتون عکس گرفته بشه X و Y پنجره مورد نظر رو به عنوان پارامتر به تابع BitBlt بايد بديد
na_3_er
پنج شنبه 20 فروردین 1394, 12:44 عصر
با تابع
GetWindowRect موقعیت فرم بدست اوردم اگر میشه یه مثال از BitBlt بزنید چطوری کار میکنه
negative60
پنج شنبه 20 فروردین 1394, 16:13 عصر
تو اين مثال از پنجره که فکوس روی اون باشه عکس گرفته ميشه البته مطمئن نيستم اون قسمت * 15 + 60 تو delphi نياز باشه اگر دقيقاً از پنجره مورد نظر عکس گرفته نشد اين قسمت رو پاک کنيد, تا جايی که تونستم سعی کردم کدم رو درست به delphi ترجمه کنم, اگر مشکل داشتيد ميتونيد اينجا (http://stackoverflow.com/questions/23410377/delphi-active-window-screenshot) هم يه نگاه بندازيد
R: TRect;
GetWindowRect (GetForegroundWindow, R);
C_Y = R.Top;
C_X = R.Left;
C_Height = R.Bottom - C_Y;
C_Width = R.Right - C_X;
Result := TBitmap.Create;
Result.PixelFormat := pf32bit;
Result.Width := C_Width * 15 + 60;
Result.Height := C_Height * 15 + 60;
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, GetDC(0), C_X, C_Y, SRCCOPY);
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.