Handelt es sich hier um das selbe Programm, dass du hier besprichst? PostMessage im background soll die shift taste ignorieren
Falls ja, dann hat Oscar dir im Prinzip schon die Antwort auf deine jetzige Frage geboten.
Beiträge von name22
-
-
Ich kann das so wie es im ersten Post beschrieben ist nicht wirklich reproduzieren. Es ist so oder so zuverlässiger ControlSend zu verwenden um die Tasteneingabe direkt an das gewünschte Fenster zu schicken. Eventuell ist ja ein Logikfehler in deinem Script? Das Script aus dem ersten Post schickt beim Betätigen von Strg+B "Das soll eingefügt werden" an das aktive Fenster, sofern der Fenstertitel "isynet" enthält. Dann wird aber in jedem Fall noch ein Strg+B gesendet, egal welches Fenster den Tastaturfokus hat. Wenn es das tun soll funktioniert es bei mir
.
-
Ich vermute, dass das Problem bei der Sicherheitsfunktion der Browser liegt (z.B. Firefox). Bei einer gesicherten Verbindung zu einem Server werden Inhalte blockiert die über eine nicht gesicherte Verbindung bereitgestellt werden.
Bei Firefox zum Beispiel ändert sich nur das kleine Statussymbol links in der Adressleiste wenn man auf einen der genannten Links klickt. Beim Klick auf das Symbol wird man informiert, dass unsichere Inhalte blockiert wurden.
Das Problem sollte sich relativ einfach lösen lassen, sobald ein Admin darauf aumerksam wird.
Eventuell kannst du ja noch eine PN an GunFood schreiben, falls er davon noch nichts weiß. -
Dann musst du eben die Controls verstecken und wieder anzeigen lassen mit GUICtrlSetState. Wie man Controls mit GUICtrlSetPos verschieben kann hat BugFix ja bereits demonstriert. Somit steht deinem Vorhaben ja nichts im Wege ;).
-
Du verkleiners mit GraphicsDrawImageRectRect nicht das Bild, sondern du zeichnest es nur mit veränderter Größe auf eine Grafik. Mit _GDIPlus_ImageResize kannst du ein Bild skalieren ;). Danach speicherst du es mit _GDIPlus_ImageSaveToFile ab.
-
Das kommt wohl darauf an, ob sie tatsächlich nur eine Ausnahme hinzufügen, oder ihre falsche Virenmeldung bei AutoIt ändern. Es kann aber auf keinen Fall schaden mal dein Programm an die zu schicken und dich über den false positive zu beschweren.
-
Ah, das macht Sinn
. Wäre es vielleicht eine Lösung, wenn du eine kleine GUI schreibst, die einen neuen Robocopy Prozess starten kann? Das kann ja letztendlich genauso aussehen wie eine normale Konsole.
Du möchtest aber vermutlich eine gewöhnliche Konsole verwenden mit der du nicht nur Robocopy bedienen kannst, oder?Edit: Eventuell kannst du auch anstelle von Robocopy ein AutoIt Programm über die Konsole starten, das die Parameter einfach an einen Robocopy Prozess weitergibt. Ich weiß nur nicht wie sauber sich sowas integrieren ließe.
-
Meines wissens nach, kann nur der Elternprozess auf den Standard Output eines Prozesses zugreifen. Du müsstest also Robocopy im Script starten, dann ist es kein Problem den Stdout Stream zu registrieren.
Gibt es einen bestimmten Grund, warum du das nicht so machst? -
Es ist leider etwas schwierig zu sagen woran das jetzt liegen könnte. Es kann hier natürlich niemand nachsehen, ob das Addon funktioniert etc.
Du könntest vielleicht noch ein Script posten, das bei dir nicht funktioniert, auch wenn ich vermute, dass das Problem woanders liegt. -
Ich hab leider nicht die Zeit um dir mehr als einen quick & dirty "hack" zu basteln ^^. Dein Problem ist, dass in der Hauptschleife schon $msg mit $iBild verglichen wird, bevor diese Variable initialisiert wurde. GUIGetMsg gibt 0 zurück, wenn kein Event registriert wurde, deswegen wird ununterbrochen der Code im "Case $iBild" Zweig ausgeführt. Folgender Code funktioniert zwar, aber ich würde dir dringend empfehlen das umzustrukturieren. Eventuell ist der OnEventMode (Opt("GUIOnEventMode", 1)) hier besser geeignet als eine Schleife mit GUIGetMsg.
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>
#include "GuiScroll.au3" ; -> https://autoit.de/index.php?page…2464#post162464
#include <ScreenCapture.au3>Global $iBild = 9999 ;Variable auf einen Wert setzen der nie angenommen wird.
[/autoit][autoit][/autoit][autoit]startGui()
[/autoit][autoit][/autoit][autoit]Func startGui()
[/autoit][autoit][/autoit][autoit]
global $mainGui = GUIcreate("Titel", 600, 600)$tab = GUICtrlCreateTab(-1,-1,600,600)
[/autoit][autoit][/autoit][autoit]
$tab1 = GUICtrlCreateTabItem("Tab1")
GUICtrlSetState(-1, $GUI_SHOW)
$tab2 = GUICtrlCreateTabItem("Tab2")
$tab3 = GUICtrlCreateTabItem("Tab3")
$buttonStart = GUIctrlcreatebutton("start", 10, 30,120,30)
$tab4 = GUICtrlCreateTabItem("Tab4")
$tab5 = GUICtrlCreateTabItem("Tab5")
GUICtrlCreateTabItem("")GUIsetstate()
[/autoit][autoit][/autoit][autoit]$hGroup2 = GUICreate("",270,170,235,25,BitOR($WS_POPUP,$WS_BORDER,$WS_GROUP,$WS_VSCROLL,$WS_CLIPSIBLINGS),$WS_EX_MDICHILD,$mainGui)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
GUISetBkColor(0xffffff)
GUICtrlCreateButton("Testbutton", 10, 170, 100, 25)
Scrollbar_Create($hGroup2, $SB_VERT, 170 + 25) ; alle 3 Top-Werte (170 auch für Button und GuiCreate) einstellen um den Scrollpunkt festzulegen! +25 macht 25 Pix scrollbar
Scrollbar_Step(10, $hGroup2, $SB_VERT)While 1
[/autoit][autoit][/autoit][autoit]
$msg = GUIgetmsg()
Switch $msg
Case $tab
If GUICtrlRead($tab, 1) = $tab3 Then
GUISetState(@SW_SHOW, $hGroup2)
WinActivate($mainGui)
$iBild = _Bildvorschau($hGroup2,@ScriptDir & "\bild.jpg")
Else
GUISetState(@SW_HIDE, $hGroup2)
EndIf
Case $iBild
MsgBox("","Button gedrückt...","")
Case $buttonStart
ConsoleWrite("start()")
Case $GUI_EVENT_CLOSE
ConsoleWrite("exit" & @CRLF)
EndSwitch
WEnd
EndFunc ; ==> startGui()Func _Bildvorschau($hGui,$sImage)
[/autoit][autoit][/autoit][autoit]
Local Const $iWidth = 100, $iHeight = 100 ; Soll-Vorschaugroesse
Local Const $iX = 10, $iY = 10 ; x und y Abstand
GUISwitch($hGUI)
_GDIPlus_Startup() ;initialize GDI+
Local $hImage = _GDIPlus_BitmapCreateFromFile($sImage)
Local $hBitmap = _GDIPlus_ImageResize($hImage, $iWidth, $iHeight)
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)$cPic = GUICtrlCreatePic("", $iX, $iY, $iWidth, $iHeight)
[/autoit][autoit][/autoit][autoit]
GUICtrlSendMsg($cPic, 0x0172, 0, $hHBitmap)_WinAPI_DeleteObject($hHBitmap)
[/autoit]
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Return $cPic
EndFuncVielleicht hat jemand anderes ja eine saubere Lösung parat ;).
-
Es gibt scheinbar ein paar Missverständnisse deinerseits, was die GDIPlus Funktionen genau machen. _GDIPlus_GraphicsDrawImageRectRect gibt kein Handle zurück, weil es gar nicht für das Verwalten der Bitmap zuständig ist. Mit dieser Funktion zeichnest du eine Bitmap lediglich einmalig auf einen Grafikkontext (wie eine GUI). Deine Variable $hHBmp enthält des weiteren nur einen Dateipfad zu einem JPG Bild und kein Handle. Die Bitmap wird erst mit _BitmapCreateFromFile erstellt, der Rückgabewert dieser Funktion ist ein Handle ;).
[autoit]
Das wird dir aber für deine Zwecke nicht wirklich helfen, da diese Art von Handle nicht direkt von den Standard Controls akzeptiert wird. In folgender Form sollte das Ganze mehr deinen Erwartungen entsprechen:#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <ScreenCapture.au3>Local $sImage = @ScriptDir & "\bildgross.jpg"
[/autoit][autoit][/autoit][autoit]
Local Const $iWidth = 100, $iHeight = 100 ; Soll-Vorschaugroesse
Local Const $iX = 10, $iY = 10 ; x und y Abstand
Local $hGUI = GUICreate("GDI+ example", 600, 600)GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]$cPictureControl = _Bildvorschau($sImage)
[/autoit][autoit][/autoit][autoit]Do
[/autoit][autoit][/autoit][autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete($hGUI)Func _Bildvorschau($sImage)
[/autoit][autoit][/autoit][autoit]
_GDIPlus_Startup() ;initialize GDI+
Local $hImage = _GDIPlus_BitmapCreateFromFile($sImage)
Local $hBitmap = _GDIPlus_ImageResize($hImage, $iWidth, $iHeight)
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)Local $cPic = GUICtrlCreatePic("", $iX, $iY, $iWidth, $iHeight)
[/autoit][autoit][/autoit][autoit]
GUICtrlSendMsg($cPic, 0x0172, 0, $hHBitmap)_WinAPI_DeleteObject($hHBitmap)
[/autoit][autoit][/autoit][autoit]
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()Return $cPic
[/autoit]
EndFunc -
Ja, das sollte kein Problem sein. Es gibt dafür ja extra einen optionalen Parameter in der Funktion _FFSetValue (ich gehe mal davon aus, dass du die verwendest).
[autoit]
Hier wäre der Funktionsaufruf für das 3. Inputfeld mit Namen "password":_FFSetValue("Testwert", "password", "name", 2) ;Der letzte Parameter ist der 0-basierte Index, in diesem Fall "2" für das 3. Inputfeld
[/autoit] -
Ui! Vielen Dank für die Glückwünsche
. Ich bin äußerst gerührt
. Hoffentlich kann ich bald etwas öfter vorbeischauen wenn die Telekom ihre Kabel mal repariert.
-
Im Hilfeartikel zu GUICtrlCreatePic findest du ein Beispiel um transparente PNGs einzubinden...
-
Das sollte eigentlich nicht passieren. Die Funktionsdeklaration sollte nicht als Aufruf einer Variable gewertet werden, sondern als Deklaration eine lokalen Variable.
Das Problem liegt auch gar nicht bei Au3Check, die Fehlermeldung kommt von AutoIt. Ich hab so ein Verhalten bis jetzt nur im Zusammenhang mit DllCallbacks beobachtet. ^^. -
Ich bin mir nicht so sicher, ob das sinnvoll ist einfach alle Variablen global zu deklarieren, wenn er denn schon MustDeclareVars benutzt...
Hast du schon überprüft, ob irgendeine Variable in deiner Funktion, zum Zeitpunkt des Aufrufens, noch nicht deklariert ist? Möglicherweise ist das einfach nur eine seltsame Zeilenangabe von Au3Check -
Wenn du das irgendwie in die AutoIt.de Community einbinden möchtest, dann besprich das am besten per Email oder PN mit i2c und GunFood. Bezüglich Threadlänge bin ich mir nicht sicher was du meinst
. Wenn hier ein Thread tatsächlich mal zu lang sein sollte wird man sich schon melden, überstürz mal nichts.
Falls der Qualitätsstandard der Videos den des Forums reflektieren soll, dann mach doch mal eine Pilotepisode. Das Thema und das Script (ich rede nicht von einem AutoIt Script :P) für das Video kann dann vorher im Forum diskutiert werden.Ich bin übrigens leicht skeptisch aus ähnlichen Gründen wie Marthog. Die meisten AutoIt Videotutorials werden außerdem von einem recht jungen Publikum besucht, was ich in erster Linie auf die Popularität des Mediums zurückführe. Ob das Format tatsächlich für Tutorials zu spezifischen Themen geeignet ist wird sich wohl zeigen. Mir wäre es persönlich wichtiger das "Tutorial" Forum wieder etwas anzuregen und aktuell zu halten. Das Wiki Tutorial lässt auch zu wünschen übrig. Das beste mir bekannte deutsche AutoIt Tutorial ist das unfertige Buch von peethebee.
-
Da hast du Recht. Ich habe komplett überlesen, das 5-stellige Zahlen ignoriert werden sollen.
-
Meinst du das so?
Spoiler anzeigen
[autoit]ConsoleWrite("test1234" & @TAB & StringRegExp("test1234", "\d{4}") & @CRLF)
[/autoit]
ConsoleWrite("test356 " & @TAB & StringRegExp("test356", "\d{4}") & @CRLF)
ConsoleWrite("9999test" & @TAB & StringRegExp("9999test", "\d{4}") & @CRLF)
StringRegExp($sString, "\d{4}") gibt 1 zurück wenn $sString eine Zahl mit vier Ziffern enthält, ansonsten ist der Rückgabewert 0. -
@MaxChri Bedaure, aber dieser private Austausch war mir völlig unbekannt. Du hast alle Hinweise ignoriert die dich um eine Ausführung deiner Problembeschreibung und ein vollständigeres Script gebeten haben. Wie Kanashius in seinem Beitrag bereits angedeutet hat "Wie bereits weiter oben gesagt:" habe ich schon vermutet, dass das Problem in dieser Zeile liegt. Statt mich darauf hinzuweisen, dass du mich nicht verstehst hast du diesen Hinweis ignoriert. Wenn ich dein Verhalten immer noch falsch interpretiere lass es mich wissen.
Ich versuche Themen im Supportbereich immer so zu beenden, dass andere Personen die über die Suchfunktion darauf stoßen wissen was die Lösung für ihr Problem ist. In deinem Fall war ich mir nicht mal sicher ob das Problem jetzt gelöst wurde und wenn ja, durch welches Vorgehen. An deiner Schreibkompetenz habe ich übrigens nicht gezweifelt, aber "Ja Kanashius, ich weiß, dass du der beste bist xDDD " war wohl in meinen Augen kein klarer Hinweis darauf, dass das Problem gelöst ist.