Was ist bei dir in der Registry unter HKEY_CLASSES_ROOT\AutoIt3Script\Shell?
Normalerweise müssten da die Einträge Compile, Run, Edit etc. sein.
Beiträge von name22
-
-
Zitat von name22
Der Rückgabewert von TrayGetMsg beinhaltet die ID des TrayMenuItems das angeklickt wurde.
Du vergleichst aber den Rückgabewert von GUIGetMsg mit den ID's der TrayMenuItems. GUIGetMsg und TrayGetMsg sind 2 verschiedene Funktionen ;).
Deine Hauptschleife müsste eher so aussehen:Spoiler anzeigen
[autoit]While True
[/autoit]
$nMsg = TrayGetMsg()
Switch $nMsg
Case $tool1
Send("#r")
Case $tool10
Run("mstsc")
;etc...
EndSwitch
WEnd -
Wo kommt denn bitte $nMSg her? Der Rückgabewert von TrayGetMsg beinhaltet die ID des TrayMenuItems das angeklickt wurde.
Ich würde dir empfehlen, das ganze wie mit einer normalen MessageLoop zu machen. Also am Anfang der Schleife $nMsg = TryGetMsg() und dann eine Switch Abfrage mit $nMsg um herauszufinden welches TrayItem angeklickt wurde.
Und wieso benutzt du GUISetState vor GUICreate?
-
Nett. Die Idee hatte ich auch mal vor einiger Zeit. Die Sekundenanzeige ist ein klein wenig zu viel finde ich, aber das ist wohl geschmackssache.

-
Abgesehen davon, liegt dein Problem vermutlich daran, dass du die ID von dem Control verwendest. Die ID kann aber bei jedem Start des programms anders sein. Vielleicht klappt es ja mit einem anderen Wert, wie Class und Instance.
Das ganze brauchst du aber eigentlich sowieso nicht, wenn du den Silent Switch verwendest wie andygo geschrieben hat.
Und "X funktioniert nicht." ist keine gute Problembeschreibung ;). -
Gute Sache. Alternativ geht das auch so:
Spoiler anzeigen
[autoit]#include <GDIP.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <Misc.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$iGUIColorBG = 0xFFFFFFFF
[/autoit] [autoit][/autoit] [autoit]
$iGUIWidth = 400
$iGUIHeight = 400$hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)$hPenRed = _GDIPlus_PenCreate(0xFFFF0000)
[/autoit] [autoit][/autoit] [autoit]
$hPenGreen = _GDIPlus_PenCreate(0xFF00FF00)$hPath = _GDIPlus_PathCreate()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PathAddLine($hPath, 50, 50, 100, 50)
_GDIPlus_PathAddLine($hPath, 100, 50, 75, 100)
_GDIPlus_PathAddLine($hPath, 75, 100, 50, 50)_GDIPlus_GraphicsDrawPath($hGraphic, $hPath)
[/autoit] [autoit][/autoit] [autoit]$hRegion = _GDIPlus_RegionCreateFromPath($hPath)
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
[/autoit] [autoit][/autoit] [autoit]While Sleep(20)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($hBuffer, $iGUIColorBG)$aMousePos = GUIGetCursorInfo()
[/autoit] [autoit][/autoit] [autoit]
Switch _GDIPlus_RegionIsVisiblePoint($hRegion, $aMousePos[0], $aMousePos[1], $hBuffer)
Case True
_GDIPlus_GraphicsDrawPath($hBuffer, $hPath, $hPenGreen)
Case False
_GDIPlus_GraphicsDrawPath($hBuffer, $hPath, $hPenRed)
EndSwitch_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Exit()
[/autoit]
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_RegionDispose($hRegion)
_GDIPlus_PathDispose($hPath)
_GDIPlus_PenDispose($hPenGreen)
_GDIPlus_PenDispose($hPenRed)
_GDIPlus_Shutdown()
Exit
EndFunc
Aber dein Script ist da flexibler und von der Rechnung her effizienter. -
Die Zeile würde alle passenden Unterfelder finden. Auch in Feld 2 oder 3 etc..
[autoit]
Probier mal das hier:$regexp_test = StringRegExp($database,'(?s)<Item Class="Feld_1" ID="{(.*?)}">.*?<Unterfeld_1>(.*?)</Unterfeld_1>.*?<Unterfeld_2>(.*?)</Unterfeld_2>.*?<Unterfeld_5>(.*?)</Unterfeld_5>.*?</Item>',3)
[/autoit] -
Zitat
das Projekt liegt dann erst mal auf Eis, doch die Theorie lässt mich nicht los und ich setze mich immer wieder dran, bis es schließlich funktioniert.
Aber meistens läuft es ganz gut.
Kenne ich. Nur die Wiederaufnahme klappt bei mir nicht immer so gut.
Herzlich Willkommen im Forum.
-
Wenn sich das gesuchte Feld öfters ändern, dann musst du das Pattern mit Hilfe von Variablen flexibler gestalten.
Zum Beispiel:Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$sTest = "<AutoIt>1243287</Autoit>" & @CRLF & "<Andre>83847</Andre>" & @CRLF & "<Test>65312</Test>" & @CRLF & "<foo>444</foo>" & @CRLF & "<1337>34535</1337>" ;HTML String
[/autoit] [autoit][/autoit] [autoit]Dim $aSearch[3] = ["AutoIt", "Test", "1337"] ;Suchbegriffe
[/autoit] [autoit][/autoit] [autoit]
Dim $aResult[1] = [0] ;Ergebnis Array
For $i = 0 To UBound($aSearch) - 1
$sTemp = StringRegExpReplace($sTest, "(?i)(?s).*<" & $aSearch[$i] & ">(.+?)</" & $aSearch[$i] & ">.*", "$1")
If Not @error Then
$aResult[0] += 1
ReDim $aResult[$aResult[0] + 1]
$aResult[$aResult[0]] = $sTemp
EndIf
Next_ArrayDisplay($aResult)
[/autoit]Aber ich denke, da ist i2cs Vorschlag wesentlich besser.
-
Hm. Gut wir können es ja mal mit RegEx versuchen. Welche Stellen willst du auslesen. Nur Feld 1 mit Unterfeld 1, 2, 5?
-
Hast du vielleicht ne wichtige properties Datei aus dem SciTE Verzeichnis gelöscht?
-
Zitat
Das liegt leider, am ".":
"Normally matches any character except a newline. "
Aber da findest du sicher selber ein Weg dran vorbei:)
Was?...Zitat von Hilfe(?s) . matches anything including newline. (by default "." don't match newline)
Ich hab ihm bei dem Pattern in der SB geholfen, und ihm das mit dem (?s) switch schon gesagt ;).@Andre Kannst du mal zeigen, welches Pattern du genau wie verwendet hast? Am besten den Ausschnitt im Quellcode. Vielleicht auch gleich noch ein Beispiel, dann wissen wir wie das Pattern ungefähr aussehen muss.
-
Herzlich Wilkommen .Ma3ter..

Ich wünsch dir viel Spaß auf autoit.de. -
Da hast du aber viel in meinen kurzen Beitrag hineininterpretiert... Es war weder mein Ziel herablassend zu wirken, noch dich als dumm zubezeichnen. Wie du darauf kommst kann ich kaum nachvollziehen... Woher sollte ich denn bitte wissen wie wichtig das Passwort ist, und wofür es nachher von wem verwendet wird? Aus deinem ersten Beitrag ist für mich nicht mal ersichtlich, was du eigentlich willst. "Aber mach das wie du meinst" sollte heißen "Aber mach das wie du meinst" wo soll da ein tieferer Sinn sein?
-
Ein normaler User kann ohne Decompiler gar nichts von deinem ursprünglichen Quellcode lesen, es sein denn du aktivierst die entsprechende Funktion mit der selbiger in der .exe hinterlegt wird.
Ich würde da zwar auf Nummer sicher gehen, aber mach das wie du meinst ;). -
Zitat
Über kryptographische Hashfunktionen, wie md5, sollte sich aber trotzdem einge gewisse Sicherheit garantieren lassen, da die erstellten Hashes nur schwer wieder zurückgewandelt werden können
Das hab ich mir auch gedacht, aber ich denke er braucht das Passwort am Ende wieder in Klartextform, um es mit seinem programm nutzen zu können. Und wenn das Script das Passwort decrypten kann, kann jeder mit einem decompiler das auch. -
Die wohl einzig sichere Lösung: Das Passwort nicht in das Script schreiben. Über das Thema haben wir bereist ein paar mal diskutiert, und sind zu dem Schluss gekommen, dass Passwörter aufgrund der einfachen Dekompilierbarkeit der AutoIt .exe's in einem .au3 Script nicht sicher untergebracht sind. Es gibt sicherere Orte ein Passwort unterzubringen...
-
christopher Mein Script läuft nicht die ganze Zeit während Iron aktiv ist, und löscht die Datei vorher. Ich hab keine Ahnung welche Version j!nx braucht, aber so wie sichs anhört kann er sich das ja auch selbst zusammenbasteln.
-
Das wird dann wohl unter Vista nicht funktionieren.. Ich bin mir ziemlich sicher, dass das unter Vista auch irgendwie gehen muss. Aber leider bin ich mir nicht sicher wie...
Die Registry kannst du aber vermutlich vergessen, da nur durch eine Bearbeitung des Wertes in der Registry Änderungen erst nach einem Neustrart/Neuanmeldung übernommen werden.
Eventuell kann man die Funktion auch auf Vista umschreiben. -
Finde ich eher unnötig. Wenn das Problem des Threaderstellers gelöst wurde, kann er sich ja per Beitrag bedanken. Falls jemand per SuFu oder Google auf einen Thread/Beitrag stößt der ihm weiterhilft, kann derjenige ja auf den "+1" Button klicken, um dieses Stück Text in den Google Pageranks aufsteigen zu lassen.