ZitatIch würde auf einen Fehler in der GDI+ Datei in Windows XP tippen
Habe es mit einem Win7, laufend in einer Virtualbox getestet, funzt einwandfrei.Seltsam, dass es bisher noch keinem aufgefallen ist.
ZitatIch würde auf einen Fehler in der GDI+ Datei in Windows XP tippen
Habe es mit einem Win7, laufend in einer Virtualbox getestet, funzt einwandfrei.Seltsam, dass es bisher noch keinem aufgefallen ist.
Hi,
statt
_GDIPlus_GraphicsClear($backbuffer, 0x9A000000)
[/autoit]
mal die farbe auskommentieren
_GDIPlus_GraphicsClear($backbuffer)
[/autoit]
und es "brummt"
*edit* blöd, wenn man erst nach über ner stunde das posting abschickt....längst gelöst...sry
ZitatHat jemand ne Idee warum ihc es nicht beenden kann, nachdem es gestartet ist
Ja, weil du vor dem "Beenden" auf "Start" geklickt hast und aus der while/wend Schleife ab zeile 28 nicht rauskommst.
@ Der_Doc, Anno2008, peethebee
ich weiss, daß hier im Forum hitzig diskutiert wird wg Decompiler usw, aber man sollte trotzdem einen neuen Thread lesen, bevor man irgendetwas schreibt, was mit dem AKTUELLEN Thema garnichts zu tun hat.
Hier ging es in keinster Weise um irgendwelche Decompiler, die Einträge in der INI sollten lediglich so "verschlüsselt" AUSSEHEN wie auf dem Beispielbild. Hätte der Benman statt einer EXE eine MP3 oder eine DLL in Scite geladen und gescreent, dann wäre kein Wort gefallen wahrscheinlich^^....
@Benman, gewöhne dir schnellstens einen Schreibstil an, bei dem man auf Anhieb nachvollziehen kann, wo das Problem ist und was du meinst! Nicht jeder hat Lust, mehrmals nachzufragen was du meinen KÖNNTEST....
ciao
Andy
ZitatNun möchte ich aber nicht so eine verschlüsslung die in AutoIt vorhanden ist
sondern eine die den Text so ändert wie ca in den Bild...
Siehste, geht doch
Da wirst du mit dem IniWrite() Probleme bekommen, denn in deinem gescreenten "Text" sind Nullbytes (die viereckigen Dinger mit dem NUL drin) und die werden mit den "normalen" AutoIt-Stringfunktionen nicht behandelt^^
Spass beiseite, die
_stringencrypt()
[/autoit]gibt nur die Ziffern "0123456789ABCDEF" zurück, sieht irgendwie garnicht verschlüsselt aus^^
Daher hab ich mich mal an an das da gehalten,
Zitatsondern eine die den Text so ändert wie ca in den Bild..
und die Ausgabe von Stringencrypt "aufgehübscht". Jetzt werden die Ascii-codes von 30 bis 251 verwendet,
ZitatXEš²È8Û/ ç•ê±KOÖÄoßS&–;àÁgäد¾àSµÎkX2·ÊJ)¤,ÒŸ"ì®æEÈ/× Ôx4‡F²êyOeã½rv©’§É“Ãl¥Tg×ÀÉ°4l²¬\ÓäÐãÌÉŽG}C;~êíf³Û•‡á¨L(+€œìYEt
das sieht doch schon wesentlich gefährlicher aus, als das langweilige
Zitat7CFE30A0F70A172B1BF42481AC9D098580D8F4C6DC90FE0256BE6AD2CA4C02FD7CFE30A0F70A172B1BF42481AC9D098
oder etwa nicht^^
ciao
Andy
#include <GUIConstantsEx.au3>
#include <GuiConstantsEx.au3>
#include <String.au3>
Local $pass = "Passphrase" ;Passwort zum Verschlüsseln mittels _stringencrypt()
[/autoit] [autoit][/autoit] [autoit]$Form = GUICreate("Verschlüsseln", 358, 93, 193, 115)
$Input = GUICtrlCreateInput("Geheimtext", 14, 24, 181, 21)
$button = GUICtrlCreateButton("Verschlüsseln", 225, 24, 129, 25, 0)
$button2 = GUICtrlCreateButton("Entschlüsseln", 225, 54, 129, 25, 0)
GUICtrlCreateLabel("", 24, 72, 4, 4)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $button ;verschluesseln
$in = GUICtrlRead($Input)
If $in <> "" Then
$text = _verschluesseln(_StringEncrypt(1, $in, $pass, 1))
GUICtrlSetData($Input, $text)
EndIf
Case $button2 ;entschluesseln
$in = GUICtrlRead($Input)
If $in <> "" Then
$text = _StringEncrypt(0, _entschluesseln($in), $pass, 1)
GUICtrlSetData($Input, $text)
EndIf
EndSwitch
WEnd
Func _verschluesseln($string) ;nix grossartig verschlüsselt, sieht nur anders aus^^
Local $x = "" ;macht aus den Buchstaben 0-F (Rückgabe von _stringencrypt)
For $i = 1 To StringLen($string) ;zufällige Ascii-Codes von 30-251
$s = StringMid($string, $i, 1)
$r = Random(0, 12, 1)
$x &= Chr((dec($s)) * 13 + $r + 30)
Next
Return $x
EndFunc ;==>_verschluesseln
Func _entschluesseln($string)
Local $e = ""
For $i = 1 To StringLen($string)
$x = StringMid($string, $i, 1)
$e &= hex(((Asc($x) - 30) - (Mod((Asc($x) - 30), 13))) / 13,1)
Next
Return $e
EndFunc ;==>_entschluesseln
_GUICtrlListView_SetExtendedListViewStyle
[/autoit]
in der Hilfe gefunden "Doppelklick"
Das müsste es sein!
ciao
Andy
Hallo,
[autoit]clipput() und clipget()
[/autoit]handeln die Zwischenablage
und mit
_GUICtrlListView_JustifyColumn
[/autoit]klapppts auch mit der Ausrichtung!
ciao
Andy
ach, sowas?
LoginWrapper
Das packt deine *.EXE nur nach Passworteingabe aus...
ZitatGibt es den sonst nix was man direkt in autoit einbaun kann..
Drück dich einfach verständlich aus, damit man dir weiterhelfen kann... ich weiß immer noch nicht genau um was es dir geht, und die anderen sicher auch nicht, sonst hätte längst jemand geantwortet.
Hallo,
bei VBS und AutoIt muss ich immer an sowas denken
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Example WSH Script (VBScript)
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Require Variants to be declared before used
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Declare Variables & Objects
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim oShell
Dim oAutoIt
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Initialise Variables & Objects
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set oShell = WScript.CreateObject("WScript.Shell")
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Start of Script
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WScript.Echo "This script will run some test calculations"
oShell.Run "calc.exe", 1, FALSE
' Wait for the calc window to become active
oAutoIt.WinWaitActive "Rechner", ""
' Send some keystokes to calc
oAutoIt.Send "2*2="
oAutoIt.Sleep 500
oAutoIt.Send "4*4="
oAutoIt.Sleep 500
oAutoIt.Send "8*8="
oAutoIt.Sleep 500
oAutoIt.WinClose "Calc", ""
oAutoIt.WinWaitClose "Calc", ""
WScript.Quit
Alles anzeigen
Zeile 3 ...Zeile 24 und ab Zeile 38
Das schöne daran ist, man braucht diese "Scripte" nicht zu "kompilieren" um sie weiterzugeben....eigentlich müsste es einen AU3toVBS-Konverter geben^^
ciao
Andy
Hi,
https://autoit.de/www.gidf.de ....
mit "Datei verschlüsseln" findest du tausende Programme die das machen.
Oder aber per Autoit vom CHEFFE persönlch DAMIT
Ich hab zwar keinerlei Ahnung warum diese "Datenbank" verschlüsselt werden muss, aber naja^^
ZitatWoher wusstest du die drei nächsten Fragen, anno?
....es wird immer enger, bald sind alle Fragen verbraucht und die Fee ist verschwundibus
ciao
Andy
Der_Doc
genau das funktioniert leider nicht, weder mit controlgettext() noch mit controlcommand()
Hab mich mal umgeschaut.Terminalprogramme gibts wie Sand am Meer, aber die meisten sind nicht gerade gesprächig.
Aber ich habe eine Methode gefunden, den "Text" bzw die Terminalbefehle zu lesen, und zwar aus der LOG-Datei
Schau dir mal das ZOC von Emtec an, hat auch eine Scriptsprache, leider nicht per COM, sondern nur per DDE anzusprechen. Schreibt eine Logdatei mit allem IN/OUTPUT, die brauchst du nur auszulesen.
Oder du kannst per controlsend einen Befehl an ZOC senden, bei dem der aktuelle Puffer in die Zwischenabllage geschrieben wird, und diese kannst du per Autoit bearbeiten.
Also per controlsend den Modembefehl senden, nach einer Sekunde wieder mit controlsend den Terminal-Puffer in die Zwischenablage schreiben, von dort mit clipget() auslesen und gucken was passsiert ist.
viel Spass dabei^^
ciao
Andy
Zitates geht bestimmt auch einfacher.. aber so klappts auch
Hab auch erst gedacht, die Zeile sollte aus der *.TXT-Datei gelöscht werden.
Aber das geht einfacher: *.TXT mit Editor öffnen, Zeile löschen, Speichern, fertig. Da braucht man kein Script für^^
ciao
Andy
Bist du auf Hyperterminal festgelegt?
Ich frage deswegen, weil das "Textfeld" in Hyperterminal nicht ohne weiteres auszulesen ist. Mit Controlsend() kann man zwar Nachrichten hinschicken, aber nicht von dort lesen. Ähnlich wie bei den Java-basierten Chatprogrammen.
Ggf funktioniert es bei anderen Terminalprogrammen. Wahrscheinlich ist es aber einfacher, direkt den COM-Port zu schreiben oder zu lesen.
Ich gehe davon aus, daß du sowieso nur "einfache" Kommandos senden und die antwort empfangen willst.
ciao
Andy
Hi,
du willst in der LISTVIEW eine Zeile löschen? Oder in der *.TXT-Datei?
_GUICtrlListView_DeleteItemsSelected($Handle)
[/autoit]löscht u.a. bei listview
ciao
Andy
Hallo,
sowohl bei http://www.autoitscript.com/forum/index.php?showtopic=45842&st=0&p=341916&#entry341916 als auch bei http://www.autoitscript.com/forum/index.php?showtopic=45842&st=0&p=341916&#entry341916 wird der Zugriff mittels Autoit auf die COM-Ports beschrieben.
Wobei ich die Methode im ersten Link erfolgreich verwendet habe.
Hi,
hab mal was auf die Schnelle gebastelt:
#include <Constants.au3>
#include <String.au3>
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
MsgBox(0, 0, _GetIP_FromName("www.autoit.de"))
[/autoit] [autoit][/autoit] [autoit]Func _GetIP_FromName($hostname) ;Rückgabe: bei Erfolg die IP, bei Fehler -1
Local $console = Run(@ComSpec & " /c ping " & $hostname, @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
$line &= StdoutRead($console)
If @error Then ExitLoop
WEnd
;msgbox(0,0,$line)
$ip = _StringBetween($line, "[", "]") ;regex folgt^^
if @error then
return -1
else
Return $ip[0]
endif
EndFunc ;==>_GetIP_FromName
Richtet euch kostenlos bei z.B. https://autoit.de/www.dyndns.com einen Hostnamen ein und tragt diesen in euren Router ein. Anleitung dazu z.B. hier
Jedes Mal, wenn ihr eine neue IP zugewiesen bekommt, überträgt der Router den Namen und die neue IP an den DNS. Somit seid ihr jederzeit unter eurem Hostnamen und eurer IP zu erreichen.
D.H. im konkreten Fall, da du nicht auf den Rechner deines Freundes pingen kannst (weisst ja die IP nicht), musst du statt der IP mit dem HOSTNAMEN pingen. Ping macht auch eine Namensauflösung, so erhält man die IP des gegenübers und kann in Autoit loslegen.
*edit*
Bei der Client/Serve-Anwendung die Portweiterleitung und Löcher in die Firewall bohren nicht vergessen, auch PING darf nicht durch die Firewall geblockt werden.
viel Spass
Andy
*ich muss dringend meine ZEN-Übungen machen*
Du definierst EINMAL, EIN EINZIGES MAL das Suchmuster von deinem "Button". EINMAL!
Wenn du die FOR/TO-Schleife noch in eine WHILE/WEND einpackst, dann läuft das Script permanent und sucht den Bildschirm nach deinem Button ab, DEN GESAMTEN BILDSCHIRM, solange bis du das Script abschiesst!!
[autoit]$psum= ;diesen wert mit ctrl+V aus der zwischenablage einfügen s.o.
while 1
for $x=0 to @DesktopWidth-60 ;bildschirmbreite minus breite des suchmusters
for $y=50 to @DesktopHeight-30 ; oben browser, unten taskleiste aussparen
if pixelchecksum($x,$y,$x+60,$y)=$psum Then msgbox (0,$x+30,$y) ;wenns klappt, kommt das Vögelchen^^
next
next
wend
Wenn du den Desktop anzeigst, wird NICHTS gefunden, denn das Script sucht den "Button" und der ist NICHT auf dem Desktop. Lade im Browser https://autoit.de/www.autoit.de und das Script findet wieder nichts, denn der "Button" ist NICHT auf dem Bildschirm.
Jetzt lädst du deine Website und BINGO findet das Script den "Button" denn der ist auf dem Bildschirm....egal wo, denn der gesamte Bildschirm wird nach dem "Button" abgesucht....
Ist das so schwer?
Meine Vorgehensweise:
Website aufgemacht, Button auf dem Bildschirm
Mit Autoit Window Info - Programm die "Koordinaten" des Buttons herausgefunden, dazu Mauszeiger mittig auf den Button
Mauskoordinaten x und y aufgeschrieben, angenommen 730 und 612
Wir wollen einen 60 Pixel breiten Streifen von 1 Pixel Höhe abfragen, der waagrecht mittig durch den Button läuft, also sind die x-koordinaten x1=730-30=700 und x2=730+30=760 , die y-koordinaten sind ja gleich, wir bleiben ja in derselben "Zeile"
x1,x2, und y aufschreiben für Pixelchecksum(x1,y,x2,y)
Scite aufgemacht, Fenster so verschoben, dass der "Button" sichtbar ist und kleines Script geschrieben
clipput(PixelChecksum(700,612,760,612)) ;x- und y-koordinaten eintragen
[/autoit]
das Script starten, es schreibt die Pixelchecksumme in die Zwischenablage
Script ändern in
$psum=640861211 ;diesen wert mit ctrl+V aus der zwischenablage einfügen!
for $x=300 to @DesktopWidth-60 ;bildschirmbreite minus breite des suchmusters
for $y=100 to @DesktopHeight-30 ; oben browser, unten taskleiste aussparen
if pixelchecksum($x,$y,$x+60,$y)=$psum Then msgbox (0,$x+30,$y) ;wenns klappt, kommt das Vögelchen^^
next
consolewrite($x&@crlf) ;q&d :o)
next
für $psum mit ctrl+V den Wert aus der Zwischenablage einfügen
script starten, es wird der Bildschirm nach dem "Button" abgesucht, in der Msgbox sollten die Koordinaten des Buttons angezeigt werden
die Startkoordinaten für die Schleifen $x und $y sollte man je nach Browser und Website anpassen
*Edit*
Warum nur einen kleinen "Pixelstreifen" und nicht den gesamten Button suchen?
Weil Pixelchecksum relativ langsam ist, auf einer 24´´-Glotze dauert das sonst ewig....
Zitatdoch mal ist der text auf der seite länger -breiter, und mal nicht...
Naja, aber der Button sieht doch immer gleich aus, oder?
Also suchst du erst nach der "Buttonhintergrundfarbe" mit PixelSearch.
Wenn du einen solchen Button gefunden hast, suchst du z.B. mit PixelChecksum nach dem "Buttoninhalt"
Du kannst natürlich direkt mit Pixelchecksum den kompletten Button auf dem Screen suchen lassen, hab jetzt keine Ahnung ob das Geschwindigkeitsmäßig was bringt...
*Edit*
Habs mal getestet, ein 80 Pixel großes Bitmap (Teil eines "Buttons") finde ich auf einer Website in ca. 1-2 Sekunden pro Seite, wenn der "Button" weiter unten ist, scrollen hilft^^