Hallo zusammen,
möchte beim erstellen eines ausgewählten ScreenShot, noch während ich mit der Mouse die Grösse festlege, dabei ein Rechteck mit der aktuellen Grösse zeichnen lassen. Hoffe ihr versteht was ich meine.
Code
; Screenshot der aktuellen Auswahl:
; -----------------------------------------
Func AuswahlScreenShot()
SoundPlay(@ScriptDir & "\klick.wav", 1)
$AuswahlGUI = GuiCreate("ScreenShot",@DesktopWidth,@DesktopHeight,-1,-1,$WS_POPUP,BitOR($WS_EX_TOPMOST,$WS_EX_TOOLWINDOW)); erstellen eines GUI-Fensters
GUISetCursor( 3, 1, $AuswahlGUI); Mouse-Cursor umschalten, Kreuz
GUISetState (); öffnen des GUI-Fensters
WinSetTrans("ScreenShot", "", 1)
$UserDLL = DllOpen("user32.dll"); öffnen der User32.dll
; Infotext anzeigen:
SplashTextOn('Info: ', 'Bitte markieren Sie den Bereich, von dem Sie einen ScreenShot erstellt haben wollen. ',400,50, (@DesktopWidth/2)-200,(@DesktopHeight/2)-25)
sleep(2000)
SplashOff()
While 1
If _IsPressed("01", $UserDLL) Then
Local $Start_Pos = MouseGetPos()
;~ While 1
;~ Local $Mouse_Pos = MouseGetPos()
;~ Local $Ausschnitt
;~ GUICtrlDelete($Ausschnitt)
;~ $Ausschnitt = GUICtrlCreateLabel($Start_Pos[0], $Start_Pos[1], $Mouse_Pos[0], $Mouse_Pos[1], 0x1000)
;~ If Not _IsPressed("01", $UserDLL) Then ExitLoop
;~ WEnd
ExitLoop
EndIf
WEnd
While 1
If Not _IsPressed("01", $UserDLL) Then
Local $End_Pos = MouseGetPos()
$left = $Start_Pos[0]
$top = $Start_Pos[1]
$with = $End_Pos[0] - $Start_Pos[0]
$height = $End_Pos[1] - $Start_Pos[1]
ExitLoop
EndIf
WEnd
DllClose($UserDLL)
GUISetCursor( 2, 0); Mouse-Cursor umschalten, Pfeil
GUIDelete()
If Not FileExists (@DesktopDir & "\screenshots") Then DirCreate (@DesktopDir & "\screenshots")
Local $Quality = 100
If $Quality = -1 Then
Local $SaveAs = ".bmp"
Else
Local $SaveAs = ".jpg"
EndIf
Local $CaptureDirectory = @DesktopDir & "\Screenshots"
Local $CaptureFile = @YEAR & "-" & @MDAY & "-" & @MON & "_" & @HOUR & "." & @MIN &"." & @SEC & $SaveAs
DllCall("captdll.dll", "int", "CaptureRegion", "str", $CaptureDirectory & $CaptureFile, "int", $left, "int", $top, "int", $with, "int", $height, "int", $Quality)
If @error Then MsgBox(262160,"Fehler","Es wurde kein Screenshot erstellt!",4)
EndFunc
Alles anzeigen
Bin mir aber nicht sicher ob AutoIt das während der Laufzeit kann. Od. kennt einer von euch eine andere Möglichkeit sowas zu realisieren(*.dll,...)?
Danke für eure Hilfe.
Gruss pastl