Προς το περιεχόμενο

Προβλημα σε προγραμμα C


koslibpro

Προτεινόμενες αναρτήσεις

Δημοσ.

Δεν έχω ασχοληθεί ποτέ με αυτό το πρόβλημα αλλά έχω ένα πρόγραμμα για αντιγραφή της οθόνης.

 

 

 

>
$INCLUDE "RAPIDQ.INC"
DECLARE FUNCTION Setfocus Lib "user32" Alias "SetFocus"(hwnd As Long) AS LONG
DECLARE FUNCTION GetActiveWindow Lib "user32" ALIAS "GetActiveWindow"() As Long
DECLARE FUNCTION GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) As Long
DECLARE FUNCTION GetWindowDC LIB "user32" ALIAS "GetWindowDC"_
                (hWnd AS LONG) AS LONG
DECLARE FUNCTION BitBlt LIB "gdi32" ALIAS "BitBlt" _
                (hDC AS LONG, nXDest AS LONG, nYDest AS LONG, _
                nWidth AS LONG, nHeight AS LONG, hDCSrc AS LONG, _
                nXSrc AS LONG, nYSrc AS LONG, dwRop AS LONG) AS LONG
DECLARE FUNCTION ReleaseDC LIB "user32" ALIAS "ReleaseDC"_
                (hWnd AS LONG, hDC AS LONG) AS LONG
DECLARE SUB Copy_btn_click (Sender AS QBUTTON)
CONST SRCCOPY = &HCC0020

DIM hWnd as LONG
DIM DC AS LONG
DIM Bitmap AS QBITMAP
DIM SaveFile AS STRING
DIM i AS INTEGER, j AS INTEGER
DIM CaptureFile AS STRING
   CaptureFile = "Capture01.bmp"
DIM backcolor AS LONG        
   backcolor = &HFFFFFF  

CREATE Form AS QFORM
   Caption = "Rapid-Q, Screen Capture Program"
   Left = 0
   Top = 0
   Width = 320
   Height = 120
   Color = backcolor
   WindowState = 0
   BorderStyle = 1
   delBorderIcons(2)
   
   CREATE Image1 AS QIMAGE  
       Left = 0
       Top = 0
       Width = 30
       Height = 30
       Visible = 0
   END CREATE

   CREATE Label1 AS QLABEL
       Caption = "Save screen as :"
       Left = 10
       Top = 16
       Width = 80
       Height = 30
   END CREATE 
   
   CREATE Edit1 AS QEDIT
       Text = CURDIR$+"\\"
       Left = 95
       Top = 16
       Width = 200
       Height = 30
   END CREATE 
   
   CREATE Button1 AS QBUTTON
       Caption = "Ok"
       Left = 10
       Top = 48
       OnClick = Copy_btn_click
   END CREATE
END CREATE

       Edit1.text = Edit1.Text + CaptureFile
       SetFocus(Button1.Handle)
       Form.ShowModal

SUB Copy_btn_click (Sender AS QBUTTON)
   
   Button1.Visible = 0
   Label1.Visible = 0
   Edit1.Visible = 0
   Form.Visible = 0

   For i = Form.Left to Form.Left + Form.ClientWidth
   For j = Form.Top  to Form.Top + Form.ClientHeight
   Next 
   Next

   hWnd = GetDesktopWindow()
   DC = GetWindowDC(hWnd)
         
   Bitmap.Width = Screen.Width
   Bitmap.Height = Screen.Height
   BitBlt(Bitmap.Handle, 0, 0, Bitmap.Width, Bitmap.Height, DC, 0, 0, SRCCOPY)
   ReleaseDC(hWnd, DC)
   SaveFile = Edit1.Text
   bitmap.SaveToFile(SaveFile) 
   
   Image1.Autosize=1
   Image1.Visible=1
   Image1.BMP= Edit1.text 
   Form.Caption = "Bitmap file,  " + Edit1.text
   Form.BorderStyle = 2
   Form.Visible=1

END SUB

 

 

 

 

Κάπως έτσι αντιγράφεις την εικόνα

 

>
SUB Copy_Click
for i=Image1.left to Image1.left+Image1.Width
   for j=Image1.top to Image1.top+Image1.Height
       if j<Image1.top+Image1.Height and i<Image1.left+Image1.Width then 
       z%=doevents()
       Richedit1.addstrings "p(" +str$(cnt_line)+ ")=" +chr$(34)+str$(Form.Pixel(i,j))+chr$(34)
       p(cnt_line)=str$(Form.Pixel(i,j))
       cnt_line = cnt_line+1
       Form.Pixel(i,j) = &HFFFFFF
       end if
    next
next    

END SUB

 

 

και έτσι θα κάνεις redraw

 

>
SUB Redraw    
k=0
for i=Image1.left to Image1.left+Image1.Width-1
   for j=Image1.top to Image1.top+Image1.Height-1
       Form.Pixel(i,j) = val(p(k))
       k=k+1
   next
next

END SUB

 

Αυτο δεν ειναι C... (μαλλον ειναι VB, και νομιζω εχει κι ενα syntx error, το οποιο και διωρθωσα :mrgreen: )

 

ΥΓ: Γιατι δεν υπαρχει κουμπακι για spoiler tag στον message editor?! :fear:

Δημοσ.

Αυτο δεν ειναι C... (μαλλον ειναι VB, και νομιζω εχει κι ενα syntx error, το οποιο και διωρθωσα :mrgreen: )

 

ΥΓ: Γιατι δεν υπαρχει κουμπακι για spoiler tag στον message editor?! :fear:

 

Το ξέρω ότι δεν είναι C... δεν είναι σίγουρα πρόγραμμα χωρίς bugs αλλά το σημαντικό είναι ότι λειτουργεί σε περιβάλλον Windows και ίσως να τον βοηθήσει να λύσει το πρόβλημά του.

Εκτός αν ο koslibpro δουλεύει με Linux και θέλει πρόγραμμα σε C και όχι σε C++ για Windows.

 

ΥΓ: Δεν ξέρω γιατί δεν έχει ο message editor αυτό το κουμπάκι. Ίσως να θέλει αλλαγή ο browser.

Δημοσ.

 

Το ξέρω ότι δεν είναι C... δεν είναι σίγουρα πρόγραμμα χωρίς bugs αλλά το σημαντικό είναι ότι λειτουργεί σε περιβάλλον Windows και ίσως να τον βοηθήσει να λύσει το πρόβλημά του.

Εκτός αν ο koslibpro δουλεύει με Linux και θέλει πρόγραμμα σε C και όχι σε C++ για Windows.

 

ΥΓ: Δεν ξέρω γιατί δεν έχει ο message editor αυτό το κουμπάκι. Ίσως να θέλει αλλαγή ο browser.

Καλησπερες.ακριβως,δουλευω μονο με ubuntu οποτε δεν με βοηθαει και πολυ αυτος ο κωδικας..

Ευχαριστω ομως και επισης καθε επομενη βοηθεια ειναι καλοδεχουμενη:)

 

android.png

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...