Seite 1 von 1

Screen Speichern>>>>

Verfasst: 10.12.2007 10:27
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 :)

Verfasst: 10.12.2007 11:18
von 50-Pfennig
Warum machst du das über die "User32.dll"? Benutz' doch einfach die WinAPI Befehle GetDesktopWindow(), BitBlt() etc.

Verfasst: 10.12.2007 11:26
von XCorE
*Hust* Demo *Hust* =/

Re: Screen Speichern>>>>

Verfasst: 10.12.2007 12:28
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:

Verfasst: 10.12.2007 12:29
von XCorE
Ja ich weiß meine logig is echt ein wenig unlogisch xDDDD