Sameboy0511
یک شنبه 25 مرداد 1394, 18:19 عصر
سلام
قبلا هم پرسیدم با چند تا سوال دیگه اما چون قوانین و نقض کرده بود پاک شد پستم.
چجوری میشه برنامه نوشت که با فشار دادن کلید F8 بیاد یک عکس از همون حالتی که هست بگیره از صفحه مانیتور و سیو کنه جایی که بهش آدرس داده میشه.
یک راهنمایی کلی بکنین و اگه بتونین سورسشو هم بزارین ممنون میشم
mehdi.safavie
یک شنبه 25 مرداد 1394, 19:13 عصر
اینا رو تعریف کن
Private Declare Function CreateDC Lib "gdi32" Alias _
"CreateDCA" (ByVal lpDriverName As String, _
ByVal lpDeviceName As String, ByVal lpOutput As String, _
ByVal lpInitData As String) As Integer
Private Declare Function CreateCompatibleDC Lib "GDI32" _
(ByVal hDC As Integer) As Integer
Private Declare Function CreateCompatibleBitmap Lib "GDI32" _
(ByVal hDC As Integer, ByVal nWidth As Integer, _
ByVal nHeight As Integer) As Integer
Private Declare Function GetDeviceCaps Lib "gdi32" Alias _
"GetDeviceCaps" (ByVal hdc As Integer, _
ByVal nIndex As Integer) As Integer
Private Declare Function SelectObject Lib "GDI32" _
(ByVal hDC As Integer, ByVal hObject As Integer) As Integer
Private Declare Function BitBlt Lib "GDI32" _
(ByVal srchDC As Integer, _
ByVal srcX As Integer, ByVal srcY As Integer, _
ByVal srcW As Integer, ByVal srcH As Integer, _
ByVal desthDC As Integer, ByVal destX As Integer, _
ByVal destY As Integer, ByVal op As Integer) As Integer
Private Declare Function DeleteDC Lib "GDI32" _
(ByVal hDC As Integer) As Integer
Private Declare Function DeleteObject Lib "GDI32" _
(ByVal hObj As Integer) As Integer
Const SRCCOPY As Integer = &HCC0020
Private bmpBackground As Bitmap
Private intWidth, intHeight As Integer
Protected Sub CaptureScreen()
Dim hsdc, hmdc As Integer
Dim bmpHandle, OLDbmpHandle As Integer
Dim releaseDC As Integer
hsdc = CreateDC("DISPLAY", "", "", "")
hmdc = CreateCompatibleDC(hsdc)
intWidth = GetDeviceCaps(hsdc, 8)
intHeight = GetDeviceCaps(hsdc, 10)
bmpHandle = CreateCompatibleBitmap(hsdc, _
intWidth, intHeight)
OLDbmpHandle = SelectObject(hmdc, bmpHandle)
releaseDC = BitBlt(hmdc, 0, 0, intWidth, _
intHeight, hsdc, 0, 0, 13369376)
bmpHandle = SelectObject(hmdc, OLDbmpHandle)
releaseDC = DeleteDC(hsdc)
releaseDC = DeleteDC(hmdc)
bmpBackground = _
Image.FromHbitmap(New IntPtr(bmpHandle))
DeleteObject(bmpHandle)
End Sub
حالا این کد ها برات عکس میگیره اط صفحه مانیتورت هر جا به هر طریقی دوست داری ازشون استفاده کن .
CaptureScreen()
PictureBox1.Image = bmpBackground
PictureBox1.Image.Save("Capture.jpg")
منبع (http://www.codeguru.com/columns/vb/how-to-capture-a-screen-print-screen-with-visual-basic.html)
Sameboy0511
دوشنبه 26 مرداد 1394, 11:08 صبح
خب میخوام هر دفعه با یک نیم سیو بشه چیکار کنم؟ الان کدی که برای نیم متفاوت بودنش گزاشتم اینه بگین این کد اشتباهه یا نه؟چون ارور میده و درست اجرا نمیشه
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CaptureScreen()
PictureBox1.Image = bmpBackground
Dim ss As Integer = 0
While ss < 1000
ss = +1
Select Case ss
Case My.Computer.FileSystem.FileExists("Capture" + ss + ".jpg")
Continue While
Case Else
PictureBox1.Image.Save("Capture" + ss + ".jpg")
Exit While
End Select
End While
End Sub
Sameboy0511
دوشنبه 26 مرداد 1394, 14:19 عصر
دوستان مشکلم حل شد.
من این کارو کردم :
یک module ساختم و اینا رو بش دادم :
Imports System.IO
Module Module1
Public Function GetRandomString()
Dim p As String = Path.GetRandomFileName()
Return p
End Function
End Module
اما این میاد یک اسم به این صورت میسازه fuefh2sdf.aer که خودشم یک پسوند بهش میده.پس باید بعد از:
Dim p As String = Path.GetRandomFileName()
که بیاد نقطه ای که بین پسوند و خوده اسم فایل هست و برداره به این شکل :
p = p.Replace(".", "")
کدمون به این شکل درمیاد :
Imports System.IO
Module Module1
Public Function GetRandomString()
Dim p As String = Path.GetRandomFileName()
p = p.Replace(".", "")
Return p
End Function
End Module
حالا تو فرم اصلیمون تو یک Button یا هرچیزی که میخواین عکس بگیرین میاین این module رو فراخونی میکنین و جایگذاری میکنین که به این شکل میشه.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ScreenName As String
ScreenName = Module1.GetRandomString()
CaptureScreen()
PictureBox1.Image = bmpBackground
PictureBox1.Image.Save(ScreenName + ".jpg")
End Sub
حالا با هربار کلیک کردن یک عکس از صفحه شما میگیره و اونو با یک نیم متفاوت سیو میکنه.
برخی نیم هایی که ساخته شده :
aoyft1wzlrv.jpg
ghi2gfsedk0.jpg
st2lfyd30mt.jpg
تشکر فراموش نشه : )
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.