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

Beiträge von teh_hahn

  • ScrabbleHelper

    • teh_hahn
    • 8. September 2007 um 16:09

    Warum sollte wikipedia besser sein als ein Wörterbuch? Zumal die Performance mit Sicherheit auch nicht die beste ist und das Ganze nicht mal an einem Rechner ohne Internetverbindung funktioniert (bei Scrabble-Spielen z.B. mit Notebook). Einfach die Abfragen aus dem Wörterbuch performanter machen und gut.

  • Include einer "*.au3"-Datei, deren Pfad dynamisch ist

    • teh_hahn
    • 7. September 2007 um 15:03

    Hi,

    Leute manchmal versteh ich Euch nicht. AutoIt ist meines Erachtens die am besten dokumentierte Skriptsprache. rtfm.

    Ich will's Dir trotzdem nochmal aufzeigen. Hilfe sagt (Im Index zu finden unter #include [wer hätte das gedacht!]:

    Zitat

    #include "[path\]filename"

    Parameters
    filename - The filename of the current script to include. Path is optional. This must be a string--it cannot be a variable. [...]

    Einzige Möglichkeit: Relativen Pfad nehmen. Beispiel:
    Skript liegt in "D:\TestSkript", Include-Datei liegt in "D:\includes", dann machst Du:

    [autoit]

    #include "..\includes\MyInclude.au3"

    [/autoit]

    Bitte lest das Manual, bitte!

    EDIT: Includes, werden ausserdem quasi in das Skript rein kopiert, es gibt keinen Grund das zur Laufzeit zu tun. Nimm einfach alle Includes, die Du brauchst mit rein in Dein Skript und fertig!

  • Skript für Spiel

    • teh_hahn
    • 6. September 2007 um 18:40

    Mal ganz davon abgesehen, dass ich cheaten sche*!$ finde, sollte einem doch zumindest klar sein, dass man zumindest zufällige Sleeps nimmt, damit man nicht erwischt wird...

    Irgendwie wird das hier mit den Bots immer mehr. Ich bin mal dafür, direkt nach Thread-Eröffnung den Thread zu schließen und eine Warning für den Benutzer auszusprechen. (2nd try = Ban...)

    Geht einem langsam gegen den Strich, dass sich hier Benutzer registrieren, die ihren Bot hier fertig machen wollen und sich dann nie wieder blicken lassen.

    @Cokess & @Speedy: Nix für ungut!

  • Speicherbelegung

    • teh_hahn
    • 4. September 2007 um 22:56

    Meines Erachtens nicht mit AutoIt möglich. Wenn jemand was Anderes weiß, immer her damit!

  • Schreibweise/Geschwindigkeit AutoIt3-SourceCode

    • teh_hahn
    • 4. September 2007 um 21:31

    Ok, so meinst Du das. Ist natürlich auch eine Möglichkeit... Ich überprüf aber lieber auf

    [autoit]

    If @error Then

    [/autoit]

    bei Funktionen...

    Jedem halt das Seine... ^^

  • verschiedene Probleme mit gui und Dosbox

    • teh_hahn
    • 4. September 2007 um 21:30

    Also, bei mir klappt das soweit. Habe natürlich keine SQL-Instanz laufen, weswegen ein Error zurückgegeben wird. Gehe ich Recht in der Annahme, dass wenn Du eine Verbindung aufgebaut hast (manuell mit der EXE) das Programm neue Eingaben erwartet? Dann musst Du die StdIn anpassen, da er aus der While Schleife nicht mehr herauskommt. Versuch mal folgendes:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>
    Opt("GUICloseOnESC", 0)
    Opt("MustDeclareVars", 1)

    Local Const $S_LOGFILE = @ScriptDir & "\log.txt"
    Local $h_ipedit = -1, $h_useredit = -1, $h_passwdedit = -1, $h_connbt = -1, _
    $h_cmdedit = -1, $h_sendbt = -1, $h_endbt = -1, $h_statusedit = -1
    Local $s_ip = "", $s_user = "", $s_passwd = "", $s_stdout = ""
    Local $i_msg = 0, $i_pid = 0

    If FileExists($S_LOGFILE) Then FileDelete($S_LOGFILE)

    GUICreate("GUI", 800, 500)
    GUICtrlCreateLabel("IP", 10, 30)
    $h_ipedit = GUICtrlCreateInput("88.249.224.169", 70, 30, 200, 20)
    GUICtrlCreateLabel("User", 10, 70)
    $h_useredit = GUICtrlCreateInput("", 70, 70, 200, 20)
    GUICtrlCreateLabel("Passwort", 10, 110)
    $h_passwdedit = GUICtrlCreateInput("", 70, 110, 200, 20)
    $h_connbt = GUICtrlCreateButton("Verbinden", 130, 140)
    GUICtrlCreateLabel("Manueller Befehl", 130, 190)
    $h_cmdedit = GUICtrlCreateInput("", 70, 220, 200, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_sendbt = GUICtrlCreateButton("Senden", 140, 250)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_endbt = GUICtrlCreateButton("Schließen", 730, 470)
    GUICtrlCreateLabel("Warte auf Daten...", 300, 10, 400, 420)
    $h_statusedit = GUICtrlCreateEdit("", 300, 10, 480, 300)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState()

    While 1
    $i_msg = GUIGetMsg()
    Select
    Case $i_msg = $h_connbt
    $s_ip = GUICtrlRead($h_ipedit)
    If Not $s_ip Then
    MsgBox(48, "Achtung", "Es wurden keine IP eingetragen")
    ContinueCase
    EndIf
    $s_user = GUICtrlRead($h_useredit)
    If Not $s_user Then
    MsgBox(48, "Achtung", "Es wurden kein Benutzername eingetragen")
    ContinueCase
    EndIf
    $s_passwd = GUICtrlRead($h_passwdedit)
    ;~ If Not $s_passwd Then
    ;~ MsgBox(48, "Achtung", "Es wurden kein Passwort eingetragen")
    ;~ ContinueCase
    ;~ EndIf
    If Not Ping($s_ip) Then
    MsgBox(48, "Achtung", "Die eingetragene IP ist offline")
    ContinueCase
    EndIf

    GUICtrlSetData($h_statusedit, "Verarbeite")
    $i_pid = Run(@ComSpec & " /c " & "SQLcmd.exe " & $s_user & " " & $s_passwd & " " & $s_ip, @WorkingDir, @SW_HIDE, 7)
    If @error Then
    MsgBox(48, "Achtung", "SQLcmd.exe konnte nicht gestartet werden")
    ContinueCase
    EndIf
    $s_stdout = StdoutRead($i_pid)
    GUICtrlSetState($h_cmdedit, $GUI_ENABLE)
    GUICtrlSetState($h_sendbt, $GUI_ENABLE)
    GUICtrlSetState($h_statusedit, $GUI_SHOW)
    GUICtrlSetData($h_statusedit, $s_stdout)
    FileWrite($S_LOGFILE, $s_stdout)
    Case $i_msg = $h_sendbt
    StdinWrite($i_pid, GUICtrlRead($h_cmdedit))
    StdinWrite($i_pid)
    While 1
    $s_stdout &= StdoutRead($i_pid)
    If @error Then ExitLoop
    WEnd
    GUICtrlSetData($h_statusedit, $s_stdout)
    FileWrite($S_LOGFILE, $s_stdout)
    Case $i_msg = $h_endbt Or $i_msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
  • Schreibweise/Geschwindigkeit AutoIt3-SourceCode

    • teh_hahn
    • 4. September 2007 um 21:09

    Ne, da hast Du schon recht. Interessierte mich halt bloß. Werde auch wohl bei meiner bisherigen Schreibweise bleiben, nur das mit den Variablenpräfixen wie n für numeric werd ich wohl übernehmen.
    Zu Deinem letzten Satz: Stellt sich die Frage, was schneller ist, wenn eine Funktion einen Error zurückgeben soll: :D

    [autoit]

    SetError(1)
    Return (0)

    [/autoit]


    oder

    [autoit]

    Return (SetError(1, 0, 0))

    [/autoit]


    Ich persönlich präferiere das letztere, da platzsparend.

  • Viewer für Word, Excel, Powerpoint und Visio

    • teh_hahn
    • 4. September 2007 um 20:59

    Na dann benutz doch einfach die ControlID und nicht den Bezeichner:

    [autoit]

    ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )

    [/autoit]

    Zudem lassen sich WinTitle und WinText immer wunderbar in eine Variable packen, z.B.::

    [autoit]

    Local $s_wintitle = "Microsoft Office Visio Viewer 2003-Setup"

    [/autoit]


    Wenn sich das ändert einfach die Variable überschreiben. Minimiert das Pflegen von SilentSkripten ungemein.

  • Funktionsparameter (Const, Default) und Enum

    • teh_hahn
    • 4. September 2007 um 20:10

    OK, danke. damit setze ich mal auf gelöst. Vielleicht hilft es ja dem Einen oder Anderen noch.

  • Funktionsparameter (Const, Default) und Enum

    • teh_hahn
    • 4. September 2007 um 17:45

    Hi, also erstmal danke. Das mit dem Const habe ich mir ja bereits so gedacht, also danke für die Bestätigung!

    Und zu dem "Default". lol...
    Jetzt fällts mir wie Schuppen von den Augen. Macht ja total Sinn. Er nimmt dann also quasi den Wert, der als Standard im Funktionskopf ist. Also quasi wenn ich den dritten Parameter setzen möchte, nicht aber den zweiten, weil er mir Schnuppe ist und ich den Standardwert für ihn verwenden möchte. Leider geht das nicht:

    Spoiler anzeigen
    [autoit]

    Local $aiArray[2] = [0, 1]
    _TestFunc($aiArray, Default, 1)

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

    Func _TestFunc(Const ByRef $avArray, Const $iMODE = 0, Const $iCASE = 0)
    MsgBox(0, "_TestFunc", "$iMODE: " & $iMODE & @CR & "$iCASE: " & $iCASE)
    If $iMODE = 1 Then MsgBox(0, "_TestFunc", "$iMODE is enabled!")
    If $iCASE = 1 Then MsgBox(0, "_TestFunc", "$iCASE is enabled!")
    EndFunc

    [/autoit]


    Es funzt erst, wenn man es so macht. (Was meiner Meinung nach in keinem Verhältnis steht...):

    Spoiler anzeigen
    [autoit]

    Local $aiArray[2] = [0, 1]
    _TestFunc($aiArray, Default, 1)

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

    Func _TestFunc(Const ByRef $avArray, $iMODE = Default, $iCASE = Default)
    If $iMODE = Default Then $iMODE = 0
    If $iCASE = Default Then $iCASE = 0
    MsgBox(0, "_TestFunc", "$iMODE: " & $iMODE & @CR & "$iCASE: " & $iCASE)
    If $iMODE = 1 Then MsgBox(0, "_TestFunc", "$iMODE is enabled!")
    If $iCASE = 1 Then MsgBox(0, "_TestFunc", "$iCASE is enabled!")
    EndFunc

    [/autoit]


    Womit wir wieder bei den Const wären. Das zweite ist garantiert langsamer als das erste (aufgrund der zwei Zuweisungen). Hab ich da jetzt was mit "Default" falsch verstande, oder ist das wirklich so gedacht?

  • Funktionsparameter (Const, Default) und Enum

    • teh_hahn
    • 4. September 2007 um 15:08

    Hi,

    ich möchte behaupten, dass ich in AutoIt mittlerweile einigermaßen durchblicke. Drei Sachen sind mir jedoch noch nicht ganz klar:
    1. Func...Return...EndFunc:
    Der optionale Const-Parameter für eine übergebene Variable wird so gut wie nie genutzt (zumindest bei Funktionen, die mir bisher untergekommen sind!) Entweder ist mir was entgangen, oder alle anderen benutzen ihn einfach nicht, weil er keinen Geschwindigkeitsvorteil bringt oder... Ja, warum? So wie ich das sehe, sind doch (fast) alle Parameter, die man einer Funktion übergibt konstant, es sei denn man will den Wert einer übergebenen Variable direkt ändern, dann benutzt man halt ByRef.
    Die Hilfe sagt folgendes dazu:

    Code
    The Const keyword is optional and indicates that the value of the parameter will not change during the execution of the function. A variable declared Const can only be passed to a function using a Const parameter.


    2. Default
    Welchen Sinn, macht das Keyword Default? Wenn ich einem Parameter einer Funktion keinen Wert übergeben will, so setze ich ihn im Funktionskopf einfach auf 0 und mache ihn damit optional. Ein standardmäßiges Setzen auf Default, führt ja dazu, dass in der Variablen "Default" steht. Dann müsste ich ja auf "Default" prüfen und die Variable überschreiben, womit sie dann wiederum auch nicht Const sein dürfte. Ich hoffe das Ganze ist noch nachzuvollziehen!
    3. Enum
    Kann mir jemand ein Beispiel für die Anwendung von einem Enum geben (sinnvoll)?

    Hier noch ein wenig Code zur Veranschaulichung:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    Opt("MustDeclareVars", 1)

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

    Local Enum $eiCount0, $eiCount1, $eiCount2
    Local $aiArray[2] = [0, 1]

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

    _TestFunc0($aiArray, Default)
    _TestFunc1($aiArray, Default)

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

    Func _TestFunc0(Const ByRef $avArray, Const $iMODE = 1)
    If $iMODE = 1 Or $iMODE = Default Then
    MsgBox(0, "_TestFunc0", "Hier würde etwas passieren!" & @CR & "$iMODE: " & $iMODE & @CR & _
    "Wenn $iMODE hier gleich 'Default' ist, könnte man nicht mit $iMODE weiter arbeiten!")
    Return (1)
    EndIf
    EndFunc ;==>_TestFunc0

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

    Func _TestFunc1(Const ByRef $avArray, $iMODE = 1)
    If $iMODE = Default Then $iMODE = 1
    If $iMODE = 1 Then
    MsgBox(0, "_TestFunc1", "Hier würde etwas passieren!" & @CR & "$iMode: " & $iMODE)
    Return (1)
    EndIf
    EndFunc ;==>_TestFunc1

    [/autoit]
  • Schreibweise/Geschwindigkeit AutoIt3-SourceCode

    • teh_hahn
    • 4. September 2007 um 14:45

    Hi,

    Die Optionen vor den includes? Das würde doch bedeuten, dass wenn ich Opt("MustDeclareVars", 1) mache und in einer include-Datei nicht alle Variablen/Konstanten deklariert wurden, mir mein Skript abschmiert. Meine Reihenfolge ist:
    1. includes
    2. Options
    3. main-Func
    4. other Funcs

    Du sagtest, für AutoIt gibt es keinen wirklichen Standard. Die Seite, die ich oben verlinkt habe ist aber defakto Standard, da es die Anforderungen des Entwicklers sind um UDFs mit in den AutoIt-Release mit aufzunehmen, von daher würde ich das schon so bezeichnen, oder nicht?

  • Schreibweise/Geschwindigkeit AutoIt3-SourceCode

    • teh_hahn
    • 4. September 2007 um 13:23

    Hi,

    da ich meinen Coding-Stil momentan umstelle, um schnelleren und übersichtlichern Code zu schreiben, fragte ich mich, ob es nicht irgendwo so etwas wie eine Art "Norm" für AutoIt3-SourceCode gibt. Ich bin auch schnell fündig geworden und zwar hier: User Defined Functions Standard

    Das mit der Bezeichnung von Funktionsnamen war mir vorher schon klar, nicht jedoch folgendes:
    Originalzitat:

    Spoiler anzeigen
    Zitat

    Variable Names
    [...]
    $a<letter> - Array (the following letter describes the data type taken from the rest of the data types below)
    $b - Binary data
    $h - File or window handle
    $i - Integer
    $f - Boolean
    $n - Floating point number
    $s - String
    $v - Variant (unknown/variable type of data)
    [...]

    Alles anzeigen


    Deutsche Übersetzung: thx GtaSpider

    Spoiler anzeigen
    Zitat


    Variablennamen:
    [...]
    $a<Buchstabe> - Array (Der folgende Buchstabe beschreibt den Datentyp, entnommen aus den unten stehenden Datentypen)
    $b - Binäre Daten
    $h - Datei oder Fenster handle (auch ControlIDs)
    $i - Integer (Ganzzahlen, z.B.: -1, 0, 1)
    $f - Boolean (Wahrheitswerte: False, True)
    $n - Floating point number (Gleitkommazahlen, wobei die Variable die Form dddd.dddd hat. dddd kann dabei aus einer oder mehreren dezimalen Zahlen bestehen.)
    $s - String (Zeichenkette, z.B.: "Dies ist ein String!")
    $v - Variation (Unbekannter / unterschiedliche Datentypen)
    [...]

    Alles anzeigen


    Bei dieser Gelegenheit will ich einmal den Unterschied zwischen Dim / Global / Local erklären:
    Dim / Global / Local:

    Spoiler anzeigen


    Die Dim/Local/Global Schlüsselwörter führen ähnliche Funktionen aus:
    1. Sie deklarieren eine Variable bevor man sie nutzt (ähnlich zu VBSkript)
    2. Sie erschaffen ein Array

    Dabei sollte beachtet werden, dass Dim nicht mehr benutzt werden sollte, Local nur in Funktionen Sinn macht und Global immer ausserhalb von Funktionen eingesetztv wird. Zudem sollte ganz oben im Skript (unter den includes folgendes eingefügt werden:

    [autoit]

    Opt("MustDeclareVars", 1)

    [/autoit]

    Damit wird gewährleistet, dass Variablen vor ihrer Nutzung explizit deklariert werden müssen.
    Variablen sollten auch immer nach ihrem Zweck benannt werden (am Besten auf Englisch). Beispiel: $iC ist nicht aussagekräftig, $iCounter hindessen schon:

    [autoit]

    Opt("MustDeclareVars", 1)
    Global $as_fnames[2] = ["Klaus", "Hans"]
    Global $f_error = False
    MyFunc(182.57)

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

    Func MyFunc(Const $N_TIME = 0.0)
    Local $i_multiplier = 60

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

    Return ($i_multiplier * $N_TIME)
    EndFunc

    [/autoit]


    Die Frage, die sich mir nun stellt ist, wie benennt man Konstanten (also Variablen, die mit Local Const deklariert wurden...)? Nach der obigen Definition sieht ja jede Variable/Konstante, hier z.B. eine Integerkonstante, so aus:

    [autoit]

    Local Const $iStartIndex = 1

    [/autoit]


    Bisher hatte ich mir angewöhnt, Konstanten immer groß und Variablen immer klein zu schreiben, zudem mit dem jeweiligen Bezeichner und einem "_" davor, z.B.:

    [autoit]

    Local Const $I_STARTINDEX = 1

    [/autoit]

    Dies wäre aber laut dem Standard falsch. Ich möchte ab jetzt meinen Code nach den Standards gestalten, womit aber das Problem bleibt, dass sich Variablen und Konstanten im SourceCode nicht mehr auf Anhieb unterscheiden lassen (Eigentlich nicht so schlimm, würde mich aber interessieren ob es da auch eine bestimmte "Benamsung" gibt).

    Da ich zu Anfang bereits Geschwindigkeit ansprach möchte ich hier noch einmal die wichtigsten Erkenntnisse diesbezüglich wiederholen (hier Verweise ich auf den AutoIT SpeedTester:(

    Spoiler anzeigen
    Zitat

    1. For/Next loops are champions. Try not to use While/Wend or Do/Until
    2. If $Val is faster than If $Val = 1 or $Val = TRUE
    3. If $Val = 1 is faster than $Val = TRUE
    4. If Not $Val is faster than If $Val = 0 or $Val = FALSE
    5. If $Val = 0 is faster than If $Val = FALSE
    6. < and > are faster than =, >= or <= (Wow!)
    7. $i += 1 is faster than $i = $i + 1
    $i -= 1 is faster than $i = $i - 1
    $i *= 1 is faster than $i = $i * 1
    $i /= 1 is faster than $i = $i / 1
    8. If doing a lot of verifications on a single variable:
    Switch is fastest, Select is second (but slow) and If is slowest.
    9. If $Val is a string, If Not $Val is faster than If $Val = ""
    If $Val is faster than If $Val <> ""
    10. When doing binary operations, If $Val -128 > 0 is twice as fast
    as If BitAnd($Val, 128).
    11. Using Hex numbers is faster than using decimal numbers
    12 Replacing dec/hex numbers by variables slows down execution. Use hex/dec numbers when possible
    13. Longer variable names = longer execution time. Keep variable names short and clear!
    14. StringRegExpReplace() is slower than StringReplace(). Use it only if necessary!
    15. StringRegExp() is slower than StringInStr(). Use only if necessary!
    16. Opt("ExpandEnvStrings",1) makes $Val = "%TEMP%" faster than $Val = EnvGet("temp")
    or $Val = @TempDir
    17. $Val = @TempDir is faster than $Val = EnvGet("temp")
    18. Opt("ExpandVarStrings",1) makes $Val = "$String$" slightly faster than $Val = $String
    19. However $Val = "@TempDir@" is slower than $Val = @TempDir (go figure!)

    Alles anzeigen


    Wer jetzt von Euch denkt, "Und? Wenn interessiert das nun?", der möge diesen Thread ignorieren. Ich bin jedoch immer dafür SourceCode einheitlich (nicht nur meinen untereinander, sondern auch in Bezug zu Anderem) zu halten und schneller zu machen.

    EDIT:
    - Deutsche Übersetzung der Variablenbenennung hinzugefügt (thx GtaSpider ).
    - Erklärung zu Dim / Global / Local hinzugefügt.

  • Skript für Spiel

    • teh_hahn
    • 2. September 2007 um 21:21

    Na, z.B. einfach:

    Spoiler anzeigen
    [autoit]

    For $i = 1 To 10
    ConsoleWrite("Schleifendurchlauf: " & $i & @CRLF)
    Sleep(1000)
    Next

    [/autoit]


    Würde aber in Deinem Fall Do-Until machen...

  • verschiedene Probleme mit gui und Dosbox

    • teh_hahn
    • 31. August 2007 um 18:56

    Poste mal die EXE-Datei, damit kommen wir am ehesten weiter. Benutz mal folgenden Code (waren noch zwei Dinge falsch):

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>
    Opt("GUICloseOnESC", 0)
    Opt("MustDeclareVars", 1)

    Local Const $S_LOGFILE = @ScriptDir & "\log.txt"
    Local $h_ipedit = -1, $h_useredit = -1, $h_passwdedit = -1, $h_connbt = -1, _
    $h_cmdedit = -1, $h_sendbt = -1, $h_endbt = -1, $h_statusedit = -1
    Local $s_ip = "", $s_user = "", $s_passwd = "", $s_stdout = ""
    Local $i_msg = 0, $i_pid = 0

    If FileExists($S_LOGFILE) Then FileDelete($S_LOGFILE)

    GUICreate("GUI", 800, 500)
    GUICtrlCreateLabel("IP", 10, 30)
    $h_ipedit = GUICtrlCreateInput("88.249.224.169", 70, 30, 200, 20)
    GUICtrlCreateLabel("User", 10, 70)
    $h_useredit = GUICtrlCreateInput("", 70, 70, 200, 20)
    GUICtrlCreateLabel("Passwort", 10, 110)
    $h_passwdedit = GUICtrlCreateInput("", 70, 110, 200, 20)
    $h_connbt = GUICtrlCreateButton("Verbinden", 130, 140)
    GUICtrlCreateLabel("Manueller Befehl", 130, 190)
    $h_cmdedit = GUICtrlCreateInput("", 70, 220, 200, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_sendbt = GUICtrlCreateButton("Senden", 140, 250)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_endbt = GUICtrlCreateButton("Schließen", 730, 470)
    GUICtrlCreateLabel("Warte auf Daten...", 300, 10, 400, 420)
    $h_statusedit = GUICtrlCreateEdit("", 300, 10, 480, 300)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState()

    While 1
    $i_msg = GUIGetMsg()
    Select
    Case $i_msg = $h_connbt
    $s_ip = GUICtrlRead($h_ipedit)
    If Not $s_ip Then
    MsgBox(48, "Achtung", "Es wurden keine IP eingetragen")
    ContinueCase
    EndIf
    $s_user = GUICtrlRead($h_useredit)
    If Not $s_user Then
    MsgBox(48, "Achtung", "Es wurden kein Benutzername eingetragen")
    ContinueCase
    EndIf
    $s_passwd = GUICtrlRead($h_passwdedit)
    ;~ If Not $s_passwd Then
    ;~ MsgBox(48, "Achtung", "Es wurden kein Passwort eingetragen")
    ;~ ContinueCase
    ;~ EndIf
    If Not Ping($s_ip) Then
    MsgBox(48, "Achtung", "Die eingetragene IP ist offline")
    ContinueCase
    EndIf

    GUICtrlSetData($h_statusedit, "Verarbeite")
    $i_pid = Run(@ComSpec & " /c " & "SQLcmd.exe " & $s_user & " " & $s_passwd & " " & $s_ip, @WorkingDir, @SW_HIDE, 7)
    If @error Then
    MsgBox(48, "Achtung", "SQLcmd.exe konnte nicht gestartet werden")
    ContinueCase
    EndIf
    ;~ Hier muss etwas angepasst werden
    While 1
    $s_stdout &= StdoutRead($i_pid)
    If @error Then ExitLoop
    WEnd
    GUICtrlSetState($h_sendbt, $GUI_ENABLE)
    GUICtrlSetState($h_endbt, $GUI_ENABLE)
    GUICtrlSetState($h_statusedit, $GUI_SHOW)
    GUICtrlSetData($h_statusedit, $s_stdout)
    FileWrite($S_LOGFILE, $s_stdout)
    Case $i_msg = $h_sendbt
    StdinWrite($i_pid, GUICtrlRead($h_cmdedit))
    StdinWrite($i_pid)
    ;~ Hier muss etwas angepasst werden
    While 1
    $s_stdout &= StdoutRead($i_pid)
    If @error Then ExitLoop
    WEnd
    GUICtrlSetData($h_statusedit, $s_stdout)
    FileWrite($S_LOGFILE, $s_stdout)
    Case $i_msg = $h_endbt Or $i_msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
  • Firefox - XPIs automatisch installieren

    • teh_hahn
    • 31. August 2007 um 11:29

    lol, trockene Antwort. Kein Problem!

    Zum Thread gelöst markieren kannst Du ganz unten rechts im Thread beim Dropdown "Thema bearbeiten" auswählen und den Thread als gelöst markieren. Übersieht man leider immer!

  • verschiedene Probleme mit gui und Dosbox

    • teh_hahn
    • 31. August 2007 um 11:19

    Hi!

    Dein Code war ja grausam. habe das Ganze mal so geschrieben, wie ich es machen würde (Wird bestimmt noch nicht funzen, aber poste mal, wo jetzt genau die Probleme sind mit meinem Code, dann kommen wir weiter!):

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUICloseOnESC", 0)
    Opt("MustDeclareVars", 1)

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

    Local Const $S_LOGFILE = @ScriptDir & "\log.txt"
    Local $h_ipedit = -1, $h_useredit = -1, $h_passwdedit = -1, $h_connbt = -1, _
    $h_cmdedit = -1, $h_sendbt = -1, $h_endbt = -1, $h_statusedit = -1
    Local $s_ip = "", $s_user = "", $s_passwd = "", $s_stdout = ""
    Local $i_msg = 0, $i_pid = 0

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

    If FileExists($S_LOGFILE) Then FileDelete($S_LOGFILE)

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

    GUICreate("GUI", 800, 500)
    GUICtrlCreateLabel("IP", 10, 30)
    $h_ipedit = GUICtrlCreateInput("88.249.224.169", 70, 30, 200, 20)
    GUICtrlCreateLabel("User", 10, 70)
    $h_useredit = GUICtrlCreateInput("", 70, 70, 200, 20)
    GUICtrlCreateLabel("Passwort", 10, 110)
    $h_passwdedit = GUICtrlCreateInput("", 70, 110, 200, 20)
    $h_connbt = GUICtrlCreateButton("Verbinden", 130, 140)
    GUICtrlCreateLabel("Manueller Befehl", 130, 190)
    $h_cmdedit = GUICtrlCreateInput("", 70, 220, 200, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_sendbt = GUICtrlCreateButton("Senden", 140, 250)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_endbt = GUICtrlCreateButton("Schließen", 730, 470)
    GUICtrlCreateLabel("Warte auf Daten...", 300, 10, 400, 420)
    $h_statusedit = GUICtrlCreateEdit("", 300, 10, 480, 300)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState()

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

    While 1
    $i_msg = GUIGetMsg()
    Select
    Case $i_msg = $h_connbt
    $s_ip = GUICtrlRead($h_ipedit)
    If Not $s_ip Then
    MsgBox(48, "Achtung", "Es wurden keine IP eingetragen")
    ContinueCase
    EndIf
    $s_user = GUICtrlRead($h_useredit)
    If Not $s_user Then
    MsgBox(48, "Achtung", "Es wurden kein Benutzername eingetragen")
    ContinueCase
    EndIf
    $s_passwd = GUICtrlRead($h_passwdedit)
    If Not $s_passwd Then
    MsgBox(48, "Achtung", "Es wurden kein Passwort eingetragen")
    ContinueCase
    EndIf
    If Not Ping($s_ip) Then
    MsgBox(48, "Achtung", "Die eingetragene IP ist offline")
    ContinueCase
    EndIf

    GUICtrlSetData($h_statusedit, "Verarbeite")
    $i_pid = Run(@ComSpec & " /c " & "SQLcmd.exe " & $s_user & " " & $s_passwd & " " & $s_ip, @WorkingDir, @SW_HIDE, 6)
    If @error Then
    MsgBox(48, "Achtung", "SQLcmd.exe konnte nicht gestartet werden")
    ContinueCase
    EndIf
    While 1
    $s_stdout &= StdoutRead($i_pid)
    If @error Then ExitLoop
    WEnd
    GUICtrlSetState($h_sendbt, $GUI_ENABLE)
    GUICtrlSetState($h_endbt, $GUI_ENABLE)
    GUICtrlSetState($h_statusedit, $GUI_SHOW)
    GUICtrlSetData($h_statusedit, $s_stdout)
    FileWrite($S_LOGFILE, $s_stdout)
    Case $i_msg = $h_sendbt
    StdinWrite($i_pid, GUICtrlRead($h_cmdedit))
    StdinWrite($i_pid)
    While 1
    $s_stdout &= StdoutRead($i_pid)
    If @error Then ExitLoop
    WEnd
    GUICtrlSetData($h_statusedit, $s_stdout)
    FileWrite($S_LOGFILE, $s_stdout)
    Case $i_msg = $h_endbt Or $i_msg = $GUI_EVENT_CLOSE
    ProcessClose("SQLcmd.exe")
    Exit
    EndSelect
    WEnd

    [/autoit]
  • Run - Problem

    • teh_hahn
    • 30. August 2007 um 14:35

    Hi,
    bei mir gehen beide Deiner Versuche nicht. Mach doch einfach so:

    Spoiler anzeigen
    [autoit]

    Local Const $S_FILE = "D:\netadapter.cfg"
    Local Const $I_PID = Run(@ComSpec & ' /c "netsh.exe interface ip show config"', @SystemDir, @SW_HIDE, 2)
    Local $s_stdout = ""
    While 1
    $s_stdout &= StdoutRead($I_PID)
    If @error Then ExitLoop
    WEnd
    FileWrite($S_FILE, $s_stdout)

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

    ;~ Funktioniert bei mir auch nicht...
    ;~ Run("netsh interface ip show config >D:\netadapter2.cfg", @SystemDir, @SW_HIDE)

    [/autoit]

    EDIT: Uups, hast ja eben in der Zwischenzeit schon selber gepostet. Bei mir siehts aber identisch aus, als wenn ich es mir über CMD in eine Datei schreibe.

  • Partypoker den Kontostand ablesen

    • teh_hahn
    • 30. August 2007 um 14:20

    Dann hast Du allerdings ein Problem. Wenn der Kontostand immer an der gleichen Stelle ist, kannst Du versuchen dir den Bildausschnitt zu holen und dann eine Art OCR zu programmieren, die dir das Ganze in eine Variable umwandelt.

  • Netzwerk analyse tool

    • teh_hahn
    • 30. August 2007 um 10:44

    Hi!

    Um den Netzwerkverkehr zu betrachten. (Eventuelle Kollisionen etc.) benutz Du am besten Ethereal http://www.ethereal.com/ oder Packetyzer http://www.networkchemistry.com/products/packetyzer.php. Das Letztere finde ich persönlich einfacher zu bedienen (Ist aber lediglich eine Modifikation von Ethereal).

    Über einen einfachen Ping wirst Du niemals Informationen darüber erhalten, was in Deinem netzwerk geschieht.

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™