Schalte dem Kompatiblitätsmodus ein, dann soll es gehen. (Google hilft dabei sehr gerne)
Beiträge von autoBert
-
-
Es gibt auch darstellbare Zeichen die in Datei- und Ordnernamen nicht vorkommen dürfen. Um diese heraus zu filtern verwende ich diese Routine:
[autoit]Func _SAFEFILENAME($sRAW)
[/autoit]
;FireFox autotscript.com
Local $AUGLY = StringSplit('\ / : * ? " < > |', " ")
For $i = 1 To $AUGLY[0]
$sRAW = StringReplace($sRAW, $AUGLY[$i], "")
Next
Return $sRAW
EndFunc ;==>_SAFEFILENAMEmfg autoBert
-
INI-Dateien werden nicht includet (würde ja zu Laufzeitfehlern führen) sondern mit den INI...-Funktionen bearbeitet.
mfg autoBert
-
"Dann musst du dem Skript auch Adminrechte geben, sonst startet es nicht. "
-> Tschuldige, aber ich bin kein Anfänger. Du bist ja gut...
Ein "kein Anfänger" hätte dieses Thema erst gar nicht eröffnet, sondern gewusst woran es liegt [Blockierte Grafik: http://1.2.3.11/bmi/www.autoit.de/wcf/images/avatars/avatar-1019.jpg]Und natürlich ist Mars gut deshalb weis er wie jeder andere logisch denkende Mensch auch ein Skript das wegen fehlerhaftem UNC-Pfad nicht gestartet werden kann kann auch keine Admistratorrechte anfordern.
mfg autoBert
-
Das Problem bei Verwendung von InetGet besteht darin dass der TE kostenpflichtigen Inhalt herunterladen will:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
InetGet sollte es mit Übergabe des Benutzers und dessen Passwort auch schaffen:Zitat von HilfeUm einen Benutzernamen und Passwort zum Verbinden zu benutzen, schreibt man einfach "Username:Passwort@" vor den Servernamen, z.B. "http://myuser:mypassword@https://autoit.de/www.somesite.com"
Eventuell ist noch zuvor der Useragent mit
[autoit]HttpSetUserAgent
[/autoit]anzupassen.
mfg autoBert
-
So
Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]$oIE = _IE_Example("form")
[/autoit] [autoit][/autoit] [autoit]
$oForm = _IEFormGetObjByName ($oIE, "ExampleForm")$oIE_Input = _IEGetObjByName($oIE, "textExample")
[/autoit] [autoit][/autoit] [autoit]
$oIE_Edit = _IEGetObjByName($oIE, "textareaExample")
$oIE_Dropdown = _IEGetObjByName($oIE, "selectExample")
$oIE_Radio = _IEGetObjByName($oIE, "radioExample") ;// Das funktioniert
If @error Then ConsoleWrite(@error & @CRLF & @extended & @CRLF)_IEFormElementSetValue($oIE_Input, "TEEEESSSTT")
[/autoit]
_IEFormElementSetValue($oIE_Edit, "TEEESTII" & @CRLF & "TEST")
_IEFormElementOptionSelect($oIE_Dropdown, "Freepage", 1, "byText")
;_IEFormElementRadioSelect($oIE, "Airplane", "vehicleAirplane") ;// Das funktioniert nicht!
_IEFormElementRadioSelect ($oForm, "vehicleAirplane", "radioExample", 1, "byValue")
;// <input type='radio' name='radioExample' value='vehicleAirplane'>Airplane<br>
;~ _IEFormElementRadioSelect($oIE, "vehicleAirplane", "radioExample", 0, "byValue")
If @error Then ConsoleWrite(@error & @CRLF & @extended & @CRLF)läuft dein Skript bei mir ( IE 8 ) einwandfrei genauso wie das Hilfebeispiel zu _IEFormElementRadioSelect. Welche IE-Version benutzt du?
mfg autoBert
-
-
@autoBerti
Steht im Spoiler unterm Script
da sucht es ja auch jeder
jetzt weis ich genau so viel wie vorher ist mir zu theoretisch. Mit RegExp kenne ich mich gar nicht aus. Also nichts für mich.
Einzig zum Datei speichern fällt mir etwas ein, da must du:
- daür sorgen wenn .txt schon enthalten ist das es nicht erneut angehängt wird. Imho am einfachsten mit StringInStr zu lösen
- Fileopen mit Modus 2 verwenden, bei Filewrite das Handle von Fileopen verwenden und natürlich auch mit Fileclose schliessen. Damit vehinderst du das anhängen des neuen Textes an den bereits bestehenden Dateiinhalt
mfg autoBert
i -
_IELinkclickbyTest() funktioniert nicht.
da dies ja eine selbstgestrickte Funktion ist solltest du auch den Quellcode dazu einstellen.
_IELinkclickbyTest() Gibt es eine möglichkeit den Button anhand seiner Beschriftung zu selektieren?
Mit Sicherheit, aber ob schon jemand eine solche Funktion entwickelt hat, kA.
Die Vorgehensweise wäre:
- mit _IEFormElementGetCollection die Objektsammlung aller
Formular-Elemente des Formulars abholen - diese mit For...In...Next durchgehen
- bei jedem Durchgang prüfen ob das Objekt den gesuchten Text hat
Hierbei hilft die Lektüre der MSDN zum Objektmodell des IE sicher ungemein.
du kannst jetzt also
- diverse Foren nach einer fertigen Funtion durchsuchen
- dir selbst eine solche Funktion entwickeln
- die Seite benennen damit man schauen kann ob es nicht doch mit normalen Bordmitteln funktioniert
mfg autoBert
- mit _IEFormElementGetCollection die Objektsammlung aller
-
versuche mal wieder was zusammen zu basteln
aber an ein paar Sachen hängts halt...
wäre nett wenn du beschreibst wo und was klemmt.mfg autoBert
-
Schau dir dazu
[autoit]StderrRead
[/autoit]in der Hilfe an inkl. Beispiel
mfg autoBert
-
Wenn du genügend Ressourcen hast kannst du ja für jeden Port (afair 0 - ~65565) einen lauschenden Port öffnen. Dann hört dein Programm alles was an dich gesendet wird. Du solltest dich allerdings nicht wundern wenn das Surfen im Web und viele andere Dienste/Dinge nicht funktionieren während deine Lauschaktion läuft.
Schlicht gesagt mit AutoIt Boardmitteln unmöglich. Ob irgendein AutoIt-User eine UDF hat die es ermöglicht den Datenverkehr gleichzeitig mit zu sniffen ohne den eigentlichen Dienst zu beeinträchtigen weis am besten Tante Google.
mfg autoBert
-
-
Alles anzeigen
Wie wäre es mal mit dem hier?
Spoiler anzeigen
[autoit]Global $a_Werte[1]
[/autoit]
$test123 = "12345"
$test123 = main($test123)
MsgBox(0, "", $test123) ; hier sollte 54321 rauskommen
Func main(ByRef $test)
$test = test1($test)
return $test
EndFunc ;==>main
Func test1(byref $test1)
$test1 = "54321"
return $test1
EndFunc ;==>test1
da frage ich mich dann allerdings warum die Übergabe mit ByRef ausgeführt wird.mfg autoBert
-
Hat jemand eine Idee wie ich das Lösen kann?
einmal so:Spoiler anzeigen
[autoit]Global $a_Werte[1]
[/autoit]
$test123 = "12345"
main($test123)
ConsoleWrite($test123&@CRLF) ; hier sollte 54321 rauskommen
Func main(ByRef $test)
$a_Werte[0] = $test
test1($a_Werte[0])
ConsoleWrite($a_Werte[0]&@CRLF)
$test=$a_Werte[0]
EndFunc ;==>main
Func test1(byref $test1)
$test1 = "54321"
EndFunc ;==>test1
dann kannst du aber auch gleich $Test in der func Main weiterreichen.mfg autoBert
-
aber könnte mir mal bitte jemand von euch sagen, ob in dem folgenden Script Fehler sind im Sinne von: Ich deklariere eine Variable oder so, und gebe sie nicht frei?
Das Gegenteil ist der Fall du benutzt
VariablenArrayelemente die es nicht gibt:CodeRunning AU3Check (1.54.19.0) from:D:\Programme\AutoIt3 +>13:59:46 AU3Check ended.rc:0 >Running:(3.3.6.1):D:\Programme\AutoIt3\autoit3.exe "D:\Programme\AutoIt3\Test\asdfb.au3" D:\Programme\AutoIt3\Test\asdfb.au3 (58) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: $a_row0 = StringSplit($a_row0[2], ":") $a_row0 = StringSplit(^ ERROR ->13:59:50 AutoIT3.exe ended.rc:1 +>13:59:51 AutoIt3Wrapper Finished >Exit code: 1 Time: 7.338
Skript mit F5 gestartet und Startbutton geklickt.Der Seicherzuwachs könnte auch in den Dosdateien begründet sein, ersetze einmal Run mit RunWait und teste dein Skript damit.
Edit: Ich habe jetzt dein Skript eine Weile laufen lassen (Ative App laden, danach Start). Während dein Skript nach dem Starten sich nur beim Wechel von 1stellig auf 2stellig 3stellig etwas RAM genehmigt steigt der Ramverbrauch meines Virenscanners stetig. Bei Stop stagniert er aber beim Fortsetzen geht das ständige Erhöhen des RAMs weiter. Ich kann deine Schlussfolgerung das AutoIt ein grösseres Speicherleck hat nicht nachvollziehen.
mfg autoBert
mfg autoBert
-
sagt mal, das war doch früher nie so?!
Früher gings auch ohne Deklaration, ausser bei Opt("MustDeclareVars",1)?
Ob eine Warnung oder ein Fehler ausgegeben wird hängt vom Zeitpunkt des Auftretens ab. Das war schon immer so und ist noch so. Dieses fehlerhafte Skript:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <StaticConstants.au3>Global $Picleft[31] = [15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75] ;Ich weiss geht auch anderst
[/autoit] [autoit][/autoit] [autoit]
Global $Pictop[31] = [20, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, 40, 40, 60, 60, 60, 60, 60, 60, 60, 60, 60, 80, 80, 80, 80] ;Dass geht auch anderst
Global $pic[31] = ['1', '23', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
;~ Global $PicName[31] = [Die 31 namen der smileys]
Global $Button[31]
$hGui = GUICreate('Test')
For $i = 0 To 30
$Button[$i] = GUICtrlCreateButton($i, 15 + Mod($i, 9) * 20, 20 + Int($i / 9) * 20, 19, 19)
Next
For $i = 0 To 30 ;(Original ist es mit UBound($var)-1 welches die grösse 31 hat)
;$Pic[$i] = GuiCtrlCreatePic(@ScriptDir & '\Smileys\' & $Picname[$i],$Picleft[$i],$Pictop[$i],20,20)
$pic[$i] = GUICtrlCreateButton($i, $Picleft[$i], $Pictop[$i] + 100, 20, 20)
Next
GUISetState()Global $oldMsg
[/autoit] [autoit][/autoit] [autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $pic[0] To $pic[30]
_Pic($nMsg - $pic[0])
Case $Button[0] To $Button[30]
_Button($nMsg - $Button[0])
EndSwitch
WEndFunc _Pic($iID)
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "", "Button " & $ID & " wurde gelickt") ;hier ist eigentlich nur ein Buchstabe vergessen mit unterschiedichen Folgen
EndFunc ;==>_PicFunc _Button($iID)
[/autoit]
Global $ID = "Test" ;irgendwann einmal deklariert aber vergessen zu entfernen
MsgBox(0, "", "Button " & $iID & " wurde gelickt")
EndFunc ;==>_Buttongibt bei jedem Start eine Warnung aus:
CodeD:\Programme\AutoIt3\Test\asdfb.au3(38,32) : WARNING: $ID: possibly used before declaration. MsgBox(0, "", "Button " & $ID & ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ D:\Programme\AutoIt3\Test\asdfb.au3 - 0 error(s), 1 warning(s)
ob dieser Fehler:CodeD:\Programme\AutoIt3\Test\asdfb.au3(33,32) : WARNING: $ID: possibly used before declaration. MsgBox(0, "", "Button " & $ID & ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ D:\Programme\AutoIt3\Test\asdfb.au3 - 0 error(s), 1 warning(s) ->12:55:06 AU3Check ended.rc:1 >Running:(3.3.6.1):D:\Programme\AutoIt3\autoit3.exe "D:\Programme\AutoIt3\Test\asdfb.au3" D:\Programme\AutoIt3\Test\asdfb.au3 (33) : ==> Variable used without being declared.: MsgBox(0, "", "Button " & $ID & " wurde gelickt") MsgBox(0, "", "Button " & ^ ERRORausgegeben wird und zum Absturz führt oder nur eine
fehlerhafteunerwartete Anzeige in der MsgBox von Zeile 33 führt hängt von der Bedienung ab. Du siehst auch Warnungen sollten nicht ignoriert werden.mfg autoBert
-
Hallo Skilkor,
teste dieses Skript:
Spoiler anzeigen
[autoit]; *** Start added by AutoIt3Wrapper ***
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
; *** End added by AutoIt3Wrapper ***
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Global $Picleft[31] = [15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75] ;Ich weiss geht auch anderst
Global $Pictop[31] = [20, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, 40, 40, 60, 60, 60, 60, 60, 60, 60, 60, 60, 80, 80, 80, 80] ;Dass geht auch anderst
Global $pic[31] = ['1', '23', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
;~ Global $PicName[31] = [Die 31 namen der smileys]
$hGui = GUICreate('Smilies')
for $i=0 to Random(2,30,1)
GUICtrlCreateLabel($i,15+Mod($i,10)*20,20 + Int($i/10)*20)
Next
For $i = 0 To 30 ;(Original ist es mit UBound($var)-1 welches die grösse 31 hat)
;$Pic[$i] = GuiCtrlCreatePic(@ScriptDir & '\Smileys\' & $Picname[$i],$Picleft[$i],$Pictop[$i],20,20)
$pic[$i] = GUICtrlCreateButton($i, $Picleft[$i], $Pictop[$i]+100, 20, 20)
Next
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg() ;du solltest dir die Hilfe hierzu anschauen
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $pic[0] To $pic[30]
_Pic($nMsg - $pic[0])
EndSwitch
WEndFunc _Pic($iID)
[/autoit]
MsgBox(0, "", "Button " & $iID & " wurde gelickt")
EndFunc ;==>_Picund du wirst erkennen, dass egal wieviele Labels zuvor erstellt wurden immer die richtige Zahl ausgegeben wird.
mfg autoBert
-
ich hoffe das ich mit
$Click = true / falseauf dem richtigen weg bin

Hoffen darfst du.So wie du im Thema herumeierst und trotz Aufforderung nicht dein Skript einstellst keimt bei mir der Verdacht das du an einem Bot schreibst.
Daher: Vote for Close wegen mangelder Mitwirkung an einer Lösung
-
Hallo Angst,
Unter der Voraussetzung, dass sich mstsc.exe nach erfolgter Anmeldung beendet funtioniert dieses Sript:
Spoiler anzeigen
[autoit]Dim $ipadresse = "127.0.0.1"
[/autoit] [autoit][/autoit] [autoit]
Dim $Benutzername = "Administrator"
Dim $Password = "spectrum01#" ; PW # kann nicht gesendet werden
Opt("WinTitleMatchMode", 4)AdlibRegister('_Login', 2000)
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "Login", RunWait("mstsc.exe /v:" & $ipadresse & " /f"))Func _Login()
[/autoit]
WinWaitActive("127.0.0.1 - Remotedesktop")
AdlibUnRegister('_Login')
Send("!b" & $Benutzername & "!k" & $Password)
Sleep(1500)
Send("{ENTER}")
EndFuncSollte mstsc.exe allerdings geöffnet bleiben bis der Benutzer sich abmeldet klappt es natürlich nicht.
mfg autoBert