hallo autobert,
mit löschen und neu erstellen hatte ich es auch schon mal versucht aber irgendwie nicht hinbekommen. nun klappt es aber, war wohl irgendwo der fehlerteufel drin.
danke dir trotzdem ![]()
hallo autobert,
mit löschen und neu erstellen hatte ich es auch schon mal versucht aber irgendwie nicht hinbekommen. nun klappt es aber, war wohl irgendwo der fehlerteufel drin.
danke dir trotzdem ![]()
Hallo,
ich arbeite in einer Gui mit einem GUICtrlCreatePic (als Vorschaubild).
[Blockierte Grafik: http://img3.imagebanana.com/img/bhesktvl/w7shot64.jpg]
Wenn ich nun das blaue Bild durch ein neues ersetze,
sieht man an manchen Stellen trotzdem noch das blaue:
[Blockierte Grafik: http://img3.imagebanana.com/img/i06lshjc/w7shot64.jpg]
Und zwar meiner Meinung nach genau an den Stellen,
wo die Farbe dem Standart-Hintergrund-Grau entspricht.
Kann man das irgendwie vermeiden?
Grüße aus Hessen, Andy
es geht auch aufwendiger
$string = "move_0_0.png"
$endung = StringRight($string, 4)
$rest = StringReplace($string, $endung, "")
$zahl = ""
for $i = 1 to StringLen($rest)
if StringIsDigit(StringMid($rest, $i, 1)) then $zahl &= StringMid($rest, $i, 1)
next
if $zahl = "" then $zahl = "Keine Zahl gefunden"
msgbox(0, "zahl", $zahl)
ist das bild um das es geht immer an der selben stelle?
isses in irgend nem externen programm oder in deiner script-gui?
moin moin,
vielleicht ist folgendes beispiel aus dem englischen forum ja eine lösung für dich:
#include <GUIConstantsEx.au3>
#include <GuiTab.au3>
$hGUI = GUICreate("Test", 500, 500)
[/autoit] [autoit][/autoit] [autoit]$hTab_1 = GUICtrlCreateTab(10, 10, 230, 90)
$hTab_10 = GUICtrlCreateTabitem("Red")
_GUICtrlTab_SetBkColor($hGUI, $hTab_1, 0xFFCCCC)
$hTab_11 = GUICtrlCreateTabitem("Green")
_GUICtrlTab_SetBkColor($hGUI, $hTab_1, 0xCCFFCC)
$hTab_12 = GUICtrlCreateTabitem("Blue")
_GUICtrlTab_SetBkColor($hGUI, $hTab_1, 0xCCCCFF)
GUICtrlCreateTabitem ("") ; end tabitem definition
GUISetState()
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
[/autoit] [autoit][/autoit] [autoit]Func _GUICtrlTab_SetBkColor($hWnd, $hSysTab32, $sBkColor)
[/autoit] [autoit][/autoit] [autoit]Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32)
Local $aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, -1)
GUICtrlCreateLabel("", $aTabPos[0]+2, $aTabPos[1]+$aTab_Rect[3]+4, $aTabPos[2]-6, $aTabPos[3]-$aTab_Rect[3]-7)
GUICtrlSetBkColor(-1, $sBkColor)
GUICtrlSetState(-1, $GUI_DISABLE)
EndFunc
[/autoit]lg ![]()
gewöhnungsbedürftig mit dem hotkey aber hat auch was. das mit dem splashimage gefällt mir gut, *daumen hoch*. Sollt vielleicht noch "sichtbarer" rein wo das bild nun gelandet ist.
Schaut gut aus, doch (ich hab es nicht getestet):
[autoit][/autoit]
$hBitmap = _ScreenCapture_Capture(@ScriptDir & "\shot"&$sc&".jpg", $s_left, $s_top, $s_left+$s_width, $s_top+$s_height, false)
msgbox(0,"Screenshot wurde erstellt:",@ScriptDir & "\test"&$sc&".jpg")Du speicherst es in den Ordner /shot/ und zeigst in der MsgBox nen anderen Pfad an: /test/
Und wie oben gesagt, habe es nicht getestet, doch das ist mir ins Auge gestochen.
Danke Dir, das hab ich wohl übersehen.
Schön gemacht
Aber so richtig komfortabel zu bedienen ist es nicht. Ich würde eher einen Hotkey oder ähnliches bevorzugen, oder dass man zB STRG + ALT gedrückt halten muss und anschließend kann man de Bereich auswählen.Ich werd das mal kurz modifizieren
Den MOD hier ruhig auch mal posten, vielleicht gefällt er ja ![]()
Hallo,
als Auszug aus einem meiner Hauptscripte habe ich mal das
Microsoft Snippingtool in Autoit geschrieben und als standalone-Script erstellt:
#include <GuiConstants.au3>
#Include <Misc.au3>
#Include <ScreenCapture.au3>
Opt("GuiOnEventMode", 1)
$fastx = _WinAPI_GetSystemMetrics(78)
$fasty = _WinAPI_GetSystemMetrics(79)
$sc = 0
$maingui = GUICreate("Andygo's Snippingtool", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$b1 = GUICtrlCreateButton("snip it!", 50, 35, 100, 30)
GUICtrlSetOnEvent(-1, "_area")
GUISetState()
While 1
sleep(20)
wend
func _area()
$sc += 1
$var = WinList()
For $i = 1 to $var[0][0]
If $var[$i][0] <> "" AND $var[$i][0] <> "start" AND IsVisible($var[$i][1]) Then WinSetState ($var[$i][0], "", @SW_DISABLE )
Next
$GUI_2 = GUICreate("", 1, 1, -1, -1, 0x80000000 + 0x00800000, 0x00000008)
GUISetBkColor(0x0c6eec)
WinSetTrans($GUI_2, "", 130)
local $s_left = "", $s_top = "", $s_width = "", $s_height = "", $mgp[2]
Local $hGUI = GUICreate("", $fastx+50, $fasty+50, -15, -25, -1, 0x00000080)
GUISetBkColor(0xffffff)
WinSetTrans($hGUI, "", 40)
WinSetOnTop($hGUI, "", 1)
GUISetCursor(3)
GUISetState(@SW_SHOW, $hGUI)
While Not _IsPressed(01)
$mgp = MouseGetPos()
Sleep(50)
WEnd
WinMove($GUI_2, "", $mgp[0], $mgp[1], 1, 1)
GUISetState(@SW_SHOW, $GUI_2)
While _IsPressed(01)
$mgp_2 = MouseGetPos()
If $mgp_2[0] > $mgp[0] And $mgp_2[1] > $mgp[1] Then
local $s_left = $mgp[0], $s_top = $mgp[1], $s_width = $mgp_2[0] - $mgp[0], $s_height = $mgp_2[1] - $mgp[1]
ElseIf $mgp_2[0] > $mgp[0] And $mgp_2[1] < $mgp[1] Then
Local $s_left = $mgp[0], $s_top = $mgp_2[1], $s_width = $mgp_2[0] - $mgp[0], $s_height = $mgp[1] - $mgp_2[1]
ElseIf $mgp_2[0] < $mgp[0] And $mgp_2[1] > $mgp[1] Then
Local $s_left = $mgp_2[0], $s_top = $mgp[1], $s_width = $mgp[0] - $mgp_2[0], $s_height = $mgp_2[1] - $mgp[1]
ElseIf $mgp_2[0] < $mgp[0] And $mgp_2[1] < $mgp[1] Then
Local $s_left = $mgp_2[0], $s_top = $mgp_2[1], $s_width = $mgp[0] - $mgp_2[0], $s_height = $mgp[1] - $mgp_2[1]
EndIf
WinMove($GUI_2, "", $s_left, $s_top, $s_width, $s_height)
WinSetOnTop($hGUI, "", 1)
ToolTip($s_width & "x" & $s_height)
sleep(50)
WEnd
ToolTip("")
GLOBAL $s_left = $s_left, $s_top = $s_top, $s_width = $s_width, $s_height = $s_height
GUIDelete($hGUI)
$var = WinList()
For $i = 1 to $var[0][0]
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then WinSetState ($var[$i][0], "", @SW_ENABLE )
Next
GUIDelete($GUI_2)
while FileExists(@ScriptDir & "\shot"&$sc&".jpg")
$sc += 1
wend
$hBitmap = _ScreenCapture_Capture(@ScriptDir & "\shot"&$sc&".jpg", $s_left, $s_top, $s_left+$s_width, $s_top+$s_height, false)
msgbox(0,"Screenshot wurde erstellt:",@ScriptDir & "\test"&$sc&".jpg")
endfunc
Func IsVisible($handle)
If BitAnd(WinGetState($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc
func quit()
Exit
endfunc
Kann echt ganz praktisch sein und auf Wunsch jedes Einzelnen natürlich nach bedarf angepasst werden.
Viel Spaß damit, Andy
wenn ich mich richtig erinnere hab ich 2005 / 2006 mit autoit angefangen.
die ersten scripte waren ohne gui und dienten einfach nur zur automatischen installation verschiedener programme. vor 2 jahren fing es an mit der ersten gui, um in vlc screenshots zu erstellen. die entwicklung bis heute ist schon enorm:
[Blockierte Grafik: http://pic.leech.it/i/278a4/1031b32w7shot64.jpg]
[Blockierte Grafik: http://pic.leech.it/i/5355f/ad44bccw7shot64.jpg]
Auf den ersten Blick fällt mir auf das du die Variable $hPen mehrmals definierst.
witzig? naja nicht das was es sein soll aber es klappt... blockiert aber leider andere controls
man könnte es ja auch auf SECONDARYDOWN legen dann müssten die normalen controlclicks weiterhin funtkionieren.
versuch es mal hiermit:
[autoit]#include <WindowsConstants.au3>
#include <Misc.au3>
#include <GUIConstantsEx.au3>
Opt("GuiOnEventMode", 1)
HotKeySet("{F3}", "_Exit")
[/autoit][autoit][/autoit][autoit]Global $hWnd = GUICreate("Untitled", 100, 100, Default, Default, -$WS_POPUP)
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "move")
GUISetBkColor(0x000000, $hwnd)
GUISetState(@SW_SHOW)
$xys = WinGetHandle ("[ACTIVE]")
While 1
sleep(20);_WinAPI_CheckWinMove($hWnd)
WEnd
func move()
DllCall("user32.dll","int","SendMessage","hWnd", $xys,"int",$WM_NCLBUTTONDOWN,"int", $HTCAPTION,"int", 0)
EndFunc
Func _Exit()
Exit
EndFunc
habe mich seit kurzem auch mit gdi+ angefreundet, da hat man schon einige möglichkeiten:
[Blockierte Grafik: http://www4.pic-upload.de/20.05.10/hdwzf4ybo2h.jpg]
ich setzte das als teil von nem anderen script ein, um bilder vor dem upload schnell mal zu bearbeiten. kann ja mal versuchen das zeichenscript als stand-alone zu machen und es dann zu posten.
[autoit]Alles anzeigenHotKeySet ("!^s", "start")
[/autoit] [autoit][/autoit] [autoit]
sleep (2000)
send ("{F1}")
send ("{F4}")
While 1
$farbe = PixelGetColor (117, 559)
$farbe <> 0xFFC8C8
sleep (30)
WEnd
Sleep (2500)
Send ("{F4}")HotKeySet ("!^e", "Exit")
[/autoit]
Dieser Code soll eigentlich:
2 Sekunden warten,
F1 drücken,
F4 drücken,
Die Farbe auf (117,559) checken,
Solange diese Ungleich 0xFFC8C8 ist,
alle 0,03 Sekunden erneut checken,
sobald diese gleich ist,
2,5 Sekunden warten
F4 drückenDas soll er dann immer weider wiederholen.
Dazu, sollen meine beiden HotKeySet sollen eigentlich ein Start und Stop des Scripts ermöglichen...
funktioniert leider nicht...
Als Fehlermeldung bekomme ich, das etwas mit dem While nicht stimmt...Wäre über Hilfe erfreut, danke
grüße
die bedingung der schleife sollte so aussehen:
[autoit]HotKeySet ("!^s", "start")
sleep (2000)
send ("{F1}")
send ("{F4}")
While $farbe <> 0xFFC8C8
$farbe = PixelGetColor (117, 559)
sleep (30)
WEnd
Sleep (2500)
Send ("{F4}")
HotKeySet ("!^e", "Exit")
[/autoit]genaues lesen hilft EM.
Ich habe ja geschrieben das er es mit ALT+A machen will es aber schon nur mit ALT funktioniert.
Das die Hotkeys bei dir nicht wie gewünscht reagieren kann ich mir nicht erklären.
Den Selbstschutz der Lupe, das sie sich nicht selbst und somit ins unendliche vergrößert,
habe ich im Setup hinzugefügt. Scriptdownload im ersten Post aktualisiert. mfg
das mit dem zoomen innerhalb der lupe will ich mal versuchen zu sperren.
die hotkeys kann man sich ja im script beliebig selbst verändern.
lg
Hallo,
habe nach Durchsicht von 2, 3 Scripten aus dem Autoitforum mal eine Lupe nach eigenen
Vorstellungen gemacht:
* Die Fenstergröße ist variabel, es hat keinen Systemrand und kann per Drag
(links-gehaltener Maustaste) verschoben werden.
* Ein Rechtsklick innerhalb des Lupenfenster öffnet ein kleines Setup.
* Zoomverstellung auch ohne Setupdialog (Hotkey's ALT+1 bzw. ALT+2)
* Einfrieren / Liveview per Hotkey ALT+a
* Fixieren der Lupe auf einen bestimmten Bereich per Hotkey ALT+3
(ohne Fixierung wird der Bereich um den Mauszeiger dargestellt)
Viel Spass beim testen.
EDIT: Habe das Script neu hochgeladen. Die Lupe ist nun mit einem Selbstschutz ausgestattet, den man per Setup aktivieren / deaktivieren kann.
ich mach das mit autoit nur indirekt, arbeite in meinem script zusätzlich mit curl.
hab dir mein script mal angehängt. die compilierte version findest du auf meiner seite
https://autoit.de/www.andygo.de
die nötigen file-installs sind alle kostenfreie programme, diese kann ich bei bedarf zur verfügung stellen.
um die mit bild-daten gefüllte zwischenablage z.b. in ne jpg-datei zu speichern nutze ich
irfanview auf commandline-ebene, d.h. ohne das die gui von irfanview sichtbar wird.
auszug aus meinem script:
[autoit]Send("{PRINTSCREEN}")
sleep(350)
Runwait (FileGetShortName(@TempDir) & "\" & $precfg0 & "\" & $precfg0 & "i_view32.exe /clippaste /crop=("&$s_left&","&$s_top&","&$s_width&","&$s_height&") /silent /resample /convert=" & $datei2 & " /info=" & FileGetShortName(@TempDir) & "\" & $precfg0 & "\test.txt", FileGetShortName(@TempDir) & "\" & $precfg0 & "\", @SW_HIDE)
hier noch ne realtime erkennung als tooltip bei gedrückter maustaste:
[autoit]#Include <Misc.au3>
msgbox(0,"","test läuft nach dieser box solange die maustaste gedrückt gehalten wird.")
While Not _IsPressed(01)
Sleep(50)
WEnd
While _IsPressed(01)
$mgp_2 = MouseGetPos( )
ToolTip($mgp_2[0] & "x" & $mgp_2[1])
sleep(50)
WEnd
ToolTip("")
msgbox(0,"","test ende")