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

  • Speicher einlesen etc

    • BugFix
    • 11. Oktober 2007 um 21:51

    Ob das geht, weiß ich nicht. Das Problem ist immer die Adressen zu finden. Clevere Spiele benutzen dynamische Adressen. Wie du da die richtigen findest (Pointer-Offset beachten), habe ich aber schon mal in einem Thread kurz erläutert. Also bemühe mal die Suche.
    Bots sind hier nicht sooo beliebt. Für rein programmtechnische Fragen bekommst du natürlich immer Unterstützung.
    Falls du es nicht kennst, such mal nach "Ollydbg".

  • Gui für ein Tool

    • BugFix
    • 11. Oktober 2007 um 21:17

    Hi Manu,

    das ist wirklich ziemlich unstrukturiert. :(

    Und meine Codebeispiele waren nur Beispiele und nicht direkt auf dein Programm bezogen. Insofern bringt es wenig diesen Code unangepaßt reinzukopieren.

    Ich habe dir hier mal ein Muster erstellt. Die benötigte INI-Datei habe ich als Kommentarblock vorangestellt. Mußt du also nur in den Editor kopieren und als "Language.INI" abspeichern.

    Spoiler anzeigen
    [autoit]

    #cs

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

    [EN]
    1=ENGLISH
    2=File
    3=Open
    4=Save
    5=Delete
    6=Edit
    7=Copy
    8=Paste
    9=?
    10=Help
    11=Choose German Language
    [DE]
    1=DEUTSCH
    2=Datei
    3=Öffnen
    4=Speichern
    5=Löschen
    6=Bearbeiten
    7=Kopieren
    8=Einfügen
    9=?
    10=Hilfe
    11=Wähle Englisch

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

    #ce

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

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

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

    Global $arControl[11], $Switch = 0
    Global $INIPath = @ScriptDir & '\Language.INI'
    Global $arTitleEN = IniReadSection($INIPath, 'EN')
    Global $arTitleDE = IniReadSection($INIPath, 'DE')

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

    $arControl[0] = GUICreate("DEUTSCH", 633, 454, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $arControl[1] = GUICtrlCreateMenu("Datei")
    GUICtrlSetOnEvent(-1, "mnuFileClick")
    $arControl[2] = GUICtrlCreateMenuItem("Öffnen", $arControl[1])
    GUICtrlSetOnEvent(-1, "mnuOpenClick")
    $arControl[3] = GUICtrlCreateMenuItem("Speichern", $arControl[1])
    GUICtrlSetOnEvent(-1, "mnuSaveClick")
    $arControl[4] = GUICtrlCreateMenuItem("Löschen", $arControl[1])
    GUICtrlSetOnEvent(-1, "mnuDelClick")
    $arControl[5] = GUICtrlCreateMenu("Bearbeiten")
    GUICtrlSetOnEvent(-1, "mnuEditClick")
    $arControl[6] = GUICtrlCreateMenuItem("Kopieren", $arControl[5])
    GUICtrlSetOnEvent(-1, "mnuCopyClick")
    $arControl[7] = GUICtrlCreateMenuItem("Einfügen", $arControl[5])
    GUICtrlSetOnEvent(-1, "mnuPasteClick")
    $arControl[8] = GUICtrlCreateMenu("?")
    GUICtrlSetOnEvent(-1, "mnuHelpClick")
    $arControl[9] = GUICtrlCreateMenuItem("Hilfe", $arControl[8])
    GUICtrlSetOnEvent(-1, "mnuHelClick")
    $arControl[10] = GUICtrlCreateMenuItem("Wähle Englisch", $arControl[8])
    GUICtrlSetOnEvent(-1, "mnuLangClick")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func mnuLangClick()
    Switch $Switch
    Case 0
    SetTitle($arTitleEN)
    $Switch = 1
    Case 1
    SetTitle($arTitleDE)
    $Switch = 0
    EndSwitch
    EndFunc
    Func SetTitle(ByRef $ARRAYTITLE)
    For $i = 0 To UBound($arControl) -1
    If $i = 0 Then
    WinSetTitle($arControl[0], '', $ARRAYTITLE[1][1])
    Else
    GUICtrlSetData($arControl[$i], $ARRAYTITLE[$i+1][1])
    EndIf
    Next
    EndFunc
    Func mnuCopyClick()

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

    EndFunc
    Func mnuDelClick()

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

    EndFunc
    Func mnuEditClick()

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

    EndFunc
    Func mnuFileClick()

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

    EndFunc
    Func mnuHelClick()

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

    EndFunc
    Func mnuHelpClick()

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

    EndFunc
    Func mnuOpenClick()

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

    EndFunc
    Func mnuPasteClick()

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

    EndFunc
    Func mnuSaveClick()

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

    EndFunc

    [/autoit]
  • Geiz ist geil.

    • BugFix
    • 11. Oktober 2007 um 11:12
    Zitat

    aber wir erstellen doch dann auch brav die GUI dazu, oder?

    Genau, mach das! :D

  • Ausgabe an Ausgabefenster (Edit-Ctrl) senden

    • BugFix
    • 11. Oktober 2007 um 11:04

    ich bin mir nicht ganz sicher was du erreichen möchtest. Benenne genau welches Control was machen soll.
    Also das übliche "Vorher-Aktion-Nachher" - Szenario.

    Deine Fragestellung ist mir momentan zu allgemein.

  • 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:

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™