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

Beiträge von Schnitzel

  • Hotkey variabel machen

    • Schnitzel
    • 6. Juli 2011 um 18:01

    Falls ich eine UDF vorschlagen dürfte^^
    http://www.autoitscript.com/forum/topic/96…sctls-hotkey32/

  • ini Inhalt in ListView anzeigen lassen

    • Schnitzel
    • 6. Juli 2011 um 16:51

    Du hast also eher ein Problem mit Arrays?^^
    mit inireadsection bekommst du ein array. Wieviele inhalte das array hat steht im $array[0][0] oder du bekommst es mit ubound() herraus
    dann lässt du das array mit einer for schleife durchlaufen und erstellst für jeden index ein listviewitem

    Bin leider grad unterwegs aber nachher könnt ich ein beispiel posten wenns sonst noch niemand getan hat

    Edit: blödes funkloch ^^

  • ini Inhalt in ListView anzeigen lassen

    • Schnitzel
    • 6. Juli 2011 um 16:34

    Dann am besten eine ganze Section auslesen (mit IniReadSection)
    Und für jedes Element im Array ein Control anlegen (Guictrlcreatelistviewitem)

  • Probleme mit einem Button

    • Schnitzel
    • 6. Juli 2011 um 16:17

    Kein Problem ;)

    Dann Debuggen wir mal bisschen^^
    Ist der Fenstertitel wirklich richtig so? Zum Beispiel das doppelte Leerzeichen da drin: "2011.2.0 \[CREW"
    Am besten nochmal mit dem WindowInfo Tool ermitteln und kopieren
    (und natürlich vor jeder eckigen Klammer wieder den Backslash einfügen)

    Was gibt dir das folgende aus?

    [autoit]

    $sWe = WinExists("\[AUTO\] SkyCrew 2011.2.0 \[CREW DUTY on skbe-sql01\]")
    MsgBox(0,"", $sWe)
    $sCc = ControlClick("\[AUTO\] SkyCrew 2011.2.0 \[CREW DUTY on skbe-sql01\]","","[CLASS:Button;INSTANCE:63]")
    MsgBox(0,"", $sCc)

    [/autoit]
  • Probleme mit einem Button

    • Schnitzel
    • 6. Juli 2011 um 15:55

    Ach klar, die eckigen Klammern im Fenstertitel machen Probleme^^
    Probiers mal so:

    [autoit]

    WinWait("\[AUTO\] SkyCrew 2011.2.0 \[CREW DUTY on skbe-sql01\]")
    ControlClick("\[AUTO\] SkyCrew 2011.2.0 \[CREW DUTY on skbe-sql01\]","","[CLASS:Button;INSTANCE:63]")

    [/autoit]
  • Probleme mit einem Button

    • Schnitzel
    • 6. Juli 2011 um 15:29

    Dir fehlt die schließende eckige Klammer
    Außerdem steht left an der Falschen stelle, da Left aber sowieso Standard ist kannst dus auch weglassen.
    Genauso wie den Text des Buttons. Durch Class und Instance ist er ja bereits eindeutig beschrieben
    Probiers mal so:

    [autoit]

    ControlClick("[AUTO] SkyCrew 2011.2.0 [CREW DUTY on skbe-sql01]","","[CLASS:Button;INSTANCE:63]")

    [/autoit]

    Edit: was ich vergessen hatte^^
    Im Normalfall muss ein Fenster nicht aktiv sein um einen Controlclick ausführen zu können. Deshalb würde ich das Winwaitactive lieber durch Winwait ersetzten. Dann ist dein Script nicht so fehleranfällig ;)

  • bilschirmzustand abfragen(farbe)

    • Schnitzel
    • 6. Juli 2011 um 13:45

    Ich seh zwar nur den Link weil die Seite bei uns in der Arbeit gesperrt ist aber:
    Nö ich bin nicht bei AutoitBot ;)

    Edit: ups ich war nicht gemeint :D

  • Bild in Hintergrund/Vordergrund

    • Schnitzel
    • 6. Juli 2011 um 13:38

    Ahh jetz check ich erst richtig wie das alles läuft. Im Drüberschauen geht das einfach nicht so gut, deswegen isses gerade bei etwas größeren Scripten gut diese lauffähig zu posten ;)

    Also Problem ist das beim GSladen der Grundriss immer im Vordergrund ist, sehe ich das richtig?
    Wenn ja wäre die Lösung wie bereits gesagt das Control erst zu erstellen und dann das Bild zu setzen (nachdem alle anderen Bilder erstellt wurden)
    also in Zeile 102 einfach so:

    [autoit]

    $grundriss = GUICtrlCreatePic("", 20, 25, 0, 0)

    [/autoit]


    Und dann am ende des Cases (also Beispielsweise zwischen For Schleife und FileDelete Zeile 133) das einfügen:

    [autoit]

    GUICtrlSetImage($grundriss, @ScriptDir & "\Grundrisse\" & $GSauswahl & ".jpg")

    [/autoit]


    Dann denke ich wird es so erstellt wie du willst.

    2 Probleme die ich auch noch sehe ist dass:
    1. Beim verschieben eines Objektes im Hintergrund die Bilder die darüberliegen mitverschoben werden ( also die Überlagerungen)
    Auch das dürfte sich lösen lassen indem du einfach das bild nochmal mit SetImage setzt
    2. Sich auch andere Controls verschieben lassen, ist zwar lustig aber wohl kaum gewünscht^^

    GSladen kann man ja nicht öfters aufrufen weil du beim ersten Aufruf disables, das hatte ich überlesen
    Also: Ich nehme alles zurück was ich vorhin sagte: Es ist schön sauber ^^
    Nur halt nicht unbedingt gleich verständlich wenn man nur Quellcode und wenig Zeit hat, aber da kannst du nix dafür ;)

    Ich hoffe jetz konnt ich dir vernünftiger weiterhelfen als vorhin

  • bilschirmzustand abfragen(farbe)

    • Schnitzel
    • 6. Juli 2011 um 13:02

    Nur sehe ich nicht wirklich wo dein Problem liegt^^
    Anhand des geposteten Script erkenne ich es zumindest nicht

    Edit: Juhu ich bin nicht allein^^

  • Bild in Hintergrund/Vordergrund

    • Schnitzel
    • 6. Juli 2011 um 11:40

    Naja Problem finde ich halt, dass "unendlich" Controls erstellt werden.
    Drückt ein User 10 mal auf den Button haste da schon mehrere hundert Controls.
    Das ist es was ich unsauber finde und ich denke die meisten werden mir da zustimmen.

    Natürlich kannst du deine vorgeschlagene Mischung verwenden. Ich würde das so machen:
    Einmal das $grundriss Control, das würde ich am Anfang erstellen (und falls nicht benötigt vorrübergehend ausblenden)
    Und einmal ein Array mit den "dynamischen" Controls wie dus ja eh schon hast.
    ABER: dann auch immer die veralteten Controls mit Guictrldelete löschen.

    Wenn du mir Bilder und aktuellen Quellcode postest überarbeit ichs vllt kurz so wie ich mein
    (Natürlich nur als Alternativvorschlag, in erster Linie muss ein Script natürlich funktionieren^^ )

  • Bild in Hintergrund/Vordergrund

    • Schnitzel
    • 6. Juli 2011 um 10:49

    Problem in diesem Fall ist dein unsauberer Programmierstil.
    Jedes mal wenn auf den GSladen Button gedrückt wird erstellst du einige neue Controls.
    Erstell die Controls die du benötigst am anfang und setz die Bilder dann mit Guictrlsetdata.
    Dann kannst du sie auch am besten in der richtigen Reihenfolge erstellen, was in deinem Fall ja wichtig ist da manche Bilder im Vordergrund und einige im Hintergrund sein sollen.

  • Inhalt eines Array mit Unterschiedlichen Trennzeichen ausgeben

    • Schnitzel
    • 6. Juli 2011 um 08:29

    Dazu kannst du ne einfache Kombination aus _ArrayToString und Stringreplace verwenden

    Beispiel
    [autoit]

    #include <Array.au3>

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

    Dim $aArray1[2] = ["Sonne", "Mond"]
    $sString1 = _ArrayToString($aArray1, ", ")
    $sString1_formatiert = StringReplace($sString1, ", ", " und ", -1)
    ConsoleWrite($sString1_formatiert & @CRLF)

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

    Dim $aArray2[3] = ["Sonne", "Mond", "Sterne"]
    $sString2 = _ArrayToString($aArray2, ", ")
    $sString2_formatiert = StringReplace($sString2, ", ", " und ", -1)
    ConsoleWrite($sString2_formatiert & @CRLF)

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

    Dim $aArray3[6] = ["Sonne", "Mond", "Sterne", "Gasnebel", "Staubwolken", "Galaxien"]
    $sString3 = _ArrayToString($aArray3, ", ")
    $sString3_formatiert = StringReplace($sString3, ", ", " und ", -1)
    ConsoleWrite($sString3_formatiert & @CRLF)

    [/autoit]
  • bilschirmzustand abfragen(farbe)

    • Schnitzel
    • 6. Juli 2011 um 07:42

    Bots werden hier nicht unterstützt Siehe Forenregeln
    Und PixelSearch wird nunmal fast aussschließlich für Bots verwendet :thumbdown:

  • Hintergrund Bild für´s Label (Die Grund Form)

    • Schnitzel
    • 5. Juli 2011 um 16:34

    Bitte bei Problemen die erledigt sind den Thread auch auf gelöst setzen
    Einfach den ersten Post bearbeiten, Präfix gelöst wählen und Absenden ;)

  • Hintergrund Bild für´s Label (Die Grund Form)

    • Schnitzel
    • 5. Juli 2011 um 14:33

    Wie auch in der Hilfe steht musst du das Bild auf $GUI_DISABLE setzen und die Listview auf $GUI_ONTOP
    Hilfe lesen :P

    Und das

    [autoit]

    EndSwitch
    For $i = 0 To UBound($aLV) - 1
    If $nMsg = $aLV[$i] Then
    $iCurNum = $i
    _Anzeige($aDaten[$i][0])
    EndIf
    Next

    [/autoit]

    würde ich durch das

    [autoit]

    Case $aLV[0] To $aLV[Ubound($aLV)-1]
    _Anzeige(GUICtrlRead($nMsg))
    EndSwitch

    [/autoit]


    ersetzen ;)

  • COM Port Auslesen

    • Schnitzel
    • 5. Juli 2011 um 13:50

    Für die COM-Kommunikation gibt es einige .dll's und auch UDF's
    Beispiel hier: http://www.autoitscript.com/forum/topic/80…g-kernel32-dll/

    Falls du mit der nicht zurecht kommst einfach mal googln ;)

  • WinSetState Problem

    • Schnitzel
    • 5. Juli 2011 um 12:11

    Das Proble in deinem Script ist dass du zweimal abfrägst ob das Fenster maximiert ist
    Wenn es nun am Anfang maximiert ist wird es wiederhergestellt. Dann frägst du mit der zweiten If nochmal ab ob es maximiert ist, und falls nicht wird es maximiert.
    Du stellst das Fenster quasi wieder her um es gleich anschließend wieder zu maximieren^^

    Die If Abfrage muss in etwa so aussehn:

    [autoit]


    If BitAnd($State, 32) Then
    WinSetState($title,"",@SW_RESTORE)
    Else
    WinSetState($title,"",@SW_MAXIMIZE)
    EndIf

    [/autoit]

    Außerdem denke ich dass die Sleeps überflüssig sind und deine Fenstertitelabfrage auch^^

    Allgmeiner Verbesserungsvorschlag wäre auch HotKeySet statt _IsPressed zu verwenden.
    Is in deinem Fall viel praktischer ;)

  • AutoIt auf dem Terminalserver oder einem Windows 2008 Server nutzen

    • Schnitzel
    • 4. Juli 2011 um 15:43

    Lass das Programm als Service laufen, dann wird es nicht beendet wenn du die Sitzung trennst.

    Einfach die Suche benutzen. Zu dem Thema "als service" gibts schon einige Threads ;)

  • Minimieren eines selbst ausgewählten Fensters

    • Schnitzel
    • 4. Juli 2011 um 13:37

    Wie Jam00 bereits sagte musst du das Control auslesen. (Guictrlread)
    Und natürlich wird standardmäßig der Fenstertitel verwendet.
    Du könntest auch die Class verwenden (in dem Falle wäre es "notepad"), allerdings ist das von Programm zu Programm unterschiedlich.

    In deinem Beispiel benötigst du nur das eine Include.

    [autoit]


    #include <GUIConstantsEx.au3>

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

    $FORM1 = GUICreate("", 200, 70)
    $BUTTON1 = GUICtrlCreateButton("min", 5, 10, 80, 50)
    $e1 = GUICtrlCreateEdit("", 100, 20, 80, 20, 0)
    GUICtrlSetData($e1, "Client")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BUTTON1
    $sEdit = GUICtrlRead($e1)
    min($sEdit)
    EndSwitch
    WEnd

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

    Func min($sTitle)
    WinSetState($sTitle, "", @SW_MINIMIZE)
    EndFunc ;==>min

    [/autoit]


    Zitat

    1. Ordentliche Formatierung deines Scrites bitte, das erhöht die leserlichkeit um einiges d.h. bei einer Schleife einrücken usw.

    2. Was soll 4 mal eine #include-Anweisung ohne Parameter? Das gibt zum einen keinen Sinn und zum andern führ es zu einem Fehler!

    4. Hast du dir schonmal $e1 mit einer MsgBox o.a. ausgeben lassen? Du bekommst nur ein Handle ausgegeben! Du musst GuiCtrlRead einsetzen umd das Edit-Feld auszulesen


    1.
    Kann am Browser (oder dessen Einstellungen) liegen.

    2.
    Forumsbug

    4.
    Grundsätzlich richtig, aber es ist eine ID und kein Handle ;)

  • TCP durch Router schleußen

    • Schnitzel
    • 4. Juli 2011 um 13:22

    Wie Jam00 bereits sagte verbindet sich im Normalfall der Client zum Server.
    Die ServerIP ist ja auch bekannt und immer gleich

    Falls du es wirklich andersrum benötigen würdest, müsstest du NAT verwenden (Network Address Translation)
    Kannst ja mal dannach googeln.
    Wichtig ist aber:
    Alle "Offenen Türen" die dein Programm hat, haben dann auch andere.

    Deshalb bin ich generell eher dagegen wenn Leute am Router rumbasteln.

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™