ايران ويج

نسخه‌ی کامل: عکس گرفتن از فرم
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام.من میخوام از فرمم عکس بگیرم حالا یا با printscreen یا هر روش دیگه. برنامه زیر میاد یک تصویر از notepad میگیره و تو فرم نشون میده که بدردم نخورد. نمیدونم که چطور با printwindow , findwindow میشه از فرم عکس بگیرم

Private Declare Function PrintWindow Lib "user32" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Form_Load()
Dim mWnd As Long

Me.AutoRedraw = True
Shell "Notepad.exe", vbNormalNoFocus
DoEvents
mWnd = FindWindow("Notepad", vbNullString)
If mWnd = 0 Then
Me.Print "NotePad not found"
Else
PrintWindow mWnd, Me.hDC, ByVal 0&
End If
End Sub
با تغییر مقدار notepad مربوط به findwindow به برنامه خودتون میتونین این کارو انجام بدین
مرسی از راهنماییتون ولی متوجه نشدم منظورتون اینه که در این خط به جای notepad نام فرمی رو که میخوام عکسشو بگیرم بزارم؟ لطف میکنید بیشتر توضیح بدین
mWnd = FindWindow("Notepad", vbNullString)
نام نه منظور آقای لرد Caption یا همون تیتر پنجره است
نه نشد چیزی که لازم دارم درست مثل print screen کیبرده .(همون کارو باید انجام بده)
یه ماژول توی بخش ویبی برای این کار کذاشته شده بود.
ازش استفاده کردم ولی نشد اگه راهی بنظرتون میرسه بگید
پس لطف کنید سوال درست مطرح کنید

این کد که شما گذاشتید از یک پنجره عکس می گیره

برای عکس گرفتن کامل از صفحه از کد زیر می تونی استفاده کنی :

[attachment=1348]
تا اونجا که من یادمه اون کار میکرد. هم از صفحه عکس میگرفت هم از پنجره و هم از محتویات پنجره بدون حاشیه.
میشه راجع به کدی که گذاشتین یکم توضیح بدین مخصوصا قسمت general از توابعی که استفاده شده چیزی نمیدونم
در کل کدش خیلی ساده است و چیز مبهمی نداره

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

1-GetDC : برای بدست آوردن بافت گرافیکی یک کنترل یا ... به کار می رود

2-BitBlt : این تابع از یک بافت گرافیکی عکس گرفته و با مشخصات جدید (اندازه و محل و...) در بافت گرافیکی جدیدی چاپ می کند
صفحه‌ها: 1 2