Einfaches Screenshotprogramm

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Einfaches Screenshotprogramm

Beitrag von mpz »

Hallo Leute,

ich habe hier ein Screenshotprogramm veröffentlicht, welches ich selber einsetze. Die Routinen habe ich aus verschiedenen Programmen entwendet... Vielleicht kann jemand dieses Programm gebrauchen.


P.S. Wer Rechtschreibfehler findet darf diese behalten...

Gruß Michael

Code: Alles auswählen



;-TOP 
; Kommentar : Einfaches Screenshot 
; Version   : v.1.00
; Author    : Michael Paulwitz 
;              
; Datei     : Screenshot.pb 
; Erstellt  : 06.06.2008 
; Geändert  : 
; Sprache   : Purebasic 4.0 und höher 
; *************************************************************************************** 

UseJPEGImageEncoder()
ExamineDesktops()

Hilfetext.s =               "                Einfaches Screenshotprogramm  von MP aus Berlin v1.00" + Chr(10)+Chr(10)
Hilfetext.s = Hilfetext.s + "Ein Screenshot wird durch die Taste <Druck> oder durch das gleichzeitige drücken"+Chr(10)
Hilfetext.s = Hilfetext.s + "der Taste <Alt> + <Druck> erstellt. Durch die <Druck> Taste wird eine Screenshot"+Chr(10)
Hilfetext.s = Hilfetext.s + "des Desktops und durch <Alt> + <Druck> wird ein Screenshot des aktiven Fensters"+Chr(10)
Hilfetext.s = Hilfetext.s + "gespeichert. Das Speicherformat ist JPG und wird automatisch fortlaufend nummeriert."+Chr(10)+Chr(10)
Hilfetext.s = Hilfetext.s + "Viel Spaß wünscht Euch Michael."

For k=1 To 255 : GetAsyncKeyState_(k) : Next ; Clear all
 
CreatePopupMenu(0)
  MenuItem(1, "Erstelle Screenshot vom Desktop @MP Berlin")
  MenuBar()
  MenuItem(2, "Info")
  MenuBar()
  MenuItem(3, "Ende")

OpenWindow(0, 10, 10, 10, 10, "Screenshot", #PB_Window_Invisible)

 ;assign a taskbar icon to the above hidden window.
 AddSysTrayIcon(1, WindowID(0), CatchImage(0, ?Screenshoticon)) 

 SysTrayIconToolTip(1, "Screenshot Programm, Start über <Druck> oder <Alt><Druck> Taste")

Repeat


; wait for the user to do something....
  
  Event=WindowEvent()

      If GetAsyncKeyState_(44) = -32768 Or Use = 1
         If use = 1
            use = 0
            Delay (10)
            hImage = CreateImage(0,DesktopWidth(0),DesktopHeight(0)) 
            hDC    = StartDrawing(ImageOutput(0)) 
            DeskDC = GetDC_(GetDesktopWindow_()) 
            BitBlt_(hDC,0,0,DesktopWidth(0),DesktopHeight(0),DeskDC,0,0,#SRCCOPY) 
            StopDrawing() 
            ReleaseDC_(GetDesktopWindow_(),DeskDC)
            SetActiveWindow(0)
         Else
            GetClipboardImage(0)           
         EndIf  
         shot + 1
         StandardFile$ = "C:\Screenshot"+Right("000"+Str(Shot),4)+".jpg"   ; anfänglichen Pfad + Dateiname festlegen
         Pattern$ = "JPG Grafikdatei (*.jpg)|*jpg"
         Pattern = 0    ; wir verwenden den ersten von drei möglichen Pattern als Standard
         File$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", StandardFile$, Pattern$, Pattern)
         If File$
            If GetExtensionPart(File$) = ""
               File$ = File$ + ".jpg"   
            EndIf
            SaveImage(0, File$,#PB_ImagePlugin_JPEG)
         Else
            MessageRequester("Information", "Screen wurde nicht gespeichert", 0) 
         EndIf
      EndIf
  
; is the "event" over the system tray ?
    
  If Event = #PB_Event_SysTray
    Select EventType()
      Case #PB_EventType_RightClick ; was it a right mouse click ?
      DisplayPopupMenu(0, WindowID(0)) ; then display the popup menu
      EndSelect
  EndIf

; Ereigniss vom Menü erzeugt?
   
  If Event = #PB_Event_Menu
    Select EventMenu()

      Case 1 ; Screenshot erzeugen 
        use=1
      Case 2 ; Hilfe

        MessageRequester("Info", Hilfetext.s, #PB_MessageRequester_Ok)

      Case 3 ; Quit
        Quit=1
      EndSelect
  EndIf

  Delay (10)

; keep doing the above until user chooses a delay time or the quit option

Until Quit=1
End

DataSection
   Screenshoticon:
   Data.b 0,0,1,0,1,0,32,32,4,0,0,0,0,0,-24,2,0,0,22,0,0,0,40,0,0,0,32,0,0,0,64,0
   Data.b 0,0,1,0,4,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,-128,0,0,-128,0,0,0,-128,-128,0,-128,0,0,0,-128,0,-128,0,-128,-128,0,0,-64,-64,-64,0
   Data.b -128,-128,-128,0,0,0,-1,0,0,-1,0,0,0,-1,-1,0,-1,0,0,0,-1,0,-1,0,-1,-1,0,0,-1,-1,-1
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-120,-120,-128,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,-120,-120,-120,-120,0,0,0,0,0,0,0,0,0,0,0,0,-120,-120,-120,-120
   Data.b -128,0,0,0,0,0,0,-128,0,0,0,0,-120,-128,0,0,-120,0,0,0,8,0,0,-120,0,0,0,8,-120,-128,-120
   Data.b -120,-120,-128,0,0,-120,0,0,-120,0,0,0,-120,-120,-120,119,119,-128,-120,0,0,-120,0,0,-120,0,0,8,-121,-120,-120
   Data.b 127,-9,-128,-120,-128,0,-120,0,0,-120,0,0,8,-121,-120,-120,-121,-9,-128,-120,-128,0,-120,0,0,-120,0,0,8,-121,-120
   Data.b -120,-120,119,-128,-120,-128,0,-120,0,0,-120,-120,-128,8,-121,-120,-120,-120,-120,0,-120,-128,0,-120,0,0,-120,-120,-120,0,-120
   Data.b -120,-120,-120,-120,-120,-120,-128,0,-120,0,0,-120,8,-120,0,-120,0,-120,-120,-120,-120,-120,0,0,-120,0,0,-128,0,-128,0
   Data.b -120,0,-120,-120,-120,-120,-120,0,0,8,0,0,0,0,0,0,0,-120,-121,119,120,-128,0,0,0,0,0,0,0,0,0
   Data.b 0,0,-120,-120,-120,-120,0,0,0,0,0,0,0,0,0,0,0,0,0,8,-120,-128,0,-120,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,-120,-128,0,0,0,0,0,0,0,0,0,0,0,0,0,-120,-120,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,-120,0,0,0,0,0,0,0,0,0,0,0,0,8,-120,-120,-120,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,-120,-120,-120,0,0,0,0,0,0,0,0,0,0,0,0,0,8,-120,-128,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
   Data.b -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-64,0,0,3,-64,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   Data.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-13,-64,0,51,-13,-64,0,51,-13,-16,3
   Data.b -1,-13,-16,3,-1,-1,-4,15,-1,-1,-4,15,-1,-1,-1,-1,-1,-1,-1,-1,-1

EndDataSection
Working on :lol: - LibSGD - MP3D Engine - 8)