Dynamik ist de facto einfach viel zutreffender als Flexibilität.
Beiträge von Lenny
-
-
Hallo!
Vielen Dank, habe es nun so gemacht:
[autoit]#include <ScreenCapture.au3>
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>Opt("WinTitleMatchMode", 1)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]
Opt("GUIOnEventMode", 1)
HotKeySet("^b", "_get")#region ### START Koda GUI section ### Form=
[/autoit][autoit][/autoit][autoit]
$hForm = GUICreate("", 169, 54, 192, 124, 0)
GUISetCursor(3);
#endregion ### END Koda GUI section ###GUISetOnEvent($GUI_EVENT_CLOSE, "close", $hForm)
[/autoit][autoit][/autoit][autoit][/autoit][autoit];Global $mTempPos[2]
[/autoit][autoit][/autoit][autoit]
$winHandle = WinGetHandle("")
If $winHandle = 0 Then Exit
$winPos = WinGetPos("")
If $winPos = 0 Then Exit
WinMove($hForm, "", "", "", $winPos[2], $winPos[3])
_GDIPlus_Startup();
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hForm)
$hRectBrush = _GDIPlus_BrushCreateSolid(0x33FF0000)
$hSImage = 0
Global $hBitmap = 0;While 1
[/autoit][autoit][/autoit][autoit]
If WinActive($hForm) Then
If $hSImage[1] <> 0 Then
If (_IsPressed(01)) Then
$mPos = MouseGetPos();
$mTempPos = $mPos;While (_IsPressed(01))
[/autoit][autoit][/autoit][autoit]
$mNewPos = MouseGetPos()
If ($mNewPos[0] <> $mTempPos[0] Or $mNewPos[1] <> $mTempPos[1]) Then
_GDIPlus_GraphicsDrawImage($hGraphic, $hSImage[1], 0, 0)
_GDIPlus_GraphicsFillRect($hGraphic, $mPos[0], $mPos[1], $mNewPos[0] - $mPos[0], $mNewPos[1] - $mPos[1], $hRectBrush)EndIf
[/autoit][autoit][/autoit][autoit]
$mTempPos = $mNewPos
If _IsPressed(02) Then
$hClone = _GDIPlus_BitmapCloneArea($hSImage[1], $mPos[0], $mPos[1], $mNewPos[0] - $mPos[0], $mNewPos[1] - $mPos[1])
_GDIPlus_ImageSaveToFile($hClone, @ScriptDir & "/SCR/scr_" & @HOUR & @MIN & @SEC & @MDAY & @MON & @YEAR & ".jpg")
_GDIPlus_BitmapDispose($hClone)
_WinAPI_DeleteObject($hSImage[0])
GUISetState(@SW_HIDE, $hForm)
ExitLoop
EndIf
WEndElseIf _IsPressed(02) Then
[/autoit][autoit][/autoit][autoit]
_WinAPI_DeleteObject($hSImage[0])
GUISetState(@SW_HIDE, $hForm)
EndIf
Sleep(50)
EndIf
EndIf
WEndFunc close()
[/autoit][autoit][/autoit][autoit]
_GDIPlus_BitmapDispose($hClone)
_WinAPI_DeleteObject($hSImage[0])
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_BrushDispose($hRectBrush)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>closeFunc _takeScreen()
[/autoit][autoit][/autoit][autoit]
Dim $hHandles[2]
$hHandles[0] = _ScreenCapture_CaptureWnd("", $winHandle)
$hHandles[1] = _GDIPlus_BitmapCreateFromHBITMAP($hHandles[0])
GUISetState(@SW_SHOW, $hForm)
_GDIPlus_GraphicsDrawImage($hGraphic, $hHandles[1], 0, 0)
Return ($hHandles)
EndFunc ;==>_takeScreenFunc _get()
[/autoit]
$hSImage = _takeScreen()
EndFunc ;==>_getGrüße,
Lenny -
Guten Abend euch allen!
Ich versuche gerade aus einem Bild einen Bereich mit Hilfe von GDI+ herauszuschneiden. Das Bild wird auf die GUI gemalt. Dann sollte ein Bereich auswählbar sein (Links Klick + Ziehen) und wenn die Maus losgelassen wird dieser gespeichert werden. Leider weiß ich nicht wie man ein zuvor gemaltes Rechteck wieder entfernen kann, sodass immer ein neues halbtransparentes überlagernd Gezeichnet wird - Folge ist, dass man nicht mehr sieht was man auswählt.
Hat jemand vielleicht eine Idee, wie ich dieses Problem lösen kann? Ich habe das Rechteck mit GDI+ und nicht mit Hilfe einer zweiten GUI gemacht, da ich dies als schöner Emfinde.
Hier erstmal der Code:
[autoit]#cs ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]AutoIt Version: 3.3.6.1
[/autoit][autoit][/autoit][autoit]
Author: myNameScript Function:
[/autoit][autoit][/autoit][autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]; Script Start - Add your code below here
[/autoit][autoit][/autoit][autoit]
#include <ScreenCapture.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>Opt("WinTitleMatchMode", 1)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]
Opt("GUIOnEventMode", 1)
HotKeySet("^b", "_get")#region ### START Koda GUI section ### Form=
[/autoit][autoit][/autoit][autoit]
$hForm = GUICreate("", 169, 54, 192, 124, 0)
GUISetCursor(3);
#endregion ### END Koda GUI section ###GUISetOnEvent($GUI_EVENT_CLOSE, "close", $hForm)
[/autoit][autoit][/autoit][autoit];Global $mTempPos[2]
[/autoit][autoit][/autoit][autoit]
$winHandle = WinGetHandle("")
If $winHandle = 0 Then Exit
$winPos = WinGetPos("")
If $winPos = 0 Then Exit
WinMove($hForm, "", "", "", $winPos[2], $winPos[3])
_GDIPlus_Startup();
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hForm)
$hRectBrush = _GDIPlus_BrushCreateSolid(0x33FF0000)
$hDelBrush = _GDIPlus_BrushCreateSolid(0x00FFFFFF)While 1
[/autoit][autoit][/autoit][autoit]
If WinActive($hForm) Then
If (_IsPressed(01)) Then
$mPos = MouseGetPos();
$mTempPos = $mPos;
$hGraphicRec = _GDIPlus_GraphicsCreateFromHWND($hForm)While (_IsPressed(01))
[/autoit][autoit][/autoit][autoit]
$mNewPos = MouseGetPos()
If ($mNewPos[0] <> $mTempPos[0] Or $mNewPos[1] <> $mTempPos[1]) Then
_GDIPlus_GraphicsFillRect($hGraphicRec, $mPos[0],$mPos[1],$mNewPos[0]-$mPos[0],$mNewPos[1]-$mPos[1], $hRectBrush)
EndIf
$mTempPos = $mNewPos
WEnd
ElseIf _IsPressed(02) Then
GUISetState(@SW_HIDE, $hForm)
EndIf
Sleep(50)
EndIf
WEndFunc close()
[/autoit][autoit][/autoit][autoit]
Exit
EndFunc ;==>closeFunc _takeScreen()
[/autoit][autoit][/autoit][autoit]
$hBitmap = _ScreenCapture_CaptureWnd("", $winHandle)
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
GUISetState(@SW_SHOW, $hForm)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
Return (1)
EndFunc ;==>_takeScreenFunc _get()
[/autoit][autoit][/autoit][autoit][/autoit]
_takeScreen()
EndFunc ;==>_getBotUnd weiß jemand wie ich aus meinem Ursprungsbild den ausgewählten Bereich herausschneiden und speichern kann?
Ich freue mich über jede Antwort!
Vielen Dank im Voraus und viele Grüße,
Lennart
-
Spannend wäre zu wissen, was zwischen <a id=xxx> und </a>
Warscheinlich wird dort ein Text stehen, bzw. eine Zeile, wie der Link dann auch im Browser dargestellt wird.
Unter dieser Voraussetzung würde dann: _IELinkClickByText funktionieren.
Grüße,
Lenny
-
Guck mal in die Hilfe und gibt _Sound ein.
_SoundClose ( $aSnd_id )
_SoundLength ( $aSnd_id [, $iMode ] )
_SoundOpen ( $sFile )
_SoundPause ( $aSnd_id )
_SoundPlay ( $aSnd_id [, $iWait ] )
_SoundPos ( $aSnd_id [, $iMode ] )
_SoundResume ( $aSnd_id )
_SoundSeek (ByRef $aSnd_id, $iHour, $iMin, $iSec )
_SoundStatus ( $aSnd_id )
_SoundStop (ByRef $aSnd_id )lG, Lenny
-
Du könntest zumindest den Obfuscator drüber laufen lassen, aber der erschwert nur das Lesen des SourceCodes (Bzw. macht ihn unlesbar)
Ich denke einen 100% Schutzt gibt es momentan nicht.
-
Hallo SORUS,
die genannten Funktionen sind für jedes Fenster gülitg. Es wurde einfach eine selbsterstellte GUI als Beispiel genommen.
Mit
[autoit]WinGetHandle()
[/autoit]solltest du weiterkommen.
lG,
Lenny -
Hey!
Wenn ich
[autoit]_GUICtrlListView_SimpleSort ($hListView, $variable, GUICtrlGetState($hListView))
[/autoit]weglasse, funktioniert es bei mir. Aber komisch finde ich das schon.
lG,
Lenny
-
Äh, wie Raupi schon sagte? Mit Raupis oder meinem Script:
Zitat@dominic208 bei deiner Func _berechnen kommen keine 2 MsgBox´en.
-
Bei meinem Script kommt nur keine MsgBox, wenn du keine Rechenart auswählst. Du musst in die Liste klicken, damit die rechenart, die aktuell angezeigt wird, auch verwendet werden kann.
Das hat raupi in seinem Script ein bisschen schlauer gemacht. Bei ihm ist das "+" schon zu beginn ausgewählt, was auch erklärt, dass du in Raupi's Script zumindest "+" rechnen kannst.Dein Problem ist, dass du zwar in der ListBox rumscrollst, aber letzendlich garkeine Rechenart auswählst.
-
Raupi's und Mein Script funktionieren bei mir einwandfrei
-
Hallo.
Du darfst in $listbox nicht noch das Ergebnis von GuiCtrlSetData speichern, weil du dann das Handle deiner Listbox überschreibst und somit mit ihr nichts mehr machen kannst.
Den Rest würde ich so machen:
[autoit]#include <ButtonConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
Dim $listbox
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 77, 192, 124)
$Input1 = GUICtrlCreateInput("10", 24, 24, 153, 21)
$listbox = GUICtrlCreateList("", 216, 24, 97, 19)
GUICtrlSetData(-1, "+|-|/|*")
$Input2 = GUICtrlCreateInput("10", 336, 24, 129, 21)
$Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Button1
_berechnen()
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit][autoit][/autoit][autoit]
WEndFunc _berechnen()
[/autoit]
$Art = GUICtrlRead($listbox)
If $Art <> "" Then
$Zahl1 = GUICtrlRead($Input1)
$Zahl2 = GUICtrlRead($Input2)
$erg = Execute($Input1 & $Art & $Input2)
MsgBox(0, "", $erg)
EndIf
EndFunc ;==>_berechnen -
Zitat
Den Rechten Button "Icon auswählen" würde ich noch um 1px nach rechts schieben.
Ich glaube lieber nach links
Edit: Ups, ich hab auf den "Programm Wählen" Button geachtet
-
Zitat
Schönes Script.
Du könntest ja noch eine HotKey Tastenabfrage machen, denn ich benutz meine Mittlere Maustaste oft, und was anderen wäre vllt. besser.Jap das wäre schön, denn ich hab keine mittlere Maustaste
Ich habe mir das ganze aber mal angeschaut, kann nur sagen, das es wirklich sehr sehr gut aussieht
Das mit den Icons ist wirlich sehr schick!
-
Ich denke er meinte:
[autoit]
[/autoit][autoit][/autoit][autoit]
MsgBox(64, 0, _readLineFromBack('test2.txt', 2))Func _readLineFromBack($filepath, $nr = 0)
[/autoit][autoit][/autoit][autoit][/autoit]
Local $aSplit = StringSplit(StringStripCR(FileRead($filepath)), @LF)
If IsArray($aSplit) Then Return $aSplit[$aSplit[0] - $nr]
Return -1
EndFunc ;==>_readLastLine -
[autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]
Func _Download($aFunc_Array = "")
[/autoit][autoit][/autoit][autoit]
$Result = ""
For $i2 = 0 To _GUICtrlListView_GetItemCount($pListView) - 1
If _GUICtrlListView_GetItemChecked($pListView, $i2) Then ; wenn angehakt dann
$sFileName1 = StringTrimLeft($aFunc_Array[$i2][4], StringInStr($aFunc_Array[$i2][4], "/", 1, -1));Der Dateiname des downlaods
$sFileName2 = StringTrimLeft($aFunc_Array[$i2][5], StringInStr($aFunc_Array[$i2][5], "/", 1, -1));Der Dateiname des downlaods
$string1 = StringStripWS($aFunc_Array[$i2][4],
$Result &= $string1 & @CRLF
$string2 = StringStripWS(@ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1,
$Result &= $string2 & @CRLF
HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 2.0.50727)") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist
InetGet($string1, $string2, 1, 0);Datei wird gedownloadet
If @error Then
$Result &= "InetGet Error:" & @CRLF
MsgBox(0, "Fehler", "Fehler beim 1. Download" & @CRLF)
EndIf
;InetGet("http://oci.blpaced.net/1.jpg", "F:\1-1.jpg");InetGet($aFunc_Array[$i2][5], @ProgramFilesDir & '\oci\programmdateien\extra\' & $sFileName2,1,0) ;Datei wird gedownloadet
[/autoit][autoit][/autoit][autoit]
;If @error Then ConsoleWrite("Fehler beim 1. Download" & @CRLF)
ClipPut($Result)
MsgBox(0, "Quellpfad 1", $string1)
MsgBox(0, "Quellpfad 2", $string2);$aFunc_Array[$i2][7]=InetGetSize($aFunc_Array[$i2][5])
[/autoit][autoit][/autoit][autoit]
;$aFunc_Array[$i2][8]=InetGetSize($aFunc_Array[$i2][6])
; ConsoleWrite('--' & @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1 & '<<' & @CRLF)
; ConsoleWrite('--' & '"' & @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1 & '"' & '<<' & @CRLF)EndIf
[/autoit][autoit][/autoit][autoit]
Next ;= > weiter mit ForEndFunc ;==>_Download
[/autoit]Du kannst die Func ja mal genauso ausführen, und das Ergebnis (das in deiner Zwischenablage liegt) hier posten, bzw in dein Alten Post reineditieren!
-
Hallo!
Dann lass doch entweder
[autoit]StringStripWS ( "string", flag )
[/autoit]drüber laufen, oder prüfe ob am Anfang oder am Ende ein leerzeichen steht:
[autoit]If StringLeft($URL, 1) = " " Then StringTrimLeft($URL, 1)
[/autoit]
If StringRight($URL, 1) = " " Then StringTrimRight($URL,1)Oder versuch dich an StringRegExpReplace, damit kannst du prüfen ob am Anfang oder Ende mehrere Leerzeichen stehen, und diese ersetzen.
Wenn ich gleich Zeit hab kann ich dir die Exp auch machen (Ich muss grade mal Mittag essen :P)
lG,
Lenny -
Hallo!
Ich denke
[autoit]HttpSetUserAgent
[/autoit]
könnte dir helfen.Wenn nicht, guck einfach mal hier:
https://autoit.de/index.php?page…aced#post129258lG,
Lenny -
[autoit]
$test = "test | http://www.autoit.de| lol | xD"
[/autoit][autoit][/autoit][autoit]
;~ $test = " haha xD| lol | xD"$string = StringInStr($test, "www.")
[/autoit][autoit][/autoit][autoit]_button($test, 2)
[/autoit][autoit][/autoit][autoit]Func _button($text, $zeile)
[/autoit]
$string = StringSplit($text, "|")
ConsoleWrite($string[$zeile])
$instr = StringInStr($string[$zeile], "www.")
ConsoleWrite($instr)
If Not $instr Then
MsgBox(0, "", $string[$zeile])
Else
ShellExecute(StringStripWS($string[$zeile], 8))
EndIf
EndFunc ;==>_button -
Okay, vielen Dank
Hilft mir wirlkich sehr, auch vielen Dank für die Links
lG, Lenny