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. BugFix

Beiträge von BugFix

  • Geiz ist geil.

    • BugFix
    • 11. Oktober 2007 um 10:59

    Aber da wir ja hier alles automatisieren, hier der Zugriff auf die Seite per Skript:

    [autoit]

    #include <ie.au3>

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

    $url = "http://www.fax-manager.de/index.html"
    $Vorwahl = "030"
    $FaxNr = "123456789"
    $Mail = "absender@mail.de"
    $Inhalt = "Bla Bla Bla Bla" & @LF & "Bla Bla Bla Bla" & @LF & "Bla Bla Bla Bla"

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

    $oIE = _IECreate($url)
    $oForm = _IEFormGetCollection($oIE,1)
    $oVorwahl = _IEFormElementGetObjByName($oForm,"vorwahl")
    $oNummer = _IEFormElementGetObjByName($oForm,"nummer")
    $oEmail = _IEFormElementGetObjByName($oForm,"email")
    $oText = _IEFormElementGetObjByName($oForm,"text")

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

    _IEFormElementSetValue($oVorwahl, $Vorwahl)
    _IEFormElementSetValue($oNummer, $FaxNr)
    _IEFormElementSetValue($oEmail, $Mail)
    _IEFormElementSetValue($oText, $Inhalt)

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

    _IEFormSubmit($oForm)

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

    _IEQuit($oIE)

    [/autoit]
  • Geiz ist geil.

    • BugFix
    • 11. Oktober 2007 um 10:26

    Nööö, nie nich. :rofl:

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 21:31

    ;) Immer wieder gern. Und ich denke es hat dir auch 'ne Menge gebracht.

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 21:08

    Edit: Denkfehler, so paßt's:

    [autoit]

    For $i = 1 To $daten[0]
    $inhalt = StringSplit($daten[$i], ",")
    If IsArray($inhalt) Then
    For $k = 1 to UBound($inhalt) -1
    send($inhalt[$k])
    If $k = 2 Then
    If StringLen($inhalt[$k]) < 2 Then
    send("{TAB}")
    EndIf
    Else
    send("{TAB}")
    EndIf
    Next
    EndIf
    Next

    [/autoit]
  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 20:40

    So wie ich dich verstanden habe, entsteht ein Tab von allein, wenn die Zahl 2-stellig ist. Aber wenn sie 1-stellig ist mußt du ein Tab senden um zum nächsten Feldzu wechseln.
    Ergo: Wenn Länge < 2 Dann Sende Tab, sonst nicht.

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 20:13

    Dann prüf die Länge des Eintrags und sende den Tab nur bei Bedarf:

    [autoit]

    For $i = 1 To $daten[0]
    $inhalt = StringSplit($daten[$i], ",")
    If IsArray($inhalt) Then
    For $k = 1 to UBound($inhalt) -1
    send($inhalt[$k])
    If StringLen($inhalt[$k]) < 2 Then
    send("{TAB}")
    EndIf
    Next
    EndIf
    Next

    [/autoit]
  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 19:12

    Wer oder was erzeugt denn da 'nen Tab?

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 19:07

    Zeig mal eine Zeile vom csv-Code.

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 18:34

    So kannst du alle WhiteSpaces (dazu gehören auch Tabs) löschen:

    Spoiler anzeigen
    [autoit]

    For $i = 1 To $daten[0]
    $inhalt = StringSplit($daten[$i], ",")
    If IsArray($inhalt) Then
    For $k = 1 to UBound($inhalt) -1
    If $k = 2 Then
    $Str = StringStripWS ( $inhalt[$k], 8 ) & @LF
    Else
    $Str = $inhalt[$k] & @LF
    EndIf
    send($Str)
    send("{TAB}")
    Next
    MsgBox(0,'','Weiter ?')
    EndIf
    Next

    [/autoit]
  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 17:52

    zu 1.
    Habe jetzt einfach eine MsgBox eingefügt zum Warten.

    Spoiler anzeigen
    [autoit]

    For $i = 1 To $daten[0]
    $inhalt = StringSplit($daten[$i], ",")
    If IsArray($inhalt) Then
    For $k = 1 to UBound($inhalt) -1
    $Str = $inhalt[$k] & @LF
    send($Str)
    send("{TAB}")
    Next
    MsgBox(0,'','Weiter ?')
    EndIf
    Next

    [/autoit]

    zu 2.
    Schau dir mal Eval() an. Damit läßt sich das realisieren.
    Oder benenne deine Fenster einfach um ( WinSetTitle() ), das geht auch bei Fremdanwendungen (meist).

  • Rueckgabewert ermitteln @error?

    • BugFix
    • 10. Oktober 2007 um 17:12
    Zitat

    Wie kann ich denn den return value von exist dann abfragen?

    [autoit]

    $Rueckgabewert = Funktion()
    ;also
    $Return = FileExists()

    [/autoit]

    Da der Return aber nur 1 (Erfolg) oder 0 (Fehler) ist, hast du somit den Return als Boolschen Wert und kannst so abfragen

    [autoit]

    If FileExists() Then
    ; Erfolg
    Else
    ; Fehler
    EndIf

    [/autoit]
  • Login_bewerkstelligen

    • BugFix
    • 10. Oktober 2007 um 15:56

    Die Formelemente sind indexiert. Aber innerhalb jeder Form wieder neu bei 0 beginnend.
    Du mußt also erst die Form auswählen und dann das Formelement.

  • Gui für ein Tool

    • BugFix
    • 10. Oktober 2007 um 15:38

    Hier mal ganz Allgemein das Umstellen der Sprache im laufenden Skript.
    Deine INI kannst du dann allein reinfummeln.
    Allerdings solltest du INIReadSection verwenden. Dann erhältst du ein Array und kannst das Umbenennen analog zu meinem Bsp. durchführen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Dim $arText[8][2] = [ _
    ['DEUTSCH','ENGLISH'], _
    ['Label Eins', 'Label One'], _
    ['Label Zwei', 'Label Two'], _
    ['Label Drei', 'Label Three'], _
    ['Button Eins', 'Button One'], _
    ['Button Zwei', 'Button Two'], _
    ['Button Drei', 'Button Three'], _
    ['Button ENGLISH', 'Button DEUTSCH']]
    Dim $Switch = 0
    Dim $arControls[7]
    $Form1 = GUICreate($arText[0][0], 502, 184, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $arControls[0] = GUICtrlCreateLabel($arText[1][0], 46, 34, 100, 17)
    $arControls[1] = GUICtrlCreateLabel($arText[2][0], 46, 77, 100, 17)
    $arControls[2] = GUICtrlCreateLabel($arText[3][0], 46, 120, 100, 17)
    $arControls[3] = GUICtrlCreateButton($arText[4][0], 240, 34, 100, 30, 0)
    $arControls[4] = GUICtrlCreateButton($arText[5][0], 240, 70, 100, 30, 0)
    $arControls[5] = GUICtrlCreateButton($arText[6][0], 240, 106, 100, 30, 0)
    $arControls[6] = GUICtrlCreateButton($arText[7][0], 377, 70, 100, 30, 0)
    GUICtrlSetOnEvent(-1, "btSwitchClick")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func btSwitchClick()
    Switch $Switch
    Case 0
    WinSetTitle($Form1, '', $arText[0][1])
    For $i = 0 To UBound($arControls) -1
    GUICtrlSetData($arControls[$i], $arText[$i+1][1])
    Next
    $Switch = 1
    Case 1
    WinSetTitle($Form1, '', $arText[0][0])
    For $i = 0 To UBound($arControls) -1
    GUICtrlSetData($arControls[$i], $arText[$i+1][0])
    Next
    $Switch = 0
    EndSwitch
    EndFunc
    Func Form1Close()
    Exit
    EndFunc

    [/autoit]

    Edit:
    Ich habe jetzt alle GUI-Ctrl in ein eigenes Array gepackt, dann kann man das Umbenennen in einer Schleife ausführen.

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 14:53

    Es laufen zwei Schleifen. Die äußere liest die Zeile aus, ZeilenIndex $i.
    Die innere splittet die Zeile auf in Spalten, SpaltenIndex $k.
    Beim Auslesen jeder einzelnen Spalte wird der Inhalt zu einem String hinzugefügt. Für Zeile 1, Spalte 1 würde das so aussehen:
    Wert 1/1: "Spalteninhalt" & @LF

  • Werte aus csv in Programm eintragen

    • BugFix
    • 10. Oktober 2007 um 14:10

    Edit: Du liest sicher mit _FileReadToArray ein. Also muß es nicht $daten sondern $daten[0] heißen.

    [autoit]

    $Str = ''
    For $i=1 to $daten[0]
    $inhalt=StringSplit($daten[$i], ",") ; liefert ein Array zurück
    If IsArray($inhalt) Then
    For $k = 1 To UBound($inhalt) -1
    $Str &= 'Wert ' $i & '/' & $k & ': ' & $inhalt[$k] & @LF ; $i ist Zeil/ $k ist Spalte
    Next
    EndIf
    Next
    MsgBox(0, '', $Str)

    [/autoit]
  • Sorry

    • BugFix
    • 10. Oktober 2007 um 13:49

    Tränenbäche rinnen....
    Der Bau einer Arche Noah ist dringend von Nöten. :rofl:
    Wir vermissen dich! :weinen:

  • Rueckgabewert ermitteln @error?

    • BugFix
    • 10. Oktober 2007 um 13:42

    Wenn kein Fehler auftritt ist @error i.A. 0
    Üblich ist den Rückgabewert einer Funktion bei Erfolg mit -1 zu setzen und bei Fehler mit 0

    Um individuelle Fehlerwerte zu vergeben arbeitest du mit SetError().
    z.B. übergebene Variable ist kein Array, obwohl Funktion das verlangt
    bzw.
    Array ist 2-dimensional, aber 1-dimensional wird verlangt.

    [autoit]

    Func FunctionXY($array)
    If Not IsArray($array) Then
    SetError(1)
    Return 0
    EndIf
    Dim $Dimension = UBound($array,2)
    If Not @error Then
    SetError(2)
    Return 0
    EndIf
    ;.....
    EndFunc

    [/autoit]


    Um eine Fehlerbehandlung einzuleiten setzt du einfach nach einem Befehlsaufruf:

    [autoit]

    If @error Then
    ; hier kannst du z.B. Fehlerwerte abfragen und entsprechend auswerten
    Switch @error
    Case 1
    MsgBox(0,'','Variable ist kein Array')
    Case 2
    MsgBox(0,'','Array ist 2-dimensional')
    EndSwitch
    EndIf

    [/autoit]
  • Gui für ein Tool

    • BugFix
    • 10. Oktober 2007 um 12:22

    Die Syntax von IniWriteSection lautet:
    IniWriteSection ( "filename", "section", "data", [Array Index] )

    Filename setzt du richtig, aber die Sektion läßt du per Input festlegen ??
    Ich glaube nicht, dass das gewollt ist. Einen Wert trägst du auch nicht ein. Zum anderen liest du $Input gar nicht aus.
    Falls die Sektion per Input gesetzt werden soll, müßte dies so aussehen:

    [autoit]

    IniWriteSection (@ScriptDir & "\sys\Data.ini",GUICtrlRead($Input), "data")

    [/autoit]


    Bedenke für die Form bei "data":
    Wenn du es als String eingibst:

    [autoit]

    $data = "key1=val1" & @LF & "key2=val2" & @LF & "key3=val3" ; usw.

    [/autoit]


    Verwendest du ein Array, ist als "data" der Arrayname anzugeben und dann noch der Index des StartEintrags.

  • Login_bewerkstelligen

    • BugFix
    • 10. Oktober 2007 um 11:22

    Hi,
    ich kann bei mir nichts testen, aber einen Fehler sehe ich.
    Du arbeitest mit _IEFormElementGetCollection() ohne auf eine Form Bezug zu nehmen.

    Das sollte so aussehen (Bsp. aus der Hilfe)

    [autoit]

    $oIE = _IECreate ("http://www.google.com")
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oQuery = _IEFormElementGetCollection ($oForm, 1)

    [/autoit]
  • Menü-Punkt überprüfen

    • BugFix
    • 10. Oktober 2007 um 10:29

    Windows ist in vielen Anwendungen nicht bereit einen Zugriff auf seine Controls zuzulassen. Die Menüleiste des Taskmanagers scheint auch dazu zu gehören.
    Wenn du kein Handle für ein Control hast, kannst du es weder Auslesen noch manipulieren.

    Die Tatsache, dass dir niemand antwortete, ist also einzig dem Umstand geschuldet, dass hier niemand einen Lösungsweg weiß.
    Auch das kommt vor. ;)

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™