Jump to content
LeOCruX

screenshot algrorithm

Recommended Posts

Posted

vreau un algroritm pt un screenshot... eu m'am gandit sa iau fiecare pixel ( culoarea ) si sa'l pun pe rand pe un picturebox folosind un timer ( mi se pare ca ar dura cam mult si daca as pune timerul la un interval mai mic de 10 milisec. ar consuma prea mult )

Posted

Idem vladii. Poti face asta prin simpla simulare a apasarii tastei PrintScreen.

Desigur, pentru ca in imagine sa nu apara si fereastra programului, ar trebui ca acesta sa aiba si ascundere in tray (daca nu, il ascunzi pur si simplu in taskbar) si sa faca printscreen la apasarea unei taste.

Nu e cine stie ce :P. Daca vrei , iti fac si eu unul in AutoIt :)).

Posted

:)) duamnii cat de neatent pot sa fiu .. cum de am uitat pe prinscreen ( butonu ). Cine stie ce cod ascii are ?

EDIT : am cautat pe google si am gasit ( 0x00400100UL - hexa ) nu stiu daca e bun de aia astept raspunsul vostru

Posted

Use vbKeySnapshot (in VB) ! Bineinteles, asta ar fi primul parametru al functiei keybd_event din user32.dll. Nu uita sa nu lasi tasta apasata (pt. asta folosesti inca o data keybd_event, dar se modifica un parametru).

Bafta !

Posted
Use vbKeySnapshot (in VB) ! Bineinteles, asta ar fi primul parametru al functiei keybd_event din user32.dll. Nu uita sa nu lasi tasta apasata (pt. asta folosesti inca o data keybd_event, dar se modifica un parametru).

Bafta !


Option Explicit

Declare Sub keybd_event Lib "user32" _
(ByVal Vk As Byte, ByVal Scan As Byte, _
ByVal Flags As Long, ByVal ExtraInfo As Long)

Private Sub cmdCapture_Click()

Me.Visible = False
DoEvents

Clipboard.Clear
keybd_event vbKeySnapshot, 0, 0, 0
DoEvents

printscreen.Picture = Clipboard.GetData(vbCFBitmap)
DoEvents

Me.Visible = True
Me.Refresh

end sub

care mi'l incearca? eu nu's acasa si nu am stiku' cu mine

vlad cati ani ai ? din curiozitate :D chiar ai 13 ani ? ( esti cu 1 am mai mare ca mn )

Posted

ete cum am abordat eu problema in vb.net :|


Imports System.Threading.thread
Module Module1
Public Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Function SalveazaPoza(ByVal fereastraactiva As String, ByVal drumsalvare As String)
Clipboard.Clear()
Form1.Visible = False
Sleep(100)
Select Case fereastraactiva
Case "Activa"
SendKeys.Send("{PRTSC}")
Case Else
SendKeys.Send("^ {PRTSC}")
End Select
Form1.Visible = True
Form1.PictureBox1.Image = Clipboard.GetImage()
End Function
Public Function scriere(ByVal drum As String)
Form1.PictureBox1.Image.Save(drum)
MsgBox("Poza a fost salvata la calea data")
End Function
End Module

acum asta e in vb.net .... cred ca merge doar sendkeys "aaaaaaawaaa" in VB6 si clipboard.getdata()

Posted

Chestia cu butonul printscreen e complicatie. Totul e foarte simplu, se poate face cu API-ul BitBlt() care face un transfer de blocuri de biti de la un device context la altul.

Asta inseamna ca avem nevoie de device context-ul 'ecranului' / a ce se vede pe ecran. Asta e desktop window-ul, folosim API-ul GetDesktopWindow() ca sa obtinem handle-ul ferestrei desktop-ului (nu Desktop-ul ala pe care ai wallpaper).

Insa noi avem nevoie de device context-ul ferestrei respective, il aflam pasand handle-ul ferestrei API-ului GetWindowDC() si am obtinut device context-ul desktop-ului.

Cream un bitmap, prin orice metoda, depinde de limbajul de programare asta, si facem rost de device context-ul bitmap-ului respectiv (daca ai vreo componenta de genul TBitmap poti accesa proprietatile Canvas apoi Handle ca sa obtii device context-ul care te intereseaza).

Dupa ce ai cele 2 device context-uri (al desktop-ului si al bitmapului in care vrei sa stochezi screenshot-ul), folosesti API-ul BitBlt(), la parametrii la destination device context pui device context-ul bitmapului, la source device context pui device context-ul desktopului, la raster operation code pui SRCCOPY ( $20 ) ca sa copie pur si simplu continutul fara sa efectueze alta operatie asupra bitilor, iar la ceilalti parametrii e simplu.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...