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

Beiträge von Yaerox

  • Treeview - $NM_CLICK hängt nach

    • Yaerox
    • 14. Juni 2013 um 11:47

    Hallo zusammen,

    ich habe schon einige male mit WM_NOTIFY etc gearbeitet allerdings will mir nun bei einem Script das klicken auf die Treeview nicht wie ich. Ich habe eine Treeview:
    A
    |-B
    |-D
    |-C

    Ich lasse mir nun in der Console ausgeben was angeklickt ist, und beim ersten Klick egal wohin wird immer A gesagt, folgend hängt der dann einen click zurück. Sprich bei Klick zwei zeigt er dann das was er bei dem ersten Klick zeigen sollte ...

    [autoit]

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR, $i_idOld, $idFrom, $tNMTOOLBAR, $tNMTBHOTITEM, $hSelected

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $idFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

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

    Switch $hWndFrom
    Case $hToolbar
    Switch $iCode
    Case $NM_CLICK
    $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $ilParam)
    $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
    Switch $i_idOld
    Case $hToolbarButtonConfigWizzard
    If $fConfigWizzardActive = True Then
    $fConfigWizzardActive = False
    _CloseConfigWizzard()
    Else
    $fConfigWizzardActive = True
    _OpenConfigWizzard()
    EndIf
    EndSwitch
    EndSwitch

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

    Case $hTreeview
    Switch $iCode
    Case $NM_CLICK
    If $fConfigWizzardActive = True Then _ConfigWizzard_FillInputs()
    Case $NM_RCLICK
    If $fConfigWizzardActive = True Then
    Local $tPoint = _WinAPI_GetMousePos(True, $hWndFrom)
    Local $tHitTest

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

    $tHitTest = _GUICtrlTreeView_HitTestEx($hWndFrom, DllStructGetData($tPoint, 1), DllStructGetData($tPoint, 2))
    If BitAND(DllStructGetData($tHitTest, "Flags"), $TVHT_ONITEM) Then
    _GUICtrlTreeView_SelectItem($hWndFrom, DllStructGetData($tHitTest, 'Item'))
    EndIf
    EndIf
    EndSwitch
    EndSwitch

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

    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    ich nutze noch ein WM_COMMAND, aber eig. sollte sich das doch nicht in die Quere kommen, oder?

    [autoit]


    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    Switch $wParam ; See if it comes from one of the inputs
    Case $hCWButtonAddProg
    _ConfigWizzard_AddProgram()
    Case $hCWButtonDelProg
    _ConfigWizzard_DelProgram()
    Case $hCWButtonEditProg
    _ConfigWizzard_EditProgram()
    EndSwitch
    EndFunc ;==>WM_COMMAND

    [/autoit]

    Hoffe mir kann jemand helfen.

    So Far

  • SQLite Trigger / Commit wird nicht erzeugt?

    • Yaerox
    • 14. Juni 2013 um 09:21

    Außerdem scheint es mir als würde AutoIt keine Foreign Keys unterstützen ... Ich meine Befehle im SQL-Editor nutzen die angegebenen FKs, wenn ich ein gleiches Statement in AutoIt abschieße werden diese ignoriert ...

  • SQLite Trigger / Commit wird nicht erzeugt?

    • Yaerox
    • 13. Juni 2013 um 15:11

    Hallo zusammen,

    ich habe ein Problem mit SQLite. Ich habe eine Datenbank mit 4 Tabellen (jetzt allerdings lediglich 2 Tabellen relevant), 3 Foreign Keys und 2 Triggern.

    SQL
    Code
    CREATE TABLE [TABELLE1] (
      [Father] varchar2 CONSTRAINT [FK_TABELLE1] REFERENCES [TABELLE1]([Name]) ON DELETE CASCADE, 
      [Name] varchar2 NOT NULL, 
      CONSTRAINT [sqlite_autoindex_TABELLE1] PRIMARY KEY ([Name]));
    
    
    CREATE TRIGGER [Deletion]
    AFTER DELETE
    ON [TABELLE1]
    FOR EACH ROW
    BEGIN
         DELETE FROM TABELLE1WHERE Father = old.Name OR Name = old.Name;
    END;
    
    
    CREATE TRIGGER [Insertion]
    AFTER INSERT
    ON [TABELLE1]
    FOR EACH ROW
    BEGIN
         INSERT INTO TABELLE2(Name, Zwei) VALUES(new.Name, "BLABLA");
    END;
    
    
    CREATE TABLE [TABELLE2] (
      [Name] varchar2 NOT NULL REFERENCES [TABELLE1]([Name]) ON DELETE CASCADE, 
      [Zwei] varchar2 NOT NULL);
    Alles anzeigen

    Zu Beginn sehen die Tabellen wie folgt aus:

    Code
    Father | Name
    -------------
           | B
           | C
           | A
         A | D
         A | E
         A | F
         E | G
         G | H
    
    Name | Zwei
    -------------
    B    | BLABLA
    C    | BLABLA
    A    | BLABLA
    D    | BLABLA
    E    | BLABLA
    F    | BLABLA
    G    | BLABLA
    H    | BLABLA
    Alles anzeigen

    Wenn ich in meinem SQL-Editor nun folgenden Befehl abschiesse:

    DELETE FROM TABLE1 WHERE Name = "A";

    Kommt folgendes raus:

    Code
    Father | Name
    -------------
           | B
           | C
    
    Name | Zwei
    -------------
    B    | BLABLA
    C    | BLABLA

    Genau das gleiche Statement in AutoIt via _SQLite_Exec():

    Code
    Father | Name
    -------------
           | B
           | C
    
    Name | Zwei
    -------------
    B    | BLABLA
    C    | BLABLA
       E | G
       G | H
    Alles anzeigen

    Das Ergebnis des Statements aus dem Browser ist das erwartete. Meine Vermutungen würden nun irgendwie bei einem Commit/Nicht auslösen des Triggers liegen ... Allerdings sieht das für mich danach aus, als ob AutoIt den Trigger abschießt, allerdings nur 1x und "er sich nicht selbst" wieder aufruft ... Ich hoffe das war nun nicht alt zu falsch formuliert.

    Kann mir jemand helfen und sich vorstellen woran das liegt? :/

    So Far

  • Xenon stellt sich kurz vor

    • Yaerox
    • 7. Juni 2013 um 15:37

    Willkommen und viel Spaß!

  • Tür-Überwachung

    • Yaerox
    • 6. Juni 2013 um 08:18

    Das mit dem nicht aufnehmen ist so eine Sache ... alternativ mal über eine kleine Investition gedacht vll. ein paar Festplatten kaufen, und Daten aufzunehmen und vll. nur für bestimmte Zeit zu speichern? Oder je nachdem welches Format die Kamera nutzt umwandeln lassen und dann von den Zeiten wo Signal 0 (eigentlich Leerlauf) ist, ein schlechteres Video zu behalten und wenn Signal 1 ist das aufgenommene als original zu behalten?

    Möglich ist sowas mit einer kleinen Ablaufsteuerung ;)

    So Far

  • Basics? GUI > Array erstellen, Werte sortieren, danach Wert wieder an richtige Stelle...

    • Yaerox
    • 3. Juni 2013 um 13:33

    Alternativ 1x 2D-Array, Spalte 1 Wertkennzifferung, Spalte 2 Wert. Sortieren nach zweiter Spalte um deine Rechnungen zu machen, und nach der ersten um die alte Reihenfolge zu haben ...

    Aber bietet sich bei sowas kein Hash an? Schlüssel-Wert Paare ;)

    So Far

  • FileSelectFolder UDF - Netzlaufwerk kompatibel?

    • Yaerox
    • 31. Mai 2013 um 14:58

    Hallöchen zusammen,
    wie vielleicht einige schon mitbekommen habe, habe ich kurioser weise Probleme mit FileSelectFolder.

    [autoit]

    Local $sReturn
    $sReturn = FileSelectFolder("Erstellen Sie Ihre gewünschte Ordnerstruktur...", "EUER_PFAD_ZU_EINEM_ORDNER", 1)

    [/autoit]

    Ich gebe einen Namen für den neuen Ordner ein, und sobald ich im Fenster auf freie Fläche klicke, erstellt er zwar den Ordner mit korrekten Namen im Dateisystem, aber in dem Dialog wird er falsch angezeigt. Außerdem habe ich das Problem, dass ich also wenn ich mehrere Ordner anlegen will sprich:

    Quellordner (bereits vorhanden)
    - Unterordner 1
    -- Unterordner 11
    - Unterordner 2

    Zunächst kann ich somit in dem Dialog nachdem ich die Ordner in der Reihenfolge: 1 > 2 erstellt habe 1 nicht mehr anklicken um einen Unterordner zu erstellen, da beide Neuer Ordner in der Anzeige heißen und nur einer angezeigt wird. Folglich wenn ich den "Neuen Ordner" der in Wirklichkeit garnet so heißt anklicke und ein Unterordner erstelle, z.B. 11 dann habe ich

    Quellordner (bereits vorhanden)
    - Unterordner 1
    - Neuer Ordner
    -- Unterordner 11
    - Unterordner 2

    was halt falsch ist.

    Nun ist mir aufgefallen, dass dieses Problem nur auftritt, solang ich mich auf Netzlaufwerken befinde...dies ist aber leider nicht vermeidbar und ich befinde mich auf diesen eig. zu 100%, daher muss ich mir scheinbar eine UDF Alternative suchen ^^ Ich habe bisher leider keine finden können, bei der ich halt auch die Datenstruktur komplett bearbeiten kann. Wisst ihr zufällig ob es sowas gibt und wenn ja, könntet ihr mir einen Hinweis geben wo ich diese finden kann? Habe bisher nichts gefunden und bin grad immernoch auf der Suche.

    So Far

  • WM_NOTIFY macht eine falsche CaseZuordnung

    • Yaerox
    • 31. Mai 2013 um 08:43

    Deklaration der Toolbarbuttons war mein Fehler. Die waren nicht mit Enum deklariert, und zugewiesen

    [autoit]

    Enum $Button1 = 1000, $Button2, ...

    [/autoit]

    #Edit: Du fragtest wieso $h wenn es eine ID sei. Ich weiss nicht, für meinen Teil sehe ich alle Controls als Handle an und daher das h, auch wenn ein Handle eine ControlID hat...falls ich das falsch sehe darfst du mich gern aufklären ;)

  • WM_NOTIFY macht eine falsche CaseZuordnung

    • Yaerox
    • 31. Mai 2013 um 08:27

    Heyy danke für deine Antwort BugFix, und sorry das ich erst jetzt schreibe.
    Die Ausgabe der $hToolbarBUTTON_NAME Variablen ist bei allen leer.
    Das erzeugen gibt allerdings bei allen ein Success zurück...hmmm.

    Könnte es daran liegen, dass ich mit mehreren GUIs arbeite? Meine Grundidee war: ich habe ein Programm, dass Toolbar Buttons hat, und einer davon soll eine Art Konfigurations/Einrichtungs-Assistent starten. Dieser soll allerdings integriert sein. Da meine Recherche ergeben hat, dass ich Tree und Listview nicht einfach komplett ausblenden kann, dachte ich an eine Art GUI die einfach an besagter Position darüber liegt, nur halt ohne Rahmen etc.

    So Far

  • WM_NOTIFY macht eine falsche CaseZuordnung

    • Yaerox
    • 29. Mai 2013 um 15:59

    Hallo zusammen,

    seit über zwei Stunden suche ich nun einen scheinbar dummen Fehler wieso mein WM_NOTIFY nicht mehr funktioniert. Ich hab keinen blassen Schimmer wieso, ich habe lediglich einen Button mehr zu einer Toolbar hinzugefügt. Wir Ihr an dem ConsoleWrite seht habe ich mir mal die verschiedenen Informationen ausgeben lassen und feststellen müssen (kurze Info noch, bei $i_idOld steht der Wert der Variable & "-" & @error):

    Klick auf die Toolbar an einer Stelle wo kein Button ist:
    $hWndFrom: 0x00170CD8
    $iCode: -20
    $tNMTBHOTITEM:
    $i_idOld: -1 - 0

    Klick auf einen meiner 7 Toolbar Buttons (egal welcher):
    $hWndFrom: 0x00170CD8
    $iCode: -20
    $tNMTBHOTITEM:
    $i_idOld: 0 - 0

    [autoit]

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR, $i_idOld, $tNMTOOLBAR, $tNMTBHOTITEM

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

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

    Switch $hWndFrom
    Case $hToolbar
    Switch $iCode
    Case $NM_LDOWN
    $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $ilParam)
    $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")

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

    ConsoleWrite("$hWndFrom: " & $hWndFrom & @CR & _
    "$iCode: " & $iCode & @CR & _
    "$tNMTBHOTITEM: " & $tNMTBHOTITEM & @CR & _
    "$i_idOld: " & $i_idOld & " - " & @error & @CR & @CR)

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

    Switch $i_idOld
    Case $hToolbarButtonOpen
    ConsoleWrite("Open" & @CR & @CR)
    Case $hToolbarButtonCopy
    ConsoleWrite("Copy" & @CR & @CR)
    Case $hToolbarButtonCreate
    ConsoleWrite("Create" & @CR & @CR)
    Case $hToolbarButtonExplorer
    ConsoleWrite("Explorer" & @CR & @CR)
    Case $hToolbarButtonRefresh
    ConsoleWrite("Refresh" & @CR & @CR)
    Case $hToolbarButtonDelete
    ConsoleWrite("Delete" & @CR & @CR)
    Case $hToolbarButtonConfigWizzard
    If $fConfigWizzardActive = True Then
    _CloseConfigWizzard()
    $fConfigWizzardActive = False
    Else
    _OpenConfigWizzard()
    $fConfigWizzardActive = True
    EndIf
    EndSwitch
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Er navigiert leider immer nur in den ersten Case Fall. Ich hatte sowas ähnliches schon mal glaub ich, aber ich finde weder hier im Forum etwas, noch auf meinem Rechner oder sehe es einfach selber :7

    Wäre jemand so freundlich und schaut mal drüber?

  • Zeilenweises Löschen in Textdatei: A bis B

    • Yaerox
    • 29. Mai 2013 um 14:08

    Langsam werd' ich verwirrt :D

    Also ich habe an sowas gedacht:

    Script
    [autoit]

    Local $hFile = FileOpen("file.txt")
    Local $hFile2 = FileOpen("file2.txt", 2)
    Local $bStartFound = False

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

    While 1
    Local $sLine = FileReadLine($hFile)
    If @error = -1 Then ExitLoop

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

    If $bStartFound = False Then
    If Not StringRegExp($sLine, "d") Then ;USE START PATTERN HERE
    FileWriteLine($hFile2, $sLine)
    Else
    $bStartFound = True
    EndIf
    Else
    If StringRegExp($sLine, "l") Then
    FileWriteLine($hFile2, $sLine) ;USE END PATTERN HERE
    Else
    $bStartFound = False
    EndIf
    EndIf
    WEnd

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

    FileClose($hFile)
    FileClose($hFile2)

    [/autoit]
    file.txt
    Code
    a
    b
    c
    d
    e
    f
    g
    h
    i
    j
    k
    l
    m
    n
    o
    p
    q
    r
    s
    t
    u
    v
    w
    x
    y
    z
    Alles anzeigen

    Dies ist allerdings auch noch keine 100%ige Variante, da ich einfach das Alphabet gebrochen in eine Textdatei geschrieben habe. Du müsstest halt schauen ob die PATTERNS bei dir auch nur in dieser Reihenfolge auftauchen können, sonst musst du halt noch ein paar Sachen abfangen.

    So Far

  • Maus Kursor flackert in AutoIt

    • Yaerox
    • 29. Mai 2013 um 13:52

    Sorry minx, hab das hier total übersehen. Habe 34078728 sowie 0x34078728 an einem InputControl versucht und bin zu folgendem Ergebnis gekommen:

    Flackern tut nichts mehr, allerdings ist das optische Aussehen des Controls so, als ob dort keins Wäre ^^ Also der Cursor wechselt auch nicht von Pfeil zu Balken.

  • Problem mit IniREAD

    • Yaerox
    • 27. Mai 2013 um 14:45
    Zitat von misterspeed

    Nö. Zumindestens sofern die Hilfe von iniread vollständig ist wird kein @error im Fehlerfall gesetzt. Es gibt außerdem keinen "default" Wert für den 4. Parameter, dieser ist kein optionaler, sondern ein Pflichtparameter. Man entscheidet also selbst was die Funktion im Fehlerfall zurückgibt, hier wie schon erwähnt der String "conf-error".

    Uii hab da auf die schnelle in einem alten Script nachgeschaut wie ich es dort gemacht habe. Ja mir ist das mit dem 4. Parameter klar, jedoch dachte ich bisher dass IniRead im Fehlerfall @error trotzdem setzt.
    Naja dann halt $var = "wert-der-als-4-parameter-eingetrage-ist".

    Werd das bei Gelegenheit nochmal ausprobieren sonst muss ich das bei mir auch nochmal ändern ^^

  • Problem mit IniREAD

    • Yaerox
    • 27. Mai 2013 um 14:03

    Du hast da etwas durcheinander geworfen.

    Du fragst aus der .ini eine Version ab. Erwartest aber scheinbar einen Pfad zu einer Datei.
    Angenommen in deiner .ini steht bei Version=1.0.0.0. Dann sagst du: FileReadLine("1.0.0.0").
    FileReadLine ( "filehandle/filename" [, line] ) ; Somit hast du hier einen falschen Parameter.
    Folglich wird er dir immer sagen deine Bedingung ist falsch und gibt die MsgBox aus.

    Nebenbei: Du könntest statt $filejava = -1 auch einfach If @error Then nehmen sofern du als 4ten Parameter default lässt. Ob du den default Wert auch ändern kannst, und trotzdem @error nutzen kannst müsstest mal kurz ausprobieren. Jedenfalls wird diese Bedingung ebenfalls nie erfüllt werden...

  • Alles Gute minx, GtaSpider und allen anderen

    • Yaerox
    • 27. Mai 2013 um 13:08

    Alles Gute :D

  • Problem mit IniREAD

    • Yaerox
    • 27. Mai 2013 um 13:07

    Hallo lacie,

    zunächst würde ich dich bitten deinen Code nochmal gebrochen zu updaten oder neu zu posten. So ist es echt doof wenn man etwas nachvollziehen möchte.

    Kannst du den .ini Eintrag vielleicht dazu posten? Oder hast du vielleicht dort etwas falsches stehen? Ein paar mehr Informationen halt um das Problem besser beurteilen zu können.

    Wenn ich das nun richtig gesehen habe machst du auf das IniRead ein FileReadLine? Das wird dann das Problem sein denke ich ...

    Wie m-obi schon erwähnt hat, schau die IniRead nochmal an. Im Erfoglsfall gibt es das wieder was an der besagten Stelle in der .ini steht.

    So Far

  • Tastendruck an inaktive Fenster schicken.

    • Yaerox
    • 24. Mai 2013 um 08:34

    Schau dir in der Hilfe mal ControlSend an ;)

    So Far

  • Vorzeitiges Verlassen einer Funktion/Schleife mit Return - Guter Programmierstil oder nicht?

    • Yaerox
    • 24. Mai 2013 um 08:32

    Ich höre auch oft GoTo sei schmieren Programmierung. Als ich dann mal nachgefragt habe wieso kommt eig. immer nur das Argument Übersicht des Quellcodes. Du weißt irgendwann nicht mehr wo wie was und wann passiert.

    Ich arbeite zu 99% mit Schleifen und Switch.

    So Far

  • Zeilenweises Löschen in Textdatei: A bis B

    • Yaerox
    • 24. Mai 2013 um 08:29

    Wenn du die StringRegExpReplaces später machen kannst, dann würde ich vielleicht die Datei schon anders einlesen.

    Zeilenweise einlesen, wenn StringRegExp( ANFANG ) gefunden ist einen Flag setzen, dass in der Zeit nichts getan werden muss, bis die Zeile mit StringRegExp( ENDE ) gefunden ist. Sollten deine sonstigen StringRegExpReplaces zwischen A und B etwas bearbeiten wird dies doch eh gelöscht und somit unnötig.

    Die alternativlösung mit letzte Zeile/Umbruch suchen durch einen Umbruch würde ich niemals empfehlen. Die Texte haben doch sicherlich ein Muster an dass du dich halten kannst oder?

    So Far

  • Maus Kursor flackert in AutoIt

    • Yaerox
    • 23. Mai 2013 um 13:27

    Hallöchen zusammen :)

    Ich wollte einfach nochmal gerne auf einen alten Thread hinweisen: http://www.autoitscript.com/forum/topic/12…l/#entry1073965

    Hat jemand von euch ein ähnliches Problem und/oder kennt eine Lösung? Ich bin einer von denen bei dem der Kursor verrückt spielt und es immer doof aussieht :/

    Hab das diesmal im Offtopic weil die anderen Beiträge dazu schon in Vergangenheit geraten sind und es schien niemand helfen zu können.

    So Far

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™