Kannste mal noch den ganze Code posten mit dems jetzt geht.
Möchte das gleich daheim mal ausprobieren.
Beiträge von anno2008
-
-
Nein, das Problem ist ein anderes.
Schon die HTM-Seite ist falsch erstellt.
Kannst ja mal die Seite "per Hand" öffnen.
Du wirst sehen, es wird kein Video kommen.Der Fehler beim erstellen liegt darin, dass der Original Code so aussieht:
Zitat<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/VnJ-GW5pgFg&hl=de&fs=1&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/VnJ-GW5pgFg&hl=de&fs=1&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
Du fügst den falschen link ein.
So wird zumindest die Datei richtig erstellt, zum abspielen kann ich im Moment nix sagen, kanns nicht ausprobieren.
[autoit]
Probier mal:$Url = 'http://www.youtube.com/v/VnJ-GW5pgFg'
[/autoit] -
Hi,
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Tabbed Notebook Dialog", 413, 305, 269, 193)
GUISetIcon("D:\005.ico")
$PageControl1 = GUICtrlCreateTab(8, 8, 396, 256)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Input1 = GUICtrlCreateInput("Input1", 64, 56, 121, 22)
GUICtrlCreateUpdown($Input1)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Input2 = GUICtrlCreateInput("Input2", 64, 104, 121, 22)
GUICtrlCreateUpdown($Input2)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
GUICtrlCreateTabItem("")
$Button1 = GUICtrlCreateButton("&OK", 166, 272, 75, 25, 0)
$Button2 = GUICtrlCreateButton("&Cancel", 246, 272, 75, 25, 0)
$Button3 = GUICtrlCreateButton("&Help", 328, 272, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEndDu darfst das nicht unter GUISetState(@SW_SHOW) setzen.
Zu deinem anderen Problem weiß ich im Moment keine Lösung, aber vielleicht fällt mir ja noch was ein
/Edit:
Aus dem englischen Forum:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Global $title, $input1, $input2, $updown, $iUpDown = 0, $iCurrent = 5
[/autoit] [autoit][/autoit] [autoit]$title = "My GUI UpDown"
[/autoit] [autoit][/autoit] [autoit]
GUICreate($title, -1, -1, -1, -1, $WS_SIZEBOX)$input1 = GUICtrlCreateInput(StringFormat("%#.3f", $iCurrent), 10, 10, 100, 20); Current value
[/autoit] [autoit][/autoit] [autoit]$input2 = GUICtrlCreateInput(0, 120, 10, 20, 20); UpDown offset value
[/autoit] [autoit][/autoit] [autoit]
$updown = GUICtrlCreateUpdown($input2)GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Update the current value until the dialog is closed
[/autoit] [autoit][/autoit] [autoit]
Do
$iUpDown = Number(GUICtrlRead($input2))
If $iUpDown <> 0 Then
$iCurrent += ($iUpDown * 0.001)
GUICtrlSetData($input1, StringFormat("%#.3f", $iCurrent))
GUICtrlSetData($input2, 0)
EndIf
Until GUIGetMsg() = $GUI_EVENT_CLOSEMsgBox(0, "Final value", $iCurrent)
[/autoit]Ich komme mit StringFormat nicht zurecht. Das is genauso komisch wie SRE.
Naja, das darfst du dann machen -
Hi,
was meinst du mit Scrollelement?
Meinst du ein Up-Down?Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("", 266, 55, 347, 209)
[/autoit] [autoit][/autoit] [autoit]
$Input1 = GUICtrlCreateInput("", 8, 8, 185, 21)
GUICtrlCreateUpdown(-1)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEnd -
Was ist nur auf Steam bezogen?
Regread?
Regread liest einfach nur einen Schlüssel in der Registry aus.
Die meisten Programme schreiben einen solchen Schlüssel in die Registry, wo der Installationspath drin steht.
Du musst halt dann diesen Schlüssel finden, den das entsprechende Programm in die Registry geschrieben hat. Meistens hilft dir auch Google dabei, oder du durchsuchst einfach die Registry nach dem Path, wo es bei dir installiert ist.
Das gute daran ist halt, dass man es auf jedem Computer ausführen kann, weil der Schlüssel immer existiert, wenn das Programm installiert ist. -
Allerdings ist
[autoit]$path = RegRead("HKEY_CURRENT_USER\Software\Valve\Steam", "SteamExe"))
[/autoit]
MsgBox(0,"",$path)das hier um einiges schneller und einfacher
-
Hatte nix zu tun und Lust was zu Scripten, meinst du so in der Art?
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("", 116, 48, 451, 425)
[/autoit] [autoit][/autoit] [autoit]
$Button1 = GUICtrlCreateButton("Starte Steam", 8, 8, 99, 25, 0)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$path = _Fileopen()
ShellExecute($path)
If @error Then IniDelete(@ScriptDir & "\Steampath.ini", "Steam", "Path")
EndSwitch
WEndFunc _Fileopen()
[/autoit]
$file = IniRead(@ScriptDir & "\Steampath.ini", "Steam", "Path", "Not Found")
If $file = "Not Found" Then
$file = FileOpenDialog("Steam Exe auswählen!", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "(Steam.exe)")
If @error Then
Switch MsgBox(5, "Error", "Was möchten Sie tun?")
Case 2
Exit
Case 4
_Fileopen()
EndSwitch
Else
IniWrite(@ScriptDir & "\Steampath.ini", "Steam", "Path", $file)
EndIf
EndIf
Return $file
EndFunc ;==>_Fileopen -
Was meinst du mit einbinden?
-
Man man man, gute Arbeit .
Ich hab meine Meinung dazu, dass es ohne reisengroßen Aufwand zu schaffen ist geändert .
Ich hab dein Script mit einigen Installern getestet.
Es funktioniert überall. Überall werden alle wichtigen Informationen angezeigt. Wo es natürlich nicht Funktioniert sind Installer die auf Flash Ebene laufen und bei denen es keine ID's und Controls gibt, aber da wäre eine Automatische Installation schon schwierig. Solche Installer gab es bei alten ICQ Versionen, aber heute werden solche Installer kaum noch genutzt.
Ich habe 50 Installer getestet, und überall waren alle wichtigen Informationen drin, die man benötigt hätte. Was man jetzt noch machen könnte, man könnte den gegebenen Text auf bestimmte Schlüsselwörter durchsuchen.
Wenn man warten soll, dann steht meistens im Text "Bitte warten", oder es steht da "drücken sie weiter". Wenn man dann jedesmal solche Schlüsselwörter sucht und man dann 50 Möglichkeiten zur Verfügung hat, dann kann man schon auf eine ganze Reihe von Events reagieren. Dazu kommt noch, dass man die Buttons kennt.Und ich hab ewig eine Möglichkeit gesucht die PID der EXE zu bekommen.
Ich werde vielleicht ein bisschen rumbasteln wenn ich wieder daheim bin.Gute Arbeit, gefällt mir :).
-
Hi,
Bots sind hier nicht erlaubt, ich bin mir nicht sicher ob es einer werden soll, aber für die Zukunft weißt du esSpoiler anzeigen
[autoit]#include <Misc.au3>
[/autoit] [autoit][/autoit] [autoit]AutoItSetOption("SendKeyDelay", 1)
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{F1}", "_start")While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _start()
[/autoit]
Do
Send("{space}")
Send("{w 2}")
MouseClick("left")
Send("{LCTRL}")
Until _IsPressed(71)
EndFunc ;==>_start -
Ok, nochmal danke!
So ist der Vergleich um einiges schneller als mit _Arraysearch.
Danke -
Hi,
ich glaube das ist viel Komplexer, als man das denkt.
Eben hatte ich Langeweile und hab mal "angefangen". Man wählt eine Datei aus und dann wartet mein Programm erkennt bis ein Fenster Hinzugekommen ist.Aber da fängt das Problem schon an.
Währenddessen dürfen keine Fenster aufgehen, sonst funktioniert gar nichts mehr. Dann hab ich versucht einen Install-Shield Wizzard aufzurufen.
Da kommt zuerst ein Ladebalken und ein Popup-Fenster. Da ist mein Programm das erste mal hängen geblieben, weil es auf 1 erscheinendes Fenster ausgelegt ist. Dann muss es warten bis InstallShield so weit ist.
Dann kann man erst auf weiter drücken.Also das ist echt viel arbeit und es wird am Schluss immer noch 20 verschiedene Installer geben, bei denen es nicht Funktioniert. Wenn mir wieder langweilig ist kann ich ja mal versuchen ein bisschen weiter zu machen, aber es gibt 1000 Möglichkeiten auf die das Programm reagieren müsste.
-
Aaaaaaaaaaaaaah,
ok, danke.
Werd mich mal mit beschäftigen -
Gibts sowas in AutoIt?
Wo finde ich eine Erklärung dazu? -
Wenn du einen weißen Punkt gefunden hast, dann kannst du einfach mit PixelGetColor die restlichen 8 Pixel rundherum prüfen.
Aber was ich viel komplizierter finde, ist, was passiert, wenn die 8 Pixel rundherum weiß sind?
Dann soll er ja weitersuchen. Wenn du dann aber nochmal PixelSearch in dem Bereich machst, dann wird er dir wieder die selbe Stelle vom Anfang ausgeben. -
Hi,
ich müsste 2 Arrays miteinander vergleichen.
BugFix hat mal (schon länger her) das hier geschrieben:Hier mal ein einfaches Beispiel. Voraussetzung ist, dass hier das Array1 die fixen Werte enthält und die variablen Werte im Array2 sind.
Spoiler anzeigen
[autoit]Dim $arArray1[10], $arArray2[10], $Unterschied = ""
[/autoit] [autoit][/autoit] [autoit]$arArray1[0] = "a"
[/autoit] [autoit][/autoit] [autoit]
$arArray1[1] = "b"
$arArray1[2] = "c"
$arArray1[3] = "d"
$arArray1[4] = "e"$arArray2[0] = "a"
[/autoit] [autoit][/autoit] [autoit]
$arArray2[1] = "b"
$arArray2[2] = "c"
$arArray2[3] = "d"
$arArray2[4] = "e"
$arArray2[5] = "f"
$arArray2[6] = "g"For $i = 0 To UBound($arArray1)-1
[/autoit] [autoit][/autoit] [autoit]
If $arArray1[$i] <> $arArray2[$i] Then $Unterschied &= $arArray2[$i] & "|"
NextMsgBox(0, '', $Unterschied)
[/autoit]Das Funktioniert leider nur Solange, wie die Arrays eine Alphabetische Reihenfolge besitzen.
[autoit][/autoit][autoit][/autoit][autoit]
Wenn das erste Array jetzt z.B. so aussieht$arArray1[0] = "a"
[/autoit]
$arArray1[1] = "z"
$arArray1[2] = "b"
$arArray1[3] = "c"
$arArray1[4] = "d"Wird es logischerweise nicht funktionieren. Auch alphabetisch geordnet funktioniert es nicht.
Ich habe jetzt viel rumprobiert und habe im Kopf eigentlich schon eine Lösung die funktionieren würde.
Ich könnte das erste von oben nach unten durch das 2. Array durchsuchen lassen.
Das einzige Problem, was dabei ist, ist, dass das alles sehr langsam abläuft.Meine eigentlich Frage ist nur, obs vielleicht schon eine Funktion gibt, die das bewerkstelligt?
Ansonsten machs ichs einfach mit For-Schelife und Arraysearch, obwohl mir das nicht gefällt.Danke schonmal
-
danke das hab ich getestet
da kommt nur 1|1 raus
lgBei was kommt nur 1|1 raus?
Das liegt dann aber nicht an der StringSplit Funktion.
Wenn du unbedingt die gleiche Variable durch das Array ersetzen willst, dann veilleicht so:Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]; wird bei deinem Script von _ADReadGroupAttributes($object,$attribute) zurückgegeben
[/autoit] [autoit][/autoit] [autoit]
; -----------------------------------------------------------------------------------
Dim $test[2]
$test[1] = "test1,test2,test3,test4"
; -----------------------------------------------------------------------------------_ArrayDisplay($test)
[/autoit] [autoit][/autoit] [autoit]$test2 = StringSplit($test[1], ",")
[/autoit]
ReDim $test[$test2[0]]
for $i = 1 to $test2[0]
$test[$i-1] = $test2[$i]
Next
_ArrayDisplay($test) -
Probier mal:
Spoiler anzeigen
[autoit]$wert = 72
[/autoit]
RegWrite ( "HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics" ,"Shell Icon Size", "REG_SZ", $wert) -
Sag mir mal bitte noch, wo man das manuell umstellen kann ^^.
Man kann ja "kleine" und "große" Symbole verwenden. Aber das ist ja nicht das was du meinst. -
Hi,
solche Sachen werden normalerweise in der regedit umgestellt.
Aber du könntest uns ruhig mal dein Betriebssystem mitteilen .