Screen Speichern>>>>

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
XCorE
Beiträge: 17
Registriert: 05.12.2007 23:04
Wohnort: Bremervörde
Kontaktdaten:

Screen Speichern>>>>

Beitrag von XCorE »

Hallo ich wollte ma nen kleines Screen programm machen,so klappt alles leider ist mir aufgefalle das wenn wenn ich nicht das window angeklickt habe,das er den den screen nicht abspeichert vielleicht könnte das ja jemand für mich machen,weil ich hätt doch ganz gerne ma endlich nen eigenes programm fertig ^^

Code: Alles auswählen



Enumeration
  #Window_0
EndEnumeration

#SRCCOPY = $CC0020
#DLLID_User32 = 0
#DLLID_GDI32  = 1
#ImageID      = 0
#ERRMSG="Error"


Enumeration
  #Hyperlink_0
  #Text_0
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Frame3D_0
  #Button_0
  #Button_2
  #Frame3D_1
  #CheckBox_1
  #CheckBox_2
  #CheckBox_3
EndEnumeration



Enumeration
  #StatusBar_0
EndEnumeration


Global FontID1
FontID1 = LoadFont(1, "Blade Runner Movie Font", 12, #PB_Font_Bold | #PB_Font_Italic)
Global FontID2
FontID2 = LoadFont(2, "Lucida Console", 10)


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 399, 81, 333, 228, "X-Snapper v.1.0",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
    EndIf

    If CreateGadgetList(WindowID(#Window_0))
      HyperLinkGadget(#Hyperlink_0, 70, 0, 170, 20, "www.xsoft.de.ms", RGB(0, 600, 600))
      SetGadgetFont(#Hyperlink_0, FontID1)
      TextGadget(#Text_0, 30, 150, 280, 10, "Drücke F12 um ein Screen zu machen")
      SetGadgetFont(#Text_0, FontID2)
      TextGadget(#Text_2, 30, 170, 70, 20, "Speichern als :")
      TextGadget(#Text_3, 160, 170, 20, 20, ".jpg")
      TextGadget(#Text_4, 280, 170, 30, 20, ".bmp")
      TextGadget(#Text_5, 220, 170, 20, 20, ".gif")
      Frame3DGadget(#Frame3D_0, 10, 160, 310, 40, "")
      ButtonGadget(#Button_0, 20, 110, 80, 30, "Screens")
      ButtonGadget(#Button_2, 230, 110, 80, 30, "Alle löschen")
      Frame3DGadget(#Frame3D_1, 10, 20, 310, 80, "")
      CheckBoxGadget(#CheckBox_1, 130, 170, 20, 20, "")
      CheckBoxGadget(#CheckBox_2, 200, 170, 20, 20, "")
      CheckBoxGadget(#CheckBox_3, 260, 170, 20, 20, "")

    EndIf
  EndIf
EndProcedure

Procedure.l ScreenShot(Path.s)
  Protected hWnd.l
  Protected hDC.l
  Protected DeviceContext.l




  If Not OpenLibrary(#DLLID_User32,"User32.dll") Or Not OpenLibrary(#DLLID_GDI32,"GDI32.dll")
    ProcedureReturn #False
  Else

    hWnd  = CallFunction(#DLLID_User32,"GetDesktopWindow")
    hDC   = CallFunction(#DLLID_User32,"GetDC",hWnd)

    ExamineDesktops()
    CreateImage(#ImageID,DesktopWidth(0),DesktopHeight(0))

    DeviceContext = StartDrawing(ImageOutput(#ImageID)) ;>
    CallFunction(#DLLID_GDI32,"BitBlt",DeviceContext,0,0,ImageWidth(#ImageID),ImageHeight(#ImageID),hDC,0,0,#SRCCOPY)
    StopDrawing() ;<

    SaveImage(#ImageID,Path)
    FreeImage(#ImageID)
    CloseLibrary(#DLLID_GDI32)
    CloseLibrary(#DLLID_User32)

    ProcedureReturn #True
  EndIf


  ProcedureReturn #False
EndProcedure

Open_Window_0()




AddKeyboardShortcut(#Window_0,#PB_Shortcut_F12,1)

Repeat



  Event = WaitWindowEvent()

  If Event = #PB_Event_Menu

    Select EventMenu()
      Case 1

      If GetGadgetState(#CheckBox_1) = 1

        Screenshot(GetCurrentDirectory()+"Screens\"+"Screen.jpg"+erweiterung$) 

      EndIf
      If GetGadgetState(#CheckBox_2) = 1

        Screenshot(GetCurrentDirectory()+"Screens\"+"Screen.gif"+erweiterung$) 

      EndIf
      If GetGadgetState(#CheckBox_3) = 1

        Screenshot(GetCurrentDirectory()+"Screens\"+"Screen.bmp"+erweiterung$) 

      EndIf
      
      
    
        
    EndSelect

  EndIf

  WindowID = EventWindow()

  GadgetID = EventGadget()

  EventType = EventType()





  If Event = #PB_Event_Gadget

    If GadgetID = #Hyperlink_0


    ElseIf GadgetID = #Button_0
  

    ElseIf GadgetID = #Button_2
    
    DeleteFile(GetCurrentDirectory()+"Screens\"+"Screen"+erweiterung$) 

    ElseIf GadgetID = #CheckBox_1

      If GetGadgetState(#CheckBox_1) = 1

        MessageRequester("Hinweis:","Screen wird nun als .jpg gespeichert")

      EndIf

    ElseIf GadgetID = #CheckBox_2

      If GetGadgetState(#CheckBox_2) = 1

        MessageRequester("Hinweis:","Screen wird nun als .gif gespeichert")

      EndIf

    ElseIf GadgetID = #CheckBox_3

      If GetGadgetState(#CheckBox_3) = 1

        MessageRequester("Hinweis:","Screen wird nun als .bmp gespeichert")

      EndIf

    EndIf


  EndIf


Until Event = #PB_Event_CloseWindow

End
MfG

XCorE :)
Benutzeravatar
50-Pfennig
Beiträge: 75
Registriert: 22.01.2007 22:24
Wohnort: 40764 Langenfeld
Kontaktdaten:

Beitrag von 50-Pfennig »

Warum machst du das über die "User32.dll"? Benutz' doch einfach die WinAPI Befehle GetDesktopWindow(), BitBlt() etc.
Benutzeravatar
XCorE
Beiträge: 17
Registriert: 05.12.2007 23:04
Wohnort: Bremervörde
Kontaktdaten:

Beitrag von XCorE »

*Hust* Demo *Hust* =/
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Screen Speichern>>>>

Beitrag von HeX0R »

XCorE hat geschrieben:...vielleicht könnte das ja jemand für mich machen,weil ich hätt doch ganz gerne ma endlich nen eigenes programm fertig
:lol:
Benutzeravatar
XCorE
Beiträge: 17
Registriert: 05.12.2007 23:04
Wohnort: Bremervörde
Kontaktdaten:

Beitrag von XCorE »

Ja ich weiß meine logig is echt ein wenig unlogisch xDDDD
Antworten