einige fragen zu meinem soucecode/projekt

  • Die "Dos-Abfrage":

    [autoit]


    #include<Constants.au3>
    _StartTeknogodsDLL()
    Func _StartTeknogodsDLL()
    local $old
    Local $hPID = Run("ping.exe heise.de", "", @SW_HIDE,$STDERR_MERGED)
    while ProcessExists($hPID)
    Local $readData = StdoutRead($hPID)
    if $old <> $readData then ConsoleWrite($readData & @CRLF)
    wend
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]


    Den Rest hab ich nicht kapiert. :S

  • hmmm, welchen code ich von euch auch einkopiere, es geht nicht :(
    ... es gibt auch keine fehlermeldung.
    ich poste jetzt mal wie mein code bisher aussieht bzw. wie ich mein tool trotzdem benutzen kann. (hab einfach die meldungen von hand geschrieben)

    aber es geht ja jetzt nurnoch ums prinzip warum es bei mir nicht geht!

    fehlt noch ein include???

    hier mal ausschnittweise alle relevanten stellen:
    wie gesagt: die meldungen gehen und alles :( bin ich soooo blöde !?

    Spoiler anzeigen
    [autoit]


    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <GuiListView.au3>
    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <EditConstants.au3>
    #include <Constants.au3>

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

    Opt('MustDeclareVars', 1)
    $Debug_Ed = False
    Local $msg, $x, $strComputer, $objWMIService, $colComputers, $colItems, $iLen, $iHoriz = 0, $iVert = 100
    Global $input = GUICtrlCreateEdit("Starting interface....", 10, 350, 480, 120, BitOR($ES_AUTOVSCROLL , $WS_VSCROLL))

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

    Global $processname = ("ping.exe")

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

    Func _StartTeknogodsDLL()
    If FileExists($processname) Then
    If ProcessExists($processname) Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process was already running:" & $processname & " It will be closed and restarted!")
    ProcessClose ($processname)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process closed! Will be restarted soon...")
    Sleep(5000)
    Local $hPID = Run("ping.exe", "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
    Else
    Local $oldData = ""
    Local $hPID = Run("ping.exe", "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
    ProcessWaitClose($hPID)
    Do
    Local $readData = StdoutRead($hPID)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    ExitLoop
    Until 0
    EndIf
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "File not found:" & $processname & " It musst be placed in the same directory as this tool!")
    EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <GuiListView.au3>
    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <EditConstants.au3>
    #include <Constants.au3>

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

    Opt('MustDeclareVars', 1)
    $Debug_Ed = False
    Local $msg, $x, $strComputer, $objWMIService, $colComputers, $colItems, $iLen, $iHoriz = 0, $iVert = 100
    Global $gui1 = GUICreate('Test',500,500,-1,-1)
    Local $button1 = GUICtrlCreateButton('Click',20,20,80,20)
    Local $input = GUICtrlCreateEdit("Starting interface....", 10, 350, 480, 120, BitOR($ES_AUTOVSCROLL , $WS_VSCROLL))
    GUISetState()
    Local $processname = ("ping googel.com")
    While 1 * Sleep(10)
    $msg = GUIGetMsg()
    Select
    Case $msg = $button1
    _StartTeknogodsDLL()
    EndSelect
    WEnd
    Func _StartTeknogodsDLL()
    ;If FileExists($processname) Then; warum fragst du nach einer datei ?????????
    If ProcessExists($processname) Then; der process kann noch garnicht ausgeführt werden abfrage unnötig
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process was already running:" & $processname & " It will be closed and restarted!")
    ProcessClose ($processname)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process closed! Will be restarted soon...")
    Local $hPID = Run( $processname, "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
    Else
    Local $oldData = ""
    Local $hPID = Run( $processname, "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
    ProcessWaitClose($hPID)
    Do
    Local $readData = StdoutRead($hPID)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    ExitLoop
    Until 0
    EndIf
    ; Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "File not found:" & $processname & " It musst be placed in the same directory as this tool!")
    ;EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]


    Lg Kleiner

  • also nach der datei hab ich gefragt, weil die DLLLoad.exe normalerweise in dem verzeichnis liegen muss.
    natürlich hab ich die ping.exe anstelle dessen solange ins selbe verzeichnis kopiert. (wobei das natürlich für
    das beispiel uninteressant ist)
    jetzt der hammer: dein beispielt geht, wenn ich allerdings die komplette funktion in mein original source
    einfüge, dann gehts immernoch nicht !? - au man ... der bock muss irgendwo anders sitzen ....
    bestimmt eine variable die global ist oder so ... keine ahnung ... so ein mist aber auch :(

  • Also du soltest mehr die hilfe lesen und drauf achten welche hilfe stellungen man dir gibt und das dazugehörige thema durchlesen egal was ich dir für beispiele liefer egal ob ich dir den code fertig prsentiere du hast immer irgendwo fehler obwohl alle laufen die ich dir gezeigt habe folglich willst du nur das einer dir den code vertig schreib denn ich habe keine einziege frage zu irgent welchen befehlen bekommen nur ein code schnipsel habe fehler kannst du bitte ich hätte meine hilfe schon einstellen sollen woh ich es gesagt habe!

    Das ist noch mal eine hilfe mit erklärung und wennn du immer noch nicht schafst dir das alles zu erklären dan tut es mir leid!

    Spoiler anzeigen
    [autoit]

    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <GuiListView.au3>
    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <EditConstants.au3>
    #include <Constants.au3>

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

    Opt('MustDeclareVars', 1)
    Global $msg, $x, $strComputer, $objWMIService, $colComputers, $colItems, $iLen, $iHoriz = 0, $iVert = 100
    ;#########################################################################################################################################
    Global $Ping = @ScriptDir & '\Ping.exe';Pfad und dateiname nach welcher datei gesucht werden soll scriptdir bedeutet im selben verzeichnis
    ;#########################################################################################################################################
    ;+##################################################################################################################################################################
    Global $processname = 'ping googel.com' ;wohin er pingen soll wir verwenden googel.com das, das ganze von system ausgeführt werden kann prauch er auch den befehl
    ; dazu im unseren falle ping googel.com ohne ping bekommt der interpreter nur googel.com und damit kann er nichts anfangen nichtdefeniert also error nichtstun!
    ;###################################################################################################################################################################

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

    Global $gui1 = GUICreate('Test',500,500,-1,-1)
    Local $button1 = GUICtrlCreateButton('Click',20,20,80,20)
    Local $input = GUICtrlCreateEdit("Starting interface....", 10, 350, 480, 120, BitOR($ES_AUTOVSCROLL , $WS_VSCROLL))
    GUISetState()

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

    While 1 * Sleep(10)
    $msg = GUIGetMsg()
    Select
    Case $msg = $button1
    _StartTeknogodsDLL()
    EndSelect
    WEnd
    Func _StartTeknogodsDLL()
    If FileExists($Ping) Then
    If ProcessExists($Ping) Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process was already running:" & $Ping & " It will be closed and restarted!")
    ProcessClose ($Ping)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process closed! Will be restarted soon...")
    Local $hPID = Run( $processname, "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $Ping)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
    Else
    Local $oldData = ""
    Local $hPID = Run($processname, "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $Ping)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
    ProcessWaitClose($hPID)
    Do
    Local $readData = StdoutRead($hPID)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    ExitLoop
    Until 0
    EndIf
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "File not found:" & $processname & " It musst be placed in the same directory as this tool!")
    EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]

    [closet]

  • "schön" das dein beispiel "as it is" bei mir nicht funktioniert und somit quasi das gleiche problem aufweist wie mein tool.
    ich will keine fertige lösung, aber nach 3 tagen ergebnislosigkeit an dem problem ist man irgenwie auch gewillt das ziel mal zu erreichen.
    natürlich nutze ich die hilfefunktion, sonst hätte ich wohl kaum das programm so weit bekommen.
    deine erklärung in ehren, mir wird aber nicht im geringsten klar, was das mit meinem problem zu tun hat.
    in dem taskmanager sehe ich ja, dass ping gestartet wurde... das war nie das problem! selbst wenn ping ohne ziel gestartet wird,
    wirft es etwas aus, was ja in meinem $input hätte angezeigt werden müssen ... da kommt aber wie immer nix!

    na ja, ich will hier nicht länger nerven und den thread ständig pushen.... von daher: egal

  • Ich habe keine ahnung was du noch willst denn alle gelieferten skripte funktionieren!
    Bei meinen mußt du kurz warten bis eine ausgabe erfolgt bei dein ersten code sowie nuts code wirde jede zeile einzelnt und damit sofort ausgegeben ! die probleme die du uns stellst wurden jedes mal glöst nur einbauen tust du sie falsch also ligt es nicht an uns, Die letzte frage das du keine ausgabe bekommst kommt glaube ich 4 mal vor und vier mal habe ich dir eine lösung gegeben wenn du genaue erklärungen zu befehle haben willst mußt du sie stellen!
    Es ist doch so du erstellst eine funktion selber also weißt du was passiert kommst nicht weiter stellst deine frage hir wir geben dir eine lösung und du brauchst nichts anderes zu tun und schauen was wir verendert gaben und suchst in der hilfe nach den sachen um dir das verständlich zu machen oder bekommst eine erklärung mit darum kann ich nicht verstehen wo du noch probleme hast wo wir das schon oder ich dir ein paar beispiele gegeben habe??

  • ich hab mal aufgezeichnet wie bei mir die beispiele funktionieren. (kurzes videocapture online ansehbar(stream))
    EDIT: den link braucht jetzt ja keiner mehr :P

    LG WhiteLion

    PS mag sein, dass ich nur total auf dem schlauch stehe, aber vermutlich kotzt dich das thema bzw problem auch nach
    so langer probiererei an....

    nuts ... ich teste dein script gleich mal intensiver, sorry dass ich da bisher so drüberweg gegangen bin, ich dachte
    es ist vorerst besser bei den von mir gewählten lösungsweg zu bleiben ...

    EDIT: nuts auch dein script funktioniert bei mir nicht... ich habe mal das @SW_HIDE entfernt um das original dosfenster
    zu sehen ... da findet keine ausgabe statt ... kein wunder also das es nicht geht... kann es evtl sein, dass es mit
    windows 7 etwas zu tun hat ?!?

    2 Mal editiert, zuletzt von WhiteLion (8. November 2009 um 14:47)

  • Guten Morgen WhiteLion !


    Da hätte ich schon mal früher drauf kommen können zu fragen welches os du hast!
    1. frage welche version von autoit benutzt du?
    wenn du 3.3.0.0 benutzt lade dir die beta runter soweit ich hir im forum lesen konnte kann man mit hir auf win7 soweit alles machen!
    Dann müßen wir von vorne anfangen oder ein user der win7 benutz liest dein post und kann uns erfahrungswerte oder tips gehben!( ich kenne win7 nicht nur das ich auf XP das Theme benutz :D )


    LG Kleiner

  • na wenigstens war ich nicht zu blöd... :rock:
    leider funktionieren die scripte mit der beta 3.3.15 genauso viel/wenig wie die 3.3.0.0... habs gerade getestet :thumbdown:
    wen muss ich in den hintern treten, damit das ganze funktioniert? :D :whistling:

  • Ein Probieren wir noch und dann sag ich dir was besser wehr dein problem zu lösen!


    Geb das mal dereckt hinter hinter Run(

    [autoit]

    @ComSpec & ' /c ' &

    [/autoit]


    )ein

    Edit: ansonsten mache ein neuen post mit der frage das du bei windows7 die cmd ausgabe nicht abfangen kannst! den der post ist schon sehr unverständlich geworden und ich denke das keiner so richtig lust hat das alles durchzulesen!

    LG Kleiner

  • problem gelöst!
    ursache: das kopieren von der ping.exe ins auszuführende verzeichnis

    was für ein shit: wie du dich ja erinnern kannst, habe ich den pfad ins
    systemverzeichnis von windows nie mit angegeben und ping.exe ins
    scriptverzeichnis kopiert. führt man nun über die cmd/konsole in
    genau dem verzeichnis ping aus (egal ob mit oder ohne parameter)
    öffnet sich ein dosfenster aber ohne rückmeldung... also quasi ein leeres.
    ist ja witzig... :rofl: und der krams hat mich so lange beschäftigt.
    schade nur dass die ausgabe nicht mit meinem loader harmoniert, was wohl
    daran liegt, dass es kein echtes dosfenster ist :(
    aber dabei wolltest du mir ja nicht helfen :P (ich glaube das es auch gar nicht möglich ist das umzulenken)

    Einmal editiert, zuletzt von WhiteLion (8. November 2009 um 14:57)