Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Screenshot speichern als png wie geht das?


  • Please log in to reply
7 replies to this topic
fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Hallo!

Wie kann ich denn bitte einen per Print gemachten Screenshot speichern als PNG?

Und wie kann man wenn man zwei Monitore hat steuern von welchem Monitor der Screenshot gemacht werden soll ggf. auch von beiden?

Kennt vllt. jemand eine Script das so ähnlich arbeitet wie das Snipping Tool von Windows 7? Also so das man mit der Maus nen Rahmen ziehen kann und dann nur diesen ausschnitt verwenden?

Für Hilfe bin ich, wie immer, sehr Dankbar!!! Posted Image

MfG
fump

IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007
Mit GDIplus geht das wunderbar: http://www.autohotke...ary-145-by-tic/

;requries GDIp in \Lib\Gdip.ahk
#Include <Gdip>

file:= A_ScriptDir "\screen.jpg"
nl:=100
nt:=100
nw:=200
nh:=200
pToken:=Gdip_Startup()
pBitmap:=Gdip_BitmapFromScreen(nL "|" nT "|" nW "|" nH)
Gdip_SaveBitmapToFile(pBitmap, file, 100)
Gdip_Shutdown(pToken)
Quelle

Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012
Das EN-Forum is ja ne echte Schatzgrube!

Find the recent autohotkey version here: ahkscript.org


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Hi IsNull,

danke für deine Antwort! Die GDI Lib ist echt super. Damit kann ich im Bildbereich ja genau das machen was ich will.

hier mein Code unter Verwendung des Codes aus der Quelle:
#SingleInstance, Force
#NoEnv
SetBatchLines, -1
#Include, Gdip.ahk
w:: ; Nur Fenster Cpature
;WinGetActiveStats,titel,w,h,x,y
WinGetPos,x,y,w,h,A
MakeCapture(x,y,w,h)
Return
s:: ; Kompletter Screen
x:= 0
y:= 0
w:= A_ScreenWidth
h:= A_ScreenHeight
MakeCapture(x,y,w,h)
Return
^m:: ; Multimonitor 1
SysGet, Mon1, Monitor, 1
x:= Mon1Left
y:= Mon1Top
w:= Mon1Right
h:= Mon1Bottom
MakeCapture(x,y,w,h)
Return
!m:: ; Multimonitor 2
SysGet, Mon2, Monitor, 2
x:= Mon2Left
y:= Mon2Top
w:= Mon2Right
h:= Mon2Bottom
MakeCapture(x,y,w,h)
Return

MakeCapture(x,y,w,h)
{
file:= A_ScriptDir "\" "screenshot" "-" A_Now ".jpg"
nl:= x
nt:= y
nw:= w
nh:= h
pToken:=Gdip_Startup()
pBitmap:=Gdip_BitmapFromScreen(nl "|" nt "|" nw "|" nh)
Gdip_SaveBitmapToFile(pBitmap, file, 75)
Gdip_Shutdown(pToken)
}
ESC::ExitApp

Kann man ein solch gespeichertes Bild per Chat versenden? Ich habe hier schonmal ein Script gesehen das einen Chat bietet.
Hintergund ist: Unser Mail-System konnte mal ScreenSnippets machen und per internem chat versenden. Dies war immer recht nützlich. Leider ist seit einem Lizenz upgrade diese Möglichkeit nicht mehr gegeben. Daher möchte ich gerne in mein Tool welches die meisten Kollegen nutzen eine solche Funktion einbauen. Keinen Chat, sondern nur das versenden von Bildern. Hast Du da ne Idee zu?

MfG
fump

fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Hiermit kann man einen Bereich auswählen:
x:: ; Bereich mit zwei Klicks bestimmen
Tooltip,Koordinaten A anklicken
KeyWait, LButton, D
MouseGetPos,MouseX ,MouseY
sleep, 200
Tooltip,Koordinaten B anklicken
KeyWait, LButton, D
MouseGetPos,MouseW ,MouseH
Tooltip
x:= MouseX
y:= MouseY
w:= MouseW-MouseX
h:= MouseH-MouseY
MakeCapture(x,y,w,h)
Return

Fragen dazu:
1. Wie kann man verhbindern das der Klick (zum ausslösen von KeyWait) zwar den KeyWait auslöst aber nicht wirklich gesetzt wird. So das ein dahinterliegendes Programm durch den Klick nicht aktiviert wird? geht sowas?
2. Wie kann man einen Rahmen zeichnen lassen? Ein einfaches rotes Quadrat würde schon reichen...

MfG
fump

fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Beim 2. Monitor bekomme ich Negativwerte weil ich den 2. Monitor Links neben dem Hauptmonitor stehen habe.

Kann man das umstellen das auch mit solchen Werten ein Screenshot gespeichert werden kann?


EDIT:

Eigentlich müsste man ja mit Gdip_BitmapFromScreen(Screen=0, Raster="") wenn man bei Screen 1 oder 2 angibt den Screenshot von Monitor 1 oder 2 machen können... Aber egal ob ich 1 oder 2 setze ich bekomm immer ein Bild von beiden...

Warum?

Edited by fump2000, 06 November 2012 - 10:27 AM.


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Kann mir jemand die letzte Frage beantworten? Die Funktion Gdip_BitmapFromScreen(Screen=) sollte bei Wert = 1 einen Screenshot von Monitor 1 anfertigen. Bei Wert = 2 dann von Monitor 2. Aber bei beiden wird ein Screenshot vom kompletten Bereich also von beiden Monitoren gemacht.

fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Ich kann machen was ich will... ich schaffs nicht die Funktion zum korrekten handeln zu bewegen.