Wozu Google, wenn die Forumsuche dafür eine AutoIt Funktion liefert ![]()
Beiträge von BugFix
-
-
Hier hast du ein Beispiel wie es automatisiert wird:
Spoiler anzeigen
[autoit]#include <guiconstants.au3>
[/autoit] [autoit][/autoit] [autoit]Global $arBt[8]
[/autoit] [autoit][/autoit] [autoit]
; Größe des Array richtet sich nach Anzahl der Elemente
; $aFile = _FileListToArray($Path) dann ==> Global $arBt[$aFile[0]]
Global $y = 15GUICreate('test')
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($arBt) -1
$arBt[$i] = GUICtrlCreateButton('Button', 10, $y, 60, 20)
$y += 30
Next
GUISetState()Do
[/autoit]
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE -
Die Struktur: Array als Element in einem Array hat noch einen Nachteil: Du kannst nicht direkt auf ein Element in dem SubArray zugreifen. Deshalb habe ich dafür auch die Funktionen _SubArrayGetEntry() und _SubArraySetEntry() erstellt. Findest du in meiner Funktionssammlung ArrayMore.au3, s. Signatur.
-
Dann kann man sich auch das Deklarieren vorweg
sparen und hat dann die Variablen eben nur Lokal in
der Funktion
Man sollte sich angewöhnen, Variablen IMMER im entsprechenden Namespace zu deklarieren. -
Das hatte ich mal irgendwo entdeckt und ein bischen mit gespielt. Vielleicht kannst du es funktionierend ausbauen.
Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt('WinTitleMatchMode', 2)
AutoItSetOption("WinDetectHiddenText", 1)
$PID = Run('telnet', @SystemDir, @SW_HIDE, $STDIN_CHILD+$STDOUT_CHILD)
;~ $PID = Run(@ComSpec & " /c telnet", @SystemDir, @SW_HIDE, $STDIN_CHILD+$STDOUT_CHILD)
;~ ShellExecute("telnet", '', @SystemDir, '', @SW_HIDE)
If Not ProcessExists('telnet.exe') Then Exit MsgBox(0, '', 'Tot')
;~ $arProcess = ProcessList('telnet.exe')
;~ If Not @error Then $PID2 = $arProcess[1][1]HotKeySet('!e', '_ende') ; Skript und Telnet beenden
[/autoit] [autoit][/autoit] [autoit]
HotKeySet('!s', '_show') ; Telnet-Fenster zeigen
HotKeySet('!h', '_hide') ; Telnet-Fenster verstecken
HotKeySet('!w', '_write'); Befehl an Telnet-Fenster senden
HotKeySet('!r', '_read') ; aus Telnet-Fenster lesenWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _ende()
[/autoit] [autoit][/autoit] [autoit]
ProcessClose($PID)
Exit
EndFuncFunc _show()
[/autoit] [autoit][/autoit] [autoit]
WinSetState('telnet.exe', '', @SW_SHOW)
EndFuncFunc _hide()
[/autoit] [autoit][/autoit] [autoit]
WinSetState('telnet.exe', '', @SW_HIDE)
EndFuncFunc _write()
[/autoit] [autoit][/autoit] [autoit]
$strWrite = InputBox('', 'Befehl')
StdinWrite($PID, $strWrite)
StdinWrite($PID)
;~ WinActivate('telnet.exe')
;~ Send($strWrite & '{ENTER}')
EndFuncFunc _read()
[/autoit] [autoit][/autoit] [autoit]
Local $txt = ''
While 1
$line = StdoutRead($PID)
If @error Then ExitLoop
$txt &= $line
Wend;~ $txt = WinGetText('telnet.exe', '')
[/autoit]
ConsoleWrite($txt & @CRLF)
EndFunc -
Oops, das wird ein Bot - hab ich zu schnell drübergelesen.
Naja für den Rest muß dann das eigene Hirn herhalten
-
Greif auf die Elemente per Index oder Namen zu.
[autoit]
So kannst du dir alle Elemente ausgeben lassen:#include <IE.au3>
[/autoit][autoit][/autoit][autoit]
$url = 'http://www.autoit.de'
$oIE = _IECreate($url)
$oForms = _IEFormGetCollection ($oIE)
If @error Then
MsgBox(0, '', 'Keine Formen enthalten')
Else
$Index = 0
For $oForm In $oForms
ConsoleWrite('Form-Index: ' & $Index & ' / Name: ' & $oForm.Name & @CRLF)
$oFormElements = _IEFormElementGetCollection($oForm)
If IsObj($oFormElements) Then
$IndexElement = 0
For $oElement In $oFormElements
ConsoleWrite('Form: ' & $Index & ' /Element: ' & $IndexElement & ' /Name: ' & $oElement.Name & @CRLF)
$IndexElement += 1
Next
EndIf
$Index += 1
Next
EndIf_IEQuit($oIE)
[/autoit]
Exit -
So, nun habe ich mein Skript aber mal richtig optimiert

Zeiten auf meiner Mühle: Average: 0.214 sec. / Minimum: 0.190 sec. / Maximum: 0.521 sec.
Da die Skripte auf Walles PC etwa 1/3 schneller laufen... ca. 0.14 sec.
PW [ bitte warten ]

-
Zitat
ist das nicht nur für .Net?
Kann ich nicht mit Sicherheit sagen. Aber da sich einige Objekte von .Net in AutoIt ansprechen lassen, ist es zumindest einen Versuch wert.
-
Kann es leider nicht testen, hab kein Professional.
[autoit]
So solltest du das Objekt referenzieren können:$oDPAPI = ObjCreate("System.Configuration")
[/autoit]
Die KLassenbeschreibung mit Methoden etc. findest du hier -
Danke fürs schnelle Testen. Das sind ja gravierende Unterschiede zu meinen Zeiten :).
Dann sollte diese optimierte Version bei etwa 0.6 - 0.7 landen.
PW unverändert. -
So, dann stell ich mal meine erste Version ein.
Bin mal neugierig was der Benchmarktest sagt. Ist auf meinem alten Laptop wenig aussagekräftig.
Also Walle - leg los. -
Bitte gepostete Beiträge nicht löschen.
Sonst kann niemand daraus einen Nutzen ziehen.Diesmal belassen wir es bei einem "Du-Du" (da du noch so frisch bei uns bist
).
Für die Zukunft bitte merken. -
ControlCommand ( "title", "text", controlID, "command" [, "option"] )
command = "IsEnabled", "" Returns 1 if Control is enabled, 0 otherwise -
Und was macht man damit?
Naja, das wurde doch schon beantwortet:aber ohne zu wissen, was die dll macht kann man das nicht genau sagen
-
Oder falls du die UDF ansonsten nicht benötigst, kannst du das Include sparen und die Breite festlegen mit:
[autoit]GUICtrlSendMsg($ID_ListView, 0x101E, $Index_Spalte, $Breite_Spalte )
[/autoit]
; und für die letzte Spalte empfiehlt sich:
GUICtrlSendMsg($ID_ListView, 0x101E, $Index_Spalte, $LVSCW_AUTOSIZE_USEHEADER) -
Bleibt nur die Frage nach dem Sinn solchen Tuns.
• Den Nachweis zu erbringen, dass auch Captchas keine absolute Sicherheit bringen? - Das ist wohl unnötig, da kein Sicherheitsverfahren wirklich sicher ist.
• Einen Hinweis für hirnkranke Skripter geben, wie man evtl. Captchas aushebeln kann? - Super Sache, damit sich Forenbetreiber, die ihre Anmeldung mit Captcha sichern, in Zukunft über noch mehr Spam freuen dürfen?
Ich halte es für sinnvoll, bestehende Schlupflöcher in Sicherungsmaßnahmen aufzuzeigen, damit diese gestopft werden können.
Dieses hier gehört aber m.E. nicht dazu. Also ein ganz klares
-
Das Autoit Windo-Infotool erkennt nur Standard Controls. Wenn Opera eigene Controls geschaffen hat, werden diese nicht erkannt. Kommt vor - Pech.
-
Hört sich für mich nach nem GuiCtrlCreateMenu an
Nö
- Explorer hat kein Standardmenü sondern eine Rebar mit eingebettetem Menü. 
-
Zeig doch mal so ein Skript, dass jetzt mit Fehlermeldungen wirft.
Dann können wir dir vielleicht weiterhelfen.