Dann benutz Run() statt ShellExecute() dann wird dir keine Fehlermeldung ausgegeben.
Oder machs über _RunDos(), oder frag den Pfad vorher ab (wie schon vorgeschlagen)
Möglichkeiten gibts da viele...
Dann benutz Run() statt ShellExecute() dann wird dir keine Fehlermeldung ausgegeben.
Oder machs über _RunDos(), oder frag den Pfad vorher ab (wie schon vorgeschlagen)
Möglichkeiten gibts da viele...
Du solltest wohl erstmal damit Anfangen eine GUI zu erstellen, dann kannst du dir über den Rest Gedanken machen
Ganz einfaches Beispiel:
[autoit]$GUI1 = GUICreate("GUI nummer 1")
$GUI1_Button = GUICtrlCreateButton("Ab zu Nummer 2",100,100)
$GUI2 = GUICreate("GUI Nummer 2")
GUICtrlCreateLabel("Hallo, ich bin GUI nummer 2",100,100)
GUISetState(@SW_SHOW,$GUI1) ; Nur GUI1 wird angezeigt.
[/autoit][autoit][/autoit][autoit]While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI1_Button
GUISetState(@SW_HIDE,$GUI1) ; GUI 1 verstecken
; GUIDelete($GUI1) ; würde auch gehen, allerdings ist GUI1 dann ganz weg :O
GUISetState(@SW_SHOW,$GUI2) ; GUI 2 anzeigen
Case -3 ; -3 = $GUI_EVENT_CLOSE, nur braucht man dann das #include <GUIConstants.au3> nicht
Exit
EndSwitch
WEnd
@ SEuBo : Und wo hast du da den Doppelklick?
Steht da was von Doppelklick?
Oder man macht es auf die einfache Art und Weise
[autoit]
#include <GUIListBox.au3>
#region - GUI Create
Global $Selection = -1
$GUI = GUICreate('Test')
$Listbox = _GUICtrlListBox_Create($GUI,"",20,20)
For $i = 0 to 9
_GUICtrlListBox_AddString($Listbox,"Test "&$i)
Next
GUISetState()
#endregion
#region - GUI SelectLoop
While 1 * sleep(10)
$msg = GUIGetMsg()
Select
Case $msg = -3
Exit
Case _GUICtrlListBox_GetCurSel($Listbox) <> $Selection
MsgBox("","","Index: "&_GUICtrlListBox_GetCurSel($Listbox))
$Selection = _GUICtrlListBox_GetCurSel($Listbox)
EndSelect
WEnd
#endregion
Sehr schön gemacht Oscar! Manchmal sieht man doch den Wald vor lauter Bäumen nicht mehr
Bei mir wurden schon über 60.000 Pixel gefunden, dass kann aber doch nicht stimmen?
Also bei meinem Bildschirm (1280 * 1024) sind's 1.310.720 pixel. Wenn da mal 60.000 von schwarz sind, dann sollte sich das in einem normalen Ramen bewegen denke ich.
Zum Thema Frames auslesen: _IEFrameGetCollection
Hier mal das Beispiel aus der Hilfe leicht abgeändert, damit du siehst wie du Frames navigieren usw. kannst.
; *******************************************************
; Example 1 - Open frameset example, get collection of frames
; and loop through them displaying their source URL's
; *******************************************************
;
#include <IE.au3>
Dim $nav[3] = ["http://www.google.de","http://www.wikipedia.de","http://www.autoit.de"]
$oIE = _IE_Example ("frameset")
$oFrames = _IEFrameGetCollection ($oIE)
$iNumFrames = @extended
For $i = 0 to ($iNumFrames - 1)
$oFrame = _IEFrameGetCollection ($oIE, $i)
_IENavigate($oFrame,$nav[$i],0)
Next
Zitataber was könnte ich falsch gemacht haben das autoit das Popup nicht erkennt?
Falscher Fenstername, Falscher Fenstertext.
1. warum benutzt du keinen TimeOut Parameter bei WinWait
2. Warum öffnest du den Popup nicht per _IENavigate? Dann hast du direkt durch den Wait Parameter von IENavigate die richtige Wartezeit. Oder lieg ich da falsch?
PS: Schreibst du so groß, damit man dir mehr Aufmerksamkeit schenkt?
Greek hat eigentlich schon alles gesagt. Allerdings würde ich
[autoit]If GUIGetMsg() = $Button2 Then
[/autoit]
hier noch eine Hilfsvariable einsetzen.Ich hab die Erfahrung gemacht, dass man sonst ggf mehrmals auf den Stop Button drücken muss. also einfach
$nMsg2 = GUIGetMsg()
If $nMsg2 = $Button2 Then
Mein Fehler. Du hast natürlich vollkommen Recht. Das hat sich so eingeschlichen, weil ich, bevor ich die Zeile geschrieben habe, noch über "If ... = " statt "If ... <>" nachgedacht habe. Richtigerweise müsste es also AND statt OR heißen. Danke für den Hinweis.
ShellExecute("bmg.exe")
$Title = "Setup - Beneton Movie GIF"
WinWait($Title,"",30)
If Not WinActive($Title) Then WinActivate($Title)
Sleep(500)
ControlClick($Title,"","TNewButton1") ;Next>
Sleep(500)
ControlClick($Title,"","TRadioButton2") ; ( ) Accept
Sleep(500)
ControlClick($Title,"","TNewButton2") ; Next >
Sleep(500)
ControlClick($Title,"","TNewButton3") ; Next >
Sleep(500)
ControlClick($Title,"","TNewButton4") ; Next >
Sleep(500)
ControlClick($Title,"","TNewButton4") ; Next >
;und so weiter und so fort...
Das wäre der Anfang.
Wie du schon richtig herausgefunden hast, haben die Controls, also die Knöpfe, RadioButtons, Checkboxen usw. immer einen Namen bzw. eine "Klasse" bzw. ID.
Diese lässt sich mit dem Au3Info Tool und dessen "Finder Tool" leicht anzeigen.
Der für dich interessante Teil ist "ClassnameNN". Wie du es dann verwendest ist ja in meinem Beispiel ersichtlich
Sorry dass es jetzt doch nicht die schritt für schritt anleitung ist die ich versprochen habe, aber ich bin jetzt vollgestopft und will nur noch entspannen sei mir nich böse
Wenn du ein bisschen warten kannst ( ca ne halbe stunde ) und mir keiner zuvorkommt, geb ich dir gerne einen Schritt für Schritt Anleitung
Allerdings hab ich mir grad was zu Essen gemacht und das wird langsam aber sicher wieder kalt
ControlClick
[/autoit]Du musst dir dann halt mit dem Au3Info Tool die nötigen Daten (Fenstertitel, Control usw.) holen
Du musst dann mit dem FensterHandle arbeiten. Also einfach so was hier vor deine "normale" Schleife
[autoit]
#include <Misc.au3>
While 1 * sleep(100)
ToolTip("Bitte klicken Sie auf das Screamer Radio Fenster, und drücken sie ENTER",MousegetPos(0)+20,MouseGetPos(1))
If _IsPressed("0D") Then
$ScreamerHandle = WinGetHandle("")
ExitLoop
EndIf
WEnd
Den Fensterhandle eines Prozesses herauszufinden, kann schon aus dem Grund nicht gehen, dass ein Prozess kein Fenster haben muss bzw. auch mehrere Fenster haben kann (diese können auch unsichtbar sein)*
*Alle angaben ohne gewähr
warum ist das illegal.
Weil es so in dem AutoIt Lizenzvertrag steht.
ZitatReverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.
$aAfterUnRar = _GetFilesFolder_Rekursiv($sFolder, "", 0)
For $i = 1 to $aAfterUnRar[0]
If StringRight($aAfterUnRar[$i],3) <> "mp3" OR StringRight($aAfterUnRar[$i],3) <> "avi" Then
FileDelete($aAfterUnRar[$i])
EndIf
Next
Kein Problem. Bei näherer Betrachtung fällt mir übrigens auf was ich da für nen scheiß zusammenprogrammiert hab.
Geht auch ganz einfach mit nem Einzeiler in der For-Next schleife
[autoit]For $i = 0 to UBound($varpath)-1
If StringInStr($source,$varpath[$i][0]) Then $source = StringReplace($source, $varpath[$i][0], $varpath[$i][1])
Next
Befindet sich die unrar.dll auch im skriptverzeichniss?
Wenn alles nichts hilft, musst du ggf. mit der unRAR.exe arbeiten (im WinRar verzeichniss).
Global $varpath[10][2] = [["%DesktopDir%",@DesktopDir],["%MyDocumentsDir%",@MyDocumentsDir],["%ProgramsDir%",@ProgramsDir],["%WindowsDir%",@WindowsDir],["%SystemDir%",@SystemDir],["%TempDir%",@TempDir],["%Scriptdir%",@ScriptDir]]
Global $replace
$source = "%ScriptDir% Hallo %ProgramsDir%"
[/autoit][autoit][/autoit][autoit]For $i = 0 to UBound($varpath)-1
While StringInStr($source,$varpath[$i][0])
For $i = 0 to UBound($varpath)-1
If StringInStr($source,$varpath[$i][0]) Then
$source = StringReplace($source, $varpath[$i][0], $varpath[$i][1])
ExitLoop
EndIf
Next
WEnd
Next
ConsoleWrite($source & @LF)
[/autoit]Rechtsklick auf den Arbeitsplatz, Eigenschaften, Reiter "Erweitert", Umgebungsvariablen. So müsste es unter xp gehen wenn ich mich nicht irre.
Unter Vista:
Windows Taste + PAUSE, Erweiterte Systemeinstellungen -> Erweitert -> Umgebungsvariablen.