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

Beiträge von vivus

  • Fehler : FileInstall

    • vivus
    • 26. Oktober 2009 um 13:35

    SORRY ! grad als in diesen Eintrag geschrieben hatte ist mir mein Fehler aufgefallen ..

    hab den Destination Eintrag nicht richtig ausgefüllt ..

    Spoiler anzeigen

    FileInstall("test.txt",@ScriptDir&"\")

    SORRY !!

  • Fehler : FileInstall

    • vivus
    • 26. Oktober 2009 um 13:23

    Hi @ all

    Hab da n kleines Problem.

    Starte mit einem Script ein anderes Script, welches eigentlich komplett eigenständig ist, und auch sehr gut funktioniert.

    In diesem zweiten Script ist der befehl FileInstall , um eine *.dll anzuhängen.

    Jetzt passiert aber folgendes :
    wenn ich mit dem ersten Skript das zweite aufrufe also starte,
    installiert das zweite skript die dll in den ordner des ersten Skript'S ..

    schwer zu erklären .. aber leich zu simulieren.

    benutzt das

    Spoiler anzeigen

    HotKeySet("{ESC}", "Terminate")


    $exe = "unterordner\SUB.EXE"

    Run($exe, "")

    while 1

    ToolTip(@ScriptDir,0,0)

    Sleep(5)

    WEnd


    Func Terminate()
    Exit 0
    EndFunc

    als Skript 1, welches skript 2 starten soll ..

    und das hier

    Spoiler anzeigen

    FileInstall("test.txt","")

    ;FileWrite(@ScriptDir&"\test.txt",@ScriptDir)


    while 1

    ToolTip(@ScriptDir)

    Sleep(5)

    WEnd

    als skript 2 .. welches gestartet wird ..
    als dll dummi einfach eine txt datei erstellen mit dem namen test.txt versehen.

    ...

    so jetzt zu meiner Frage .. wie kann ich diesen " bug" umgehen ?

    wie schaffe ich es, dass die dll .. in diesem fall die Txt in den richtigen pfad abgelegt wird?

    weil Makros wie @scriptdir, ja nicht verwendet werden können ..

    DANKE !

  • 2 Funktionen gleichzeitig - Programm hängt sich auf

    • vivus
    • 21. Oktober 2009 um 13:31

    Hi ..

    Ich misch mich hier mal ein ..

    also ein "Parallelen" Ablauf in einem Programm gibt es nicht.
    EINZIGE Ausnahme wäre, wenn du einen (mindestens) dual-Core Rechner besitzt und den OHNE Betriebsystem direkt sagst, welche Aufgabe, welcher Core, zu tun hat.

    ( aber mit AutoIT sicher nicht lösbahr )

    alles andere nennt sich Multhi-Threading .. oder so ..

    d.h. ein scheinbar paraleller ablauf. wird so erzeugt, dass die aufgaben in kleine "mini" aufgaben zerhackt werden.

    aber auch das, ist mit AutoIt nicht hin zu bekommen, sogar GUTE C Programmierer, werden sich hierbei fast ein Bein ausreisen müssen.
    Hab mal ein C- code gesehen, der mehrere Funktionen "zeitgleich" in Echtzeit verarbeitet .. WAHNSINN .. alles voll mit Timern, die andere Timer starten .. und hin und her ..

    .. schweife ab ..

    noch mal zu der Adlib funktion ... macht nix anderes, wie dein " skript" pausieren, .. in der pause, die funktion abarbeiten.

    Meine bisherigen Erfahrungen : bei zuvielen Variablen in einem Skript, so war es zumindest bei mir der fall, werden machne verändert. ( unauffindbahrer Grund )

    ausschlaggebend bei mir, habe in der Funktion die durch die adlib aufgerufen wird, eine Funktion verwendet, welche auch sonnst im Programm verwendet wurde.

    hab halt einfach nicht so funktioniert, wie es sollte..

    ich würde die finger davon lassen ....

    obwohl es sehr reizvoll wäre .. ;)

    bye

  • Lichtschalterkontrolle über PC

    • vivus
    • 20. Oktober 2009 um 13:45

    also meine kleine *.au3 für folgende dll..

    http://www.vellemanusa.com/downloads/file…ll_rev3_0_2.zip

    direkte downloadseite des Herstellers. ( velleman ... dll V 3.02 )

    und hier meine include ..

    Spoiler anzeigen

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.0.0
    Author: vivus

    Script Function:
    handles the k8055d.dll 2009.10.19

    NOTE RENAME the k8055d.dll in k8055D_multi.dll

    #ce ----------------------------------------------------------------------------


    Func USB_DLLOpen()
    DllOpen(@ScriptDir & "\" & "k8055D_multi.dll") ; öffnen der DLL
    EndFunc ;==>USB_DLLOpen

    ;----------------------------------------------------------------------------

    Func USB_DLLClose()
    DllClose(@ScriptDir & "\" & "k8055D_multi.dll") ; öffnen der DLL

    EndFunc ;==>USB_DLLClose

    ;----------------------------------------------------------------------------

    Func initial_board($address)

    Local $begin, $result, $dif

    $begin = TimerInit()
    Do
    $result = USBOpenDevice($address)
    Sleep(250)

    $dif = TimerDiff($begin)

    If $dif > "4000" Then ExitLoop

    Until $result = 1

    ClearAllDigital($address)

    Sleep(250)

    SetDigitalChannel($address, "8")

    If $result = 1 Then
    Return "1"

    Else
    MsgBox(0, "ERROR", "fehler bei initialisierung des USB board's " & $address)
    MsgBox(0, "ERROR", "Programm wird beendet! mit " & $result)
    Exit
    Return "0"

    EndIf


    EndFunc ;==>initial_board


    ;----------------------------------------------------------------------------

    Func USBOpenDevice($address)

    Local $result

    $result = DllCall("k8055D_multi.dll", "long", "OpenDevice", "long", $address)


    If $result[0] = $address Then
    Return "1"

    Else
    ;exit
    Return "0"
    EndIf

    EndFunc ;==>USBOpenDevice

    ;---------------------------------------------------------------------------

    Func CloseAllDevice()

    Local $result
    $result = DllCall("k8055D_multi.dll", "none", "CloseDevice")
    USB_DLLClose()

    EndFunc ;==>CloseAllDevice

    ;---------------------------------------------------------------------------

    Func SearchDevices()

    Local $result
    $result = DllCall("k8055D_multi.dll", "long", "SearchDevices")

    Return $result[0]

    EndFunc ;==>SearchDevices

    ;---------------------------------------------------------------------------

    Func USBCloseDevice($address)
    Local $result

    SetCurrentDevice($address)
    $result = DllCall("k8055D_multi.dll", "none", "CloseDevice")
    ;Return ;;$result[0]
    EndFunc ;==>USBCloseDevice

    ;---------------------------------------------------------------------------

    Func ClearAllDigital($address)

    Local $result
    SetCurrentDevice($address)
    $result = DllCall("k8055D_multi.dll", "int", "ClearAllDigital")
    EndFunc ;==>ClearAllDigital

    ;----------------------------------------------------------------------------

    Func SetCurrentDevice($address)
    Local $result, $begin, $dif

    $begin = TimerInit()
    Do

    $result = DllCall("k8055D_multi.dll", "long", "SetCurrentDevice", "int", $address)

    ;ToolTip($address&"="&$result[0],0,0)
    $dif = TimerDiff($begin)

    If $dif > "4000" Then ExitLoop

    Until $address = $result[0]

    ;ToolTip("",0,0)

    If $address = $result[0] Then
    ;nix
    Else
    MsgBox(0, "", "adresse = " & $address & " result = " & $result[0])

    EndIf

    EndFunc ;==>SetCurrentDevice


    ;----------------------------------------------------------------------------

    Func SetDigitalChannel($address, $channel)
    SetCurrentDevice($address)
    DllCall("k8055D_multi.dll", "none", "SetDigitalChannel", "int", $channel)
    EndFunc ;==>SetDigitalChannel

    ;---------------------------------------------------------------------------

    Func ClearDigitalChannel($address, $channel)
    SetCurrentDevice($address)
    DllCall("k8055D_multi.dll", "none", "ClearDigitalChannel", "int", $channel)
    EndFunc ;==>ClearDigitalChannel

    ;---------------------------------------------------------------------------

    Func ReadAnalogChannel($address, $channel)
    Local $result

    SetCurrentDevice($address)
    $result = DllCall("k8055D_multi.dll", "int", "ReadAnalogChannel", "int", $channel)
    Return $result[0]
    EndFunc ;==>ReadAnalogChannel

    ;---------------------------------------------------------------------------

    Func ReadAllDigital($address)
    Local $result, $alldigit

    SetCurrentDevice($address)
    $alldigit = DllCall("k8055D_multi.dll", "int", "ReadAllDigital")
    Return $alldigit[0]
    EndFunc ;==>ReadAllDigital
    ;---------------------------------------------------------------------------


    Func ReadDigitalChannel($address, $sellect)

    Local $wert
    Local $channel[6]
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0


    $wert = ReadAllDigital($address)

    ;MsgBox(0,"",$alldigit[0] & " " & $wert)
    Select

    Case $wert = 0
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    Case $wert = 1
    ;I1
    $channel[1] = 1

    Case $wert = 2
    ;I2
    $channel[2] = 1

    Case $wert = 3
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1

    Case $wert = 4
    ;I3
    $channel[3] = 1

    Case $wert = 5
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1

    Case $wert = 6
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1

    Case $wert = 7
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1

    Case $wert = 8
    ;I4
    $channel[4] = 1

    Case $wert = 9
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1

    Case $wert = 10
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1

    Case $wert = 11
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1

    Case $wert = 12
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 13
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 14
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 15
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 16
    ;I5
    $channel[5] = 1

    Case $wert = 17
    ;I1
    $channel[1] = 1
    $channel[5] = 1

    Case $wert = 18
    ;I2
    $channel[2] = 1
    $channel[5] = 1

    Case $wert = 19
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1
    $channel[5] = 1

    Case $wert = 20
    ;I3
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 21
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 22
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 23
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 24
    ;I4
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 25
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 26
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 27
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 28
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 29
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 30
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 31
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case Else

    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    EndSelect

    If $channel[$sellect] = 1 Then
    ; MsgBox(0,"","return 1")
    Return 1
    Else
    ; MsgBox(0,"","return 0")
    Return 0

    EndIf

    EndFunc ;==>ReadDigitalChannel
    ;----------------------------------------------------------------------------


    wichtig .. die original dll MUSS umbenannt werden .. weil's anderst nicht funktioniert ..
    aber fragt mich bitte nicht warum ..

    VIEL spaß !!

  • Lichtschalterkontrolle über PC

    • vivus
    • 15. Oktober 2009 um 17:50

    HI "wolkenloser"

    zu deiner Frage:

    also die USB-Board'S sind klasse ..

    gibt nur ein Problem, musste mir, da ich 2 Board's gleichzeitig ansprechen will ( brauch mehr ein aus ausgänge)
    n kleines work arround basteln, ....

    wenn du dich mal näher befasst, verstehst du sicher das problem... man kann mit der einen DLL NUR ein board ansprechen.
    ( obwohl man's ja jumpern kann ) "adresse 0-3"

    ... so wenn man jetzt aber gleichzeitig .. auf die dll zugreifen will.... um z.b. 2 Ausgänge verschiedener board's gleichzeitig anzusprechen.... TERROR !!

    na egal .. schicksal ...

    also als singel Lösung .. absolut GEIL !!

    .. mit meinem workarround klappt's auch schon recht gut mit 2 .. aber irgend wie .. macht windows da glaub ich nicht mit...

    kenn mich leider zu wenig mit dll's aus.. als dass ich mir da selber was basteln könnte..

    bräuchte da profesionellere hilfe..

    wenn du fragen hast , kannst mich auch gerne direkt anschreiben ..

    BYE

  • log-file auswerten

    • vivus
    • 21. September 2009 um 17:46

    alles klar .. muss ich mich noch mal einlesen .. ;)

    echt super dein code !! DANKE !

  • log-file auswerten

    • vivus
    • 21. September 2009 um 12:30

    BugFix !! alle ACHTUNG !!

    Zeit: 233.57348757058

    klasse !! so funktioniert's !!

    könntest du mir aber bitte

    ==> $ret = StringRegExp(FileRead($file), '(?:EAN-Code: )(\d+)', 3) <== erklären ?

    den Teil :: (?:EAN-Code: )(\d+) ???? da hört's bei mir auf ..

    vielen vielen dank !!

    wie kommt man denn da dauf ?! kennst wohl jede Funktion auswendig .. ;)

    SUPER !!

  • log-file auswerten

    • vivus
    • 21. September 2009 um 11:00

    Hallo AutoBert

    Mit deiner angepassten Version von Bugfix komme ich auf 829 ms.

    Wäre absolut top.

    Aber es ist ja nicht immer die 6.- letzte Zeile..

    Das Programm, welches das Log-file generiert, schreibt kontinuirlich in das File.

    deshalb auch der knappe zeit Rahmen von unter 5 sec, weil eine neue Messung um die 6 sec liegt.

    und bei einem bestimmten EAN-Code eine Meldung erscheinen soll.

    ich denke, dass dann der enorme Zeitverlust, an "meinem" suchverfahren liegt.

    dann werde ich jetzt mal versuchen , das zu umgehen.. . irgendwie

    ..warum mein Rechner soo viel langsamer ist wie deiner.. kann ich dir leider nicht sagen ..

    danke noch mal ...

  • log-file auswerten

    • vivus
    • 21. September 2009 um 10:30

    Hallo BusFix

    deine Version

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

    #include <Array.au3>
    #include <File.au3>

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

    $file = "log.log"

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

    $lines = _FileCountLines($file)

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

    ;MsgBox(0,"lines",$lines)

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

    ;MsgBox(0, 'Inhalt letzte Zeile', FileReadLine($file, $lines))

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

    ;$file = FileOpen($file, 0)

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

    Dim $avArray[1]

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

    $lines=$lines-20

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

    While 1

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

    $line = FileReadLine($file,$lines)
    If @error = -1 Then ExitLoop

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

    $result =StringInStr($line,"EAN-Code:")
    If $result = 1 Then
    $ean = StringTrimLeft ( $line, 10 )

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

    _ArrayAdd( $avArray,$ean)

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

    EndIf

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

    $lines=$lines+1

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

    WEnd

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

    FileClose($file)

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

    ;_ArrayDisplay( $avArray, "Updated Array" )

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

    $last=UBound($avArray)

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

    $last = $avArray[$last-1]

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

    MsgBox(0,"letzter Eintrag","der letzte eintrag war "&$last)

    [/autoit]

    bringt beachtliche 38 SEC !!!

    ist ja schon "fast" GUT ! ;)

    32 SEC sollten noch weg .. noch ein Vorschlag ?

    Vielen Vielen DANK ! !

  • log-file auswerten

    • vivus
    • 21. September 2009 um 10:17

    Hallo AutoBert

    habe deine Version gerade getestet.

    gestoppte 2:36 Minuten .. bei 10253 Einträgen

    .. im Gegensatz zu 2:02 Minuten mit meiner Version..

    alternative ? muss unter 5 sec kommen ..

    aber trotzdem Danke !!

  • log-file auswerten

    • vivus
    • 21. September 2009 um 09:05

    Hi@ all

    Hab da mal ne Frage:

    Habe mir ein Skript gebastelt, welches mir den LETZTEN Wert in einer Zeile in einem Log-File ausgibt.

    Spoiler anzeigen

    #include <Array.au3>


    $file = "log.log"

    $file = FileOpen($file, 0)


    Dim $avArray[1]

    While 1

    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop

    $result =StringInStr($line,"EAN-Code:")
    If $result = 1 Then
    $ean = StringTrimLeft ( $line, 10 )

    _ArrayAdd( $avArray,$ean)

    EndIf


    WEnd

    FileClose($file)

    ;_ArrayDisplay( $avArray, "Updated Array" )

    $last=UBound($avArray)

    $last = $avArray[$last-1]

    MsgBox(0,"letzter Eintrag","der letzte eintrag war "&$last)

    log-FILE :

    Spoiler anzeigen

    ----------------------------------------
    [08-24-2009 - 11:02:03]:
    Version: Ver. 2.04
    EAN-Code: 4022709224101
    Variante: 19
    EEPROM Format: Ver. 09.00
    Quarzabweichung: 7.65[s/d] abgeglichen auf +0.00[s/d]
    Temperatur: 24.09[°C]

    ----------------------------------------

    [08-24-2009 - 11:03:03]:
    Version: Ver. 2.04
    EAN-Code: 4025709224101
    Variante: 20
    EEPROM Format: Ver. 09.00
    Quarzabweichung: 7.65[s/d] abgeglichen auf +0.00[s/d]
    Temperatur: 24.09[°C]

    ----------------------------------------

    ####

    so : Funktioniert super. . . ABER viel zu langsam !!

    die Files haben in der regel 2 MB ( Monatsweise )

    Die Ausgabe dauert rund 40 Sek.

    Hat jemand ne Idee, wie des schneller gehen kann ?

    Irgend wie File von hinten her lesen ?

    oder kurz vor Ende anfangen ? irgend wie sowas ..

    DANKE !

  • ini-Datei-Werte auslesen, die nicht lokal auf dem Rechner liegen?

    • vivus
    • 4. September 2009 um 08:10

    kannst du den pfad, des web servers "fest" anbinden ?

    als zusätzliche festplatte oder so ?

    wie es z.B mit servern funktioniert ?

    weil dann kannst du ganz normal einfach den pfad angeben.

    hab auch ne ini auf m server liegen, funktioniert super .. auch wenn mehrere scripte darauf zu greifen..

    soweit ..

    bye

  • Tastatureingabe und Eingabe von Barcodescanner unterscheiden

    • vivus
    • 4. September 2009 um 07:51

    Hallo,

    Arbeite viel mit Barcode Systemen,

    "normalerweile" gibt es für jeden Scanner ein umrüst Kabel ..

    USB, oder RS232 ..

    dann haste du das Problem auch nicht mehr.

    Die PS2 Variante ist total unbrauchbar ..

    Preisunterschiede gibt's eigentlich auch nicht.

    Würde dir raten mal mit der RS232 Lösung anzufangen. Wenn du für autoit dort hilfe brauchst, kann ich dir gerne skript material zu kommen lassen.
    Ich verwende die Datalogic Touch 65 Serie ( kostet komplett 65 Euro mit USB )

    Wie du deine Probleme beheben kannst, kann ich dir leider auch nicht weiter helfen, aber wenn es einfach wäre, würden es bestimmt von einem Barcodehersteller ähnliche Software geben.
    Gibt es aber nicht.

    Wundert mich sowieso, wie du die F10 vor deinen Barcode setzen kannst.

    soweit ...

    bye

  • ABAS-ERP

    • vivus
    • 3. September 2009 um 16:29

    Hallo ,

    Kennt sich jemand mit ABAS-ERP aus ?

    würde gerne einen USER mit autoIT imitieren. Und somit Daten auslesen.

    Der weg über MySQL ( ABAS => MySQL => autoit => MySQL => ABAS ) soll "anscheinend" funktionieren, weis aber nicht wie ...

    Jemand einen TIP ?

    THX !

    bye

  • Bild in Gui per Knopfdruck ändern

    • vivus
    • 31. August 2009 um 11:29

    was willst denn genau wissen ?!

    ich versteh irgend wie deine frage nicht ...

    wenn du ein login machen willst, und in abhängigkeit dieses login ein bild aufrufen willst ..

    dann must du ja eine "auswahl " treffen ..

    z.B

    [autoit]


    #include <GuiConstantsEx.au3>

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

    $gui_breite = 1024;( @DesktopWidth / 2 ) ; Variable um Gui in der mitte de desktops zu platzieren
    $gui_hoehe = 600;( @DesktopHeight/ 2 ) ; Variable um Gui in der mitte de desktops zu platzieren

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

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode , damit gui protokoll anderst abgearbeitet wird ( mit funktionen , nicht case )

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

    $mainwindow = GUICreate("login .. bla bla " & @ScriptName, $gui_breite, $gui_hoehe, (@DesktopWidth / 2) - ($gui_breite / 2), (@DesktopHeight / 2) - ($gui_hoehe / 2)) ; Gui erstellen mainwindow
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; wenn event $GUI_EVENT_CLOSE aktiviert wird, wird funktion "CLOSEClicked" aufgerufen

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

    $bild1_quelle = (@ScriptDir & "\bilder\bild1.jpg")
    $bild2_quelle = (@ScriptDir & "\bilder\bild2.jpg")
    $bild3_quelle = (@ScriptDir & "\bilder\bild3.jpg")

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

    $bild_offset_breite = 464 ;$gui_breite / 2

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

    $bild_breite = 537;$gui_breite / 2
    $bild_hoehe = 401;$gui_hoehe /2

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

    $bild_offset_hoehe = 176 ;$gui_hoehe /2

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

    $bild1 = GUICtrlCreatePic($bild1_quelle, $bild_offset_breite, $bild_offset_hoehe, $bild_breite, $bild_hoehe)
    ;GUICtrlCreatePic ( filename, left, top [, width [, height [, style [, exStyle]]]] )
    GUICtrlSetState($bild1, $GUI_HIDE)

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

    $bild2 = GUICtrlCreatePic($bild2_quelle, $bild_offset_breite, $bild_offset_hoehe, $bild_breite, $bild_hoehe)
    GUICtrlSetState($bild2, $GUI_HIDE)

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

    $bild3 = GUICtrlCreatePic($bild3_quelle, $bild_offset_breite, $bild_offset_hoehe, $bild_breite, $bild_hoehe)
    GUICtrlSetState($bild3, $GUI_HIDE)

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

    ; hier deine auswahl

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

    $login = InputBox("login","bitte zahl zwischen 1 und 3 eingeben")

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

    If $login = "1" Then
    GUICtrlSetState($bild1, $GUI_show)

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

    ElseIf $login = "2" Then
    GUICtrlSetState($bild2, $GUI_show)

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

    ElseIf $login = "3" Then
    GUICtrlSetState($bild3, $GUI_show)

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

    EndIf

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

    GUISetState(@SW_SHOW) ; starten des gui ! ( ausführung)

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

    While 1

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

    ; und hier dein übriger code

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

    sleep(250)

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

    WEnd

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

    Func CLOSEClicked()

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

    Exit

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

    EndFunc ;==>CLOSEClicked

    [/autoit]

    noch bilder angeben .. dann müste es funktionieren .. .. wenn ich verstanden hab, was du überhaupt willst ..

    bye

  • 2 programme per Memory miteinander kommunizieren lassen

    • vivus
    • 27. August 2009 um 14:45
    [autoit]

    ;; http://www.autoitscript.com/forum/index.ph…41&#entry681941

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

    #Include <GUIConstantsEx.au3>

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

    Opt('WinTitleMatchMode', 3)

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

    global const $TITLE_SENDER = '#Sender'
    global const $TITLE_RECEIVER = '#Reseiver'
    global const $WM_COPYDATA = 0x004A

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

    global $sMsg, $Dummy, $Flag = 0

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    if WinExists($TITLE_RECEIVER) then
    if WinExists($TITLE_SENDER) then
    exit
    endif
    _Sender()
    else
    _Receiver()
    endif

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    func _Sender()

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

    local $Input, $Button, $ID

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

    GUICreate($TITLE_SENDER, 400, 100)
    $Input = GUICtrlCreateinput('', 20, 20, 360, 20)
    $Button = GUICtrlCreateButton('Send', 165, 60, 70, 23)
    $Dummy = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COPYDATA, '_WM_COPYDATA')
    GUISetState()

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

    while 1
    $ID = GUIGetMsg()
    switch $ID
    case 0
    continueloop
    case $GUI_EVENT_CLOSE
    _SendData(WinGetHandle($TITLE_RECEIVER), '@exit')
    exitloop
    case $Button
    $sMsg = GUICtrlRead($Input)
    $hWnd = WinGetHandle($TITLE_RECEIVER)
    if (not @error) and ($sMsg > '') then
    if _SendData($hWnd, $sMsg) then
    GUICtrlSetState($Button, $GUI_DISABLE)
    endif
    endif
    case $Dummy
    GUICtrlSetState($Button, $GUI_ENABLE)
    endswitch
    wend

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

    GUIDelete()
    endfunc

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    func _Receiver()
    GUICreate($TITLE_RECEIVER)
    GUIRegisterMsg($WM_COPYDATA, '_WM_COPYDATA')

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

    while 1
    Sleep(10)
    if $Flag then
    if $sMsg = '@exit' then
    exitloop
    endif
    $Flag = 0
    _DoSomething($sMsg)
    _SendData(WinGetHandle($TITLE_SENDER), '')
    endif
    wend

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

    GUIDelete()
    endfunc; _Receiver

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    func _DoSomething($sData)
    MsgBox(0, 'Message', $sData)
    endfunc; _DoSomething

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    func _SendData($hWnd, $sData)

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

    local $tCOPYDATA, $tMsg

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

    $tMsg = DllStructCreate('char[' & StringLen($sData) + 1 & ']')
    DllStructSetData($tMsg, 1, $sData)
    $tCOPYDATA = DllStructCreate('dword;dword;ptr')
    DllStructSetData($tCOPYDATA, 2, StringLen($sData) + 1)
    DllStructSetData($tCOPYDATA, 3, DllStructGetPtr($tMsg))
    $Ret = DllCall('user32.dll', 'lparam', 'SendMessage', 'hwnd', $hWnd, 'int', $WM_COPYDATA, 'wparam', 0, 'lparam', DllStructGetPtr($tCOPYDATA))
    if (@error) or ($Ret[0] = -1) then
    return 0
    endif
    return 1
    endfunc; _SendData

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    func _WM_COPYDATA($hWnd, $msgID, $wParam, $lParam)

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

    local $tCOPYDATA = DllStructCreate('dword;dword;ptr', $lParam)
    local $tMsg = DllStructCreate('char[' & DllStructGetData($tCOPYDATA, 2) & ']', DllStructGetData($tCOPYDATA, 3))

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

    $sMsg = DllStructGetData($tMsg, 1)

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

    ; For Sender
    GUICtrlSendToDummy($Dummy)

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

    ; For Receiver
    $Flag = 1

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

    return 0
    endfunc; _WM_COPYDATA

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    [/autoit]

    ich find's einfach nur GEIL !!

  • Automatisierung eines Fremd-Programmes über dessen TRAY-Symbol

    • vivus
    • 2. Juli 2009 um 16:36

    schon mal die control... funktionen probiert ?!

    wäre jetzt das einzige .. was mir dazu einfällt ..

    was isch n des für n programm ?!

  • Pixel zahl aufgrund mauswegeung übernehmen

    • vivus
    • 2. Juli 2009 um 16:32

    du kannst die koordinaten durch einen beliebigen wert teilen .. oder multiplizieren .. und könntest somit deine "eigene" auflösung bekommen ..

    z.B.
    desktop 1680 * 1050

    gui aber nur 800*600

    gewünschte auflösung 100 teiler auf 800

    800/100 = 8 pixel pro teiler ..

    dein gui passt 2,1 mal in dein desctop ..

    also würde ich jetzt mal sagen ..

    $X_pos = ($mauswert_breit/2.1)/8

    .. oder verstehe ich dich jetzt falsch ?!

  • Pixel zahl aufgrund mauswegeung übernehmen

    • vivus
    • 2. Juli 2009 um 12:51

    die koordinaten der maus kannst du auslesen ..

    die plazierung des gui auch ...

    die größe des gui auch ..

    und die größe des bildes .. ist ja klar ..

    der rest ist ne große rechenaufgabe ..

    viel spaß

  • Vereinfachen von wiederkehrenden Abläufen

    • vivus
    • 2. Juli 2009 um 12:48

    schleifen ..

    ..

    do while ..

    while ..

    for ...


    ich würde for nehmen ..

    da du ja ne gewissen anzahl schon hast .. und keine bedingung ..

    functionen würde ich nicht nehmen ..

    .. klar kannst du das was gemacht werden soll in eine func schreiben .. aber dann must du diese trotzdem X* aufrufen ...

    lesbahrer ist es allemal ..

    bye

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™