1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. misterspeed

Beiträge von misterspeed

  • EXE FIles aus Ordner Starten

    • misterspeed
    • 31. August 2011 um 11:49

    Alternativ zu filefindfirstfile / nextfile...

    [autoit]


    #include <file.au3>
    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    $files = _filelisttoarray($folder,"*.exe",1)
    if $files <> 0 then
    _arraydisplay($files)
    for $i=1 to $files[0]
    runwait('"' & $folder & "\" & $files[$i] & '" /parameter') ; runwait damit alle schön nacheinander ausgeführt werden, run würde alle "zeitgleich" starten...
    next
    else
    msgbox(0,"Fehler","Keine Dateien gefunden... Errorcode: " & @error)
    endif

    [/autoit]
  • _IECreateEmbedded() handle ???

    • misterspeed
    • 31. August 2011 um 11:33

    Und wo ist nun das Problem genau?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $oIE[4]

    [/autoit] [autoit][/autoit] [autoit]

    $oIE[1] = _IECreateEmbedded()
    $oIE[2] = _IECreateEmbedded()
    $oIE[3] = _IECreateEmbedded()

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Form1", 1200, 840, 239, 155)
    GUICtrlCreateTab(10,10,1180,780)
    $tab1 = GUICtrlCreateTabItem("Seite1")
    $Browser1 = GUICtrlCreateObj($oIE[1], 20, 40, 1160, 740)
    $tab2 = GUICtrlCreateTabItem("Seite2")
    $Browser2 = GUICtrlCreateObj($oIE[2], 20, 40, 1160, 740)
    $tab3 = GUICtrlCreateTabItem("Seite3")
    $Browser3 = GUICtrlCreateObj($oIE[3], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    $BtnAddPage = GUICtrlCreateButton("Seite hinzufügen",10,810,150,20)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _IENavigate($oIE[1],"google.de",0)
    _IENavigate($oIE[2],"autoit.de",0)
    _IENavigate($oIE[3],"heise.de",0)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BtnAddPage
    $page = InputBox("goto url","link eingeben","google.de")
    _ArrayAdd($oIE,_IECreateEmbedded())
    GUICtrlCreateTabItem("Seite" & UBound($oIE)-1)
    GUICtrlCreateObj($oIE[UBound($oIE)-1], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    _IENavigate($oIE[UBound($oIE)-1], $page)
    EndSwitch
    WEnd

    [/autoit]
  • Word 2010 in GUI einbetten

    • misterspeed
    • 30. August 2011 um 17:16
    Zitat von franzp

    habe den thread jetzt dreimal gelesen 8|
    Ich verstehe nicht was das mit meinem Problem zu tun hat? :whistling:

    Na vielleicht auch mal den Anhang ansehen und das für den Wettbewerb eingereichte Script von stayawayknight bewundern? Was mit Notepad funktioniert wird wohl auch mit word und den meisten anderen Fenstern funktionieren:


    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GuiConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;###Beispiel Start
    $gui = GUICreate("Gui", 300, 300, 50, 50) ;Erstellt eine Gui
    GUISetState(@SW_SHOW) ;Macht die Gui sichtbar
    $controlid = _Embedded_Create($gui, @SystemDir & "\notepad.exe", "[CLASS:Notepad]", 0, 0, 300, 300) ;erstellt ein eingebettetes Notepadfenster in der Gui
    Sleep(5000);Pausiert das Script 5 Sekunden lang
    _Embedded_Delete($controlid) ;Löscht das Notepadcontrol

    [/autoit] [autoit][/autoit] [autoit]

    Do ;Hält das Script offen bis die Gui beendet wird
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE
    Exit
    ;###Beispiel Ende

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Bettet ein anderes Programm (.exe) in eine Gui ein
    ; Parameter(s): $hwnd - Handle der Gui
    ; $path - Pfad des zu einbettenden Programmes
    ; $title - Titel des Fensters des Programmes das eingebettet werden soll
    ; $x - X-Positon des Controls in der Gui
    ; $y - Y-Position des Controls in der Gui
    ; $width - Weite des Controls in der Gui
    ; $height - Höhe des Controls in der Gui
    ; Requirement(s): user32.dll
    ; Return Value(s): erolgreich: Control-ID für _Embedded Controls
    ; fehlgeschlagen: 0, @error auf 1
    ; Author(s): stayawayknight
    ;===============================================================================
    Func _Embedded_Create($hwnd, $path, $title, $x, $y, $width, $height)
    $pid = Run($path, "", @SW_HIDE)
    WinWait($title, "", 5)
    $handle = WinGetHandle($title, "")
    $style = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $handle, "int", 236)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $handle, "int", 236, "int", BitOR($style[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $handle, "hwnd", $hwnd)
    WinMove($handle, "", $x, $y, $width, $height)
    WinSetState($handle, "", @SW_SHOW)
    If ProcessExists($pid) Then
    Return $pid & "|" & $title & "|" & $handle
    Else
    SetError(1)
    Return 0
    EndIf
    EndFunc ;==>_Embedded_Create

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Löscht ein _Embedded Control
    ; Parameter(s): $id - Control-ID des zu löschenden _Embedded Controls
    ; Return Value(s): erolgreich: 1
    ; fehlgeschlagen: 0
    ; Author(s): stayawayknight
    ;===============================================================================
    Func _Embedded_Delete($id)
    Local $splitted = StringSplit($id, "|")
    If IsArray($splitted) Then
    ProcessClose($splitted[1])
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>_Embedded_Delete

    [/autoit]
  • Funktion IE9 Problem

    • misterspeed
    • 30. August 2011 um 15:23

    Funktioniert bei mir ( IE 8 ) sowohl mit als auch ohne embedded. Benutzt du vielleicht den IE9 ? Da gabs soweit ich mich erinnere diverse Probleme mit der ie.au3

  • Script zum betätigen von Tastenkombinationen bei erscheinen eines Fensters

    • misterspeed
    • 30. August 2011 um 14:04

    Würde auch mal dazu raten dieses winlist wegzulassen. Stattdessen könntest du in einer Endlosschleife auch einfach auf die Existenz des Dialogs prüfen, welchen du umgehen willst.

    [autoit]


    while 1
    ; wenn fenster da ist auf überspringen button klicken, Daten zum Fenster und button control findest du per au3 window info raus...
    if winexists("Titel des Dialog Fensters", "sichtbarer eindeutiger Text im Dialog Fenster") then controlclick("fenstertitel","","[Class:XXXXXX; Instance:XX]") ; überspringen button klicken...
    ; sollte das Fenster immer existieren und nur sichtbar/unsichtbar gemacht werden sollte winexists durch alternativen wie winactive oder wingetstate ersetzt werden...
    wend

    [/autoit]

    Viel einfacher ist es aber wohl TotalCommander gescheit einzustellen und dafür zu sorgen, dass erst garkein Dialog mehr erscheint. Sollte doch wohl möglich sein ein Standardverhalten für bereits existierende Dateien einzustellen...

  • Funktion IE9 Problem

    • misterspeed
    • 30. August 2011 um 13:38

    In beiden Scripten fällt schonmal auf, dass du die Variable $iIE welche den Arrayindex bestimmt nur deklarierst, aber nie eine Wert zuweist. Wenn das also funktioniert ist das eher dem Zufall geschuldet, da eine Variable ohne Wertzuweisung vermutlich den Wert 0 inne hat und somit dann zufälligerweise trotzdem für dich passend ist. (falls dem nicht so ist liegt hier definitiv dein Fehler...)

    Im zweiten Script mischt du dann noch embedded und nicht embedded ob das prinzipiell geht kA, selbst wenn überschreibst du dir den inhalt von $oIE[0] und machst den embedded Browser dadurch dann sowieso unbrauchbar...

  • Wenn Script läuft, wird arbeiten am PC unmöglich

    • misterspeed
    • 30. August 2011 um 03:10

    Au3info sollte dir alles liefern was du benötigst.
    Den Parameter Text benötigt man normalerweise nicht, dieser hilft der Funktion lediglich zwischen zwei ansonsten identischen Fenstern zu unterscheiden, was ggf. bei der Automatisierung von Installationen hilfreich sein kann (Titel bleibt gleich aber der Text im Fenster ändert sich bei jedem Installationsschritt). Wie bei fast jeder Funktion übergehst du den Parameter durch einen leeren String "" .

    Die Controlid bekommst du normalerweise durch au3info.

    Beispiel:

    Spoiler anzeigen
    [autoit]


    ; die ganzen sleep sind nur zur veranschaulichung... ein sehr kurzes sleep nach run ist aber empfehlenswert oder du prüfst mit winwait bevor du anfängst dinge ans fenster zu senden
    run("notepad.exe")
    Sleep(2000)
    ControlSend("Unbenannt - Editor","","[CLASS:Edit; INSTANCE:1]","a" & "{ENTER}" & "b")
    ; oder
    Sleep(2000)
    ControlSetText("Unbenannt - Editor","","[CLASS:Edit; INSTANCE:1]","") ; inhalt löschen
    Sleep(1000)
    ControlSetText("Unbenannt - Editor","","[CLASS:Edit; INSTANCE:1]","c" & @crlf & "d") ; kann wohl keine sonder tasten wie enter...
    Sleep(1000)
    ControlSetText("Unbenannt - Editor","","[CLASS:Edit; INSTANCE:1]","") ; inhalt löschen
    ;oder
    Sleep(2000)
    ControlSend("Unbenannt - Editor","","Edit1","e" & "{ENTER}" & "f") ; geht auch mit classNN, siehe tab control in au3info...
    ;oder
    Sleep(2000)
    ShellExecute("msconfig")
    Sleep(2000)
    ControlClick("Systemkonfiguration","","[CLASS:Button; INSTANCE:33]") ; klickt auf button hilfe von msconfig...

    [/autoit]


    [Blockierte Grafik: http://i.imgur.com/FN3yf.png] [Blockierte Grafik: http://i.imgur.com/CtCWz.png]

  • Probleme mit Comboboxen

    • misterspeed
    • 30. August 2011 um 02:21

    Du könntest auch mal

    [autoit]

    controlcommand(...)

    [/autoit]


    mit den commands setcurrentselection oder selectstring versuchen und ggf noch ein showdropdown um evtl. damit dann auch den Inhalt des 2. Dropdowns zu aktualisieren.

  • Wenn Script läuft, wird arbeiten am PC unmöglich

    • misterspeed
    • 29. August 2011 um 18:30

    Sofern die "Reaktion" auch ohne Tastatur Eingaben (z.B. Buttondruck im Fenster) gestartet werden kann schau dir

    [autoit]

    controlclick(...)

    [/autoit]


    an.

    Andernfalls schau dir

    [autoit]

    controlsend(...)

    [/autoit]


    an.

    Beides funktioniert ohne das Fenster aktiv zu haben, selbst wenn man das Fenster unsichtbar macht klappt das:

    [autoit]

    winsetstate(...,...,@SW_HIDE)

    [/autoit]

    Um die notwendigen Details (CLASS, CLASSNAME...) eines Buttons oder Fensterbereichs herauszufinden verwendet man au3info (Scite->Tools->au3info)

  • Wenn Script läuft, wird arbeiten am PC unmöglich

    • misterspeed
    • 29. August 2011 um 12:39

    Also so ganz den Sinn des Programms hab ich noch nicht verstanden. Wozu ist Latex gut? Sofern ich nicht zu doof zum googlen war ist Latex doch selbst eine Scriptsprache um Makros für Tex (Programm zur Darstellung von mathematischen Zeichen) zu erstellen ???
    Was bewirkt denn das zufällige senden der Tastenkombination an das Latex Fenster?

    Vom Sinn abgesehen gibt es vermutlich auch andere Wege Kommandos an das Fenster zu schicken die keinen Fensterfocus erfordern. Schau dir dazu die control****** Funktionen in der Hilfe an.

  • au15k - Skriptwettbewerb - Fertig -

    • misterspeed
    • 28. August 2011 um 11:25

    Nö mit

    [autoit]

    sleep(10)

    [/autoit]


    hättest du gewonnen :P

  • Verschieben der Controls

    • misterspeed
    • 28. August 2011 um 11:22

    Ohne Script kann man da kaum was zu sagen. Läuft das Script denn während du die Auflösung durch den Monitorwechsel erzwingst oder ist der Bug auch vorhanden nachdem du das Program neustartest?

  • 2D Array durchsuchen, _ArraySearch() zu langsam :(

    • misterspeed
    • 27. August 2011 um 11:45

    Mal eine kleine Off Topic Frage an AspirinJunkie:

    Gibt es hier irgendwo ein gutes und umfangreiches Tutorial zum Dictionary Object ?
    Kann man damit auch 2-dimensionale Arrays darstellen, also anstelle von Ort+Einwohnerzahl auch noch mehr zugehörige Werte wie Postleitzahl usw. ?
    Wo findet man Informationen zu den verfügbaren Funktionen (add,remove,exists,keys,item....) ?

    Wollte mir das schon lange mal ansehen.

  • Koda Input Button

    • misterspeed
    • 27. August 2011 um 01:08
    Zitat von PQMailer

    Öhm, wenn ich den simple style weglasse ist das doch ne dropdown liste oder ?

    Was ja wohl auch gewollt ist wenn man GUICtrlCreateCombo verwendet...
    Wenn du ein simples input Feld willst musst du eben auch ein input erstellen.

    [autoit]


    guictrlcreateinput()

    [/autoit]
  • Koda Input Button

    • misterspeed
    • 26. August 2011 um 18:01

    Was zum Henker ist ein "Input Button"... entweder Input oder Button, beides zusammen gibts nicht. Poste am besten den Quellcode der GUI.

  • 2D Array durchsuchen, _ArraySearch() zu langsam :(

    • misterspeed
    • 26. August 2011 um 16:21

    Sleep(1) gibt es überhaupt nicht, die Mindestsleepzeit beträgt 10ms, siehe hilfe.

  • 2D Array durchsuchen, _ArraySearch() zu langsam :(

    • misterspeed
    • 26. August 2011 um 16:15

    Die Hauptbremse dürfte nicht _arraysearch sondern dein sleep(10) in Zeile 16 sein.
    Selbst bei nur 100 Durchläufen der Schleife verschwendest du damit schon 1 ganze Sekunde. Bei 4000 Durchläufen wären es schon 40 Sekunden.
    100% CPU Last sollte wohl mit Autoit auf keinem halbwegs aktuellen System möglich sein, denn Autoit nutzt maximal einen CPU Kern.

    Die zweite Bremse ist das permanente Schreiben in Dateien. Mit aktivierter Debug Funktion wird dein Script deutlich länger brauchen, da jeder Schreibzugriff auf die Festplatte einige ms Zeit beansprucht, je nach Festplatte.

  • Prozentual Werte hinzufügen

    • misterspeed
    • 26. August 2011 um 12:12

    Ich hab das glaube ich nicht verstanden was du nun haben willst. Wert und Prozentzahl gehören zusammen nehme ich an? Und du willst nun was machen? Eine zufällig Darstellung der einzelnen Teile?

    Beispiel

    50|a
    30|b
    10|c
    10|d

    geordnet: aaaaa-bbb-c-d (so nicht)
    random: c-aaaaa-d-bbb (so solls sein???)

  • Edit - Feld so groß wie der Text

    • misterspeed
    • 25. August 2011 um 23:17

    Das hier sollte exakt sein und auch bei größeren Schriften funktionieren, sofern die Starthöhe des Edits für die Darstellung von exakt einer Zeile reicht...

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $LineCount = 1
    Global $hoehe = 25 ; funktioniert nur für Werte die für eine Zeile langen, danach wird coordEdit vermutlich den wert für 2 Zeilen haben und die rechnung unten stimmt nicht mehr ???

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Meine GUI mit einem Edit-Feld")

    [/autoit] [autoit][/autoit] [autoit]

    $myedit = GUICtrlCreateEdit("", 176, 32, 100, $hoehe, BitOR($ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $coordEdit = _GUICtrlEdit_GetRECT($myedit)
    $highArea = $coordEdit[3] - $coordEdit[1] ; die Höhe des Textbereichs
    $bottomspace = $hoehe - $coordEdit[3]

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    checkEditSize()
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    func checkEditSize()
    $lines = _GUICtrlEdit_GetLineCount($myedit) ;StringSplit($text,@CRLF,1)
    if $lines <> $LineCount Then
    $LineCount = $lines
    $curSize = ControlGetPos ( $gui, "", $myedit )
    GUICtrlSetPos ( $myedit, $curSize[0], $curSize[1] , $curSize[2], ($LineCount*$highArea) + $bottomspace )
    EndIf
    EndFunc

    [/autoit]
  • Links in ein Array schreiben, Link finden und öffnen

    • misterspeed
    • 25. August 2011 um 21:00

    Einfach die Hilfe zu _arraysearch mal ansehen? In der Hilfe findest du zu jeder Funktion die Rückgabewerte und deren Bedeutung. In diesem Fall gibt die Funktion den Array Index des Suchtreffers zurück und im Fehlerfall wenn nichts gefunden wurde eine -1. Die if Bedingung prüft also ob das Ergebnis von _arraysearch ungleich -1, also erfolgreich war, wenn ja wird die URL aufgerufen, wenn nein eben nicht.

    Bei Arrayfindall bekommst du gemäß Hilfe kein einzelnes Ergebnis sondern ein Array mit allen Indexnummern zurück in denen der Suchbegriff vorkommt. Auch hier bedeutet -1 anstelle eines Arrays, dass nichts gefunden wurde. Das kann von Funktion zu Funktion aber durchaus anders sein, teilweise muss man auch auf if @error prüfen, was bei arraysearch prinzipiell auch möglich wäre, siehe dazu die Hilfe.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™