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

Beiträge von haendler

  • Variablen Deklaration Unterschiede

    • haendler
    • 20. Juni 2017 um 11:12

    In AutoIt gibt es 3 Möglichkeiten eine Variable zu deklarieren

    "Local $variable" -> Diese Variable ist nur in der Funktion / Scope gültig
    "Global $variable" -> Diese ist überall gültig
    $variable = 'test' -> Diese ist auch nur in der Funktion / Scope gültig

    Code
    Func test()
        Local $variable = 'test'
       MsgBox(0,0, $variable)
    EndFunc
    
    
    Func test2()
        $variable = 'test2'
        MsgBox(0,0, $variable)
    EndFunc

    Beide Funktion machen genau das selbe...

    Ich arbeite mit einer UDF, welche mir ein DLLStructElement zurück liefert:

    Code
    Func CreateDllStruct()
        Local $lBuffer = DllStructCreate('ptr')
        Local $lDllStruct = DllStructCreate('long id;long aId;byte unknown1[4];ptr bag;ptr modstruct;long modstructsize;ptr customized;byte unknown2[4];byte type;byte unknown3;short eId;short value;byte unknown4[2];short interaction;long m;ptr modString;byte unknown5[4];ptr NameString;byte unknown6[15];byte q;byte e;byte unknown7[1];byte slot')
    
    
        DllCall($mKernelHandle, 'int', 'ReadProcessMemory', 'int', $mGWProcHandle, 'int', DllStructGetData(1, 'Array') + 4 * ($aSlot - 1), 'ptr', DllStructGetPtr($lBuffer), 'int', DllStructGetSize($lBuffer), 'int', '')
        DllCall($mKernelHandle, 'int', 'ReadProcessMemory', 'int', $mGWProcHandle, 'int', DllStructGetData($lBuffer, 1), 'ptr', DllStructGetPtr($lDllStruct), 'int', DllStructGetSize($lDllStruct), 'int', '')
        Return $lDllStruct
    EndFunc
    Code
    Func TestDllStruct()
        Local $lStruct
        Local $iQ, $iM
    
    
    
    
        $lStruct = CreateDllStruct()
        $iQ = DllStructGetData($lStruct, 'Q')
        $iM = DllStructGetData($lStruct, 'M')
    EndFunc
    Alles anzeigen

    Wenn ich in der Func TestDllStruct, die Rückgabe von CreateDllStruct in eine Variable speicher, stürtzt mir das Programm ohne Fehlermeldung ab. Wenn ich allerdings die Variable mit "Local" vorher definiere funktioniert alles ohne probleme.

    Wenn ich das ganze ohne ein "Local $lStruct" bearbeite siehe unteres Test2() beispiel, stürzt mir das Programm auf bzw. kann keine Werte durch DllStructGetData laden.

    Allerdings dürfte es doch zwischen

    Code
    Func Test()
       Local $lStruct
    
    
       $lStruct = CreateDllStruct()
    EndFunc

    und

    Code
    Func Test2()
        $lStruct = CreateDllStruct()
    EndFunc


    keinen direkten Unterschied geben oder?

    Kann mir das Verhalten jmd. erkären? :D

    _
    haendler

  • Automatisches Login bei Yahoo

    • haendler
    • 5. August 2014 um 11:56
    Zitat von HalleMike

    Vielen Dank für die Antworten.
    Die von "heandler" ist interessant, zeigt mir aber nicht wirklich, ob ich nun angemeldet bleibe oder nicht.
    Vielleicht hilft das dem Profi weiter: Es ändert sich, wenn man den Haken in der der "Quasi-Checkbox" herausnimmt auch die im Bild markierte Zeile

    in

    Ich habe auch im FF HTML-Editor einfach mal das "checked" in "unchecked" geändert. Auch da verschwindet der Haken in der "Checkbox".
    Bloß, wie komme ich da über mein AutoIt-Script ran? Ich hab keinen Plan!


    Ja klar aber da sich das HTML ändert und nicht der Wert in der Checkbox bzw. es gibt hier gar keine Checkbox! :D Der Hacken verschwindet weil du ihm die Klasse checked wegnimmst und diese Klasse checked steht dafür das es aussieht als ob diese nicht vorhandene Checkbox als wäre diese angehackt.

    Es ist lediglich ein Element im
    Html Code und kein Eingabefeld. Es sieht nur wie eins aus. Über JavaScript verändert sich dann der Wert in dem "hidden"-Eingabefeld .persistent.

    Wenn du für .persistent einen leeren Wert übergibst, also

    [autoit]

    _FFSetValue("", ".persistent", "name")

    [/autoit]

    Dann sollte alles passen (obwohl es aussieht als würde die nicht vorhandene "Checkbox") noch ausgewählt sein.

    (Ich hoffe du weißt was ich meine)

  • Automatisches Login bei Yahoo

    • haendler
    • 5. August 2014 um 06:15

    Hey, diese "Checkbox" dort ist gar keine Checkbox das ist ein <span> welcher aussieht wie eine Checkbox :D

    Allerdings wenn du mal darauf klickst wirst du im Quellcode sehen, das sich folgendes verändert:

    [autoit]

    <input type="hidden" value="y" id="persistent" name=".persistent">

    [/autoit]

    wird zu

    [autoit]

    <input type="hidden" value="" id="persistent" name=".persistent">

    [/autoit]

    Das heißt eigentlich müsste es mit

    [autoit]

    _FFSetValue("", ".persistent", "name")

    [/autoit]

    Funktionieren (die Checkbox wird natürlich immer noch als true angezeigt, aber auch nur weil es eigentlich keine Checkbox ist :D)
    Hoffe ich konnte dir helfen :)

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™