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

Beiträge von BugFix

  • [Abgelaufen] µitLight September '10 - Usermeinung II

    • BugFix
    • 25. November 2010 um 19:23
    Zitat von MatthiasG.

    Teilnehmer dürfen aber natürlich auch für sich selbst stimmen!


    :D Wenn einer der Teilnehmer abstimmt, wählt er doch logischerweise das 2. und 3. platzierte - das eigene Werk steht doch außer Frage :whistling:
    Mal ernsthaft: Die eine Stimme macht ja wohl den Kohl nicht fett, da finde ich es sportlicher das zu honorieren, was einem bei den anderen gefällt.

  • [Abgelaufen] µitLight September '10 - Usermeinung II

    • BugFix
    • 25. November 2010 um 17:13

    Der Beitrag von eukalyptus hat mich sofort an ObjectDock (von Stardock.com) erinnert. Eine Anwendung, die ich nicht mehr missen möchte. :thumbup:

  • Zertifikate für autoit.de-User

    • BugFix
    • 22. November 2010 um 22:06

    Letztlich bleiben wir immer wieder an einem Punkt hängen: Welcher wilde Affe sollte mich beissen, damit ich auf die Idee komme eine EXE zu posten. :wacko:
    Ich habe anfangs viel aus den Skripten anderer gelernt und hoffe, dass meine Skripte wiederum für andere lehrreich sind. Community heißt geben und nehmen. :thumbup:

  • 2D - DllStructs ?

    • BugFix
    • 22. November 2010 um 09:47

    Flexibler ist es, wenn man ein Bytearray zum Speichern verwendet.
    Um nicht immer nachrechnen zu müssen, welcher Speicherplatz wo liegt, hab ich dazu mal ein paar Funktionen erstellt: "2D_Dll_Struct"

  • "2D_Dll_Struct"

    • BugFix
    • 22. November 2010 um 09:45

    Im Forum war die Frage nach "2D" Strukturen aufgetaucht.
    Natürlich gibt es keine 2D-Strukturen, die Daten liegen (ebenso wie bei Arrays) hintereinander im Speicher. Man kann aber den Zugriff so gestalten, dass ein Zeilen/Spalten -Effekt wirksam ist. Inwiefern das jetzt sinnvoll zu nutzen ist, muß jeder selbst entscheiden.
    Ich habe mal Funktionen für "2D"-Strukturen mit Bsp. erstellt.

    Dll_Struct_2D
    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _CreateByteArray2D
    ; Description ...: Erstellt die Struktur Bytearray im Zugriffs-Stil eines Array-2D
    ; Syntax.........: _CreateByteArray2D($sType, $iRows, $iCols)
    ; Parameters ....: $sType String zu speichernder Datentyp
    ; $iRows Anzahl Zeilen
    ; $iCols Anzahl Spalten
    ; Return values .: Bytearray-Struktur
    ; Author ........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Remarks .......: Zusätzlich zu den Daten werden Größe und Name des verwendeten Datentyps und die Größe der Dimensionen
    ; in der Struktur hinterlegt
    ; ===============================================================================================================================
    Func _CreateByteArray2D($sType, $iRows, $iCols)
    Local $iSize = DllStructGetSize(DllStructCreate($sType, 1))
    Local $aByte = DllStructCreate('byte[' & $iSize *$iRows *$iCols & "];int size;wchar type[128];int ubound[2]")
    DllStructSetData($aByte, 'size', $iSize)
    DllStructSetData($aByte, 'type', $sType)
    DllStructSetData($aByte, 'ubound', $iRows, 1)
    DllStructSetData($aByte, 'ubound', $iCols, 2)
    Return $aByte
    EndFunc ;==>_CreateByteArray2D

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _SetValToByteArray2D
    ; Description ...: Überträgt einen Wert an eine definierte Position im Bytearray
    ; Syntax.........: _SetValToByteArray2D($aByte, $vVal, $iRow, $iCol)
    ; Parameters ....: $aByte die Struktur Bytearray
    ; $vVal der einzutragende Wert
    ; $iRow Index Zeilenposition (0-basiert)
    ; $iCol Index Spaltenposition (0-basiert)
    ; Author ........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Remarks .......: Die Plausibilitätsprüfung der einzutragenden Werte bzgl. des verwendeten Datentyps ist vorher sicherzustellen
    ; ===============================================================================================================================
    Func _SetValToByteArray2D(ByRef $aByte, $vVal, $iRow, $iCol)
    Local $sType = DllStructGetData($aByte, 'type')
    Local $iSize = DllStructGetData($aByte, 'size')
    Local $Ub2 = _GetUBoundFromByteArray2D($aByte, 2)
    Local $iShiftPtr = ($iRow * $Ub2 * $iSize) + ($iCol * $iSize)
    Local $tmpStruct = DllStructCreate($sType, DllStructGetPtr($aByte) +$iShiftPtr)
    DllStructSetData($tmpStruct, 1, $vVal)
    EndFunc ;==>_SetValToByteArray2D

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _GetValFromByteArray2D
    ; Description ...: Liest einen Wert aus einer definierten Position im Bytearray
    ; Syntax.........: _GetValFromByteArray2D($aByte, $iRow, $iCol)
    ; Parameters ....: $aByte die Struktur Bytearray
    ; $iRow Index Zeilenposition (0-basiert)
    ; $iCol Index Spaltenposition (0-basiert)
    ; Return values .: Der gelesene Wert
    ; Author ........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; ===============================================================================================================================
    Func _GetValFromByteArray2D(ByRef $aByte, $iRow, $iCol)
    Local $sType = DllStructGetData($aByte, 'type')
    Local $iSize = DllStructGetData($aByte, 'size')
    Local $Ub2 = _GetUBoundFromByteArray2D($aByte, 2)
    Local $iShiftPtr = ($iRow * $Ub2 * $iSize) + ($iCol * $iSize)
    Local $tmpStruct = DllStructCreate($sType, DllStructGetPtr($aByte) +$iShiftPtr)
    Return DllStructGetData($tmpStruct, 1)
    EndFunc ;==>_GetValFromByteArray2D

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _GetUBoundFromByteArray2D
    ; Description ...: Gibt die Größe der verwendeten Dimensionen zurück
    ; Syntax.........: _GetUBoundFromByteArray2D($aByte, $iDim = 1)
    ; Parameters ....: $aByte die Struktur Bytearray
    ; $iDim die Dimension, deren Größe erfragt wird, Standard = 1
    ; Return values .: Größe der Dimension (Anzahl Elemente)
    ; Author ........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; ===============================================================================================================================
    Func _GetUBoundFromByteArray2D(ByRef $aByte, $iDim = 1)
    If $iDim < 1 Then $iDim = 1
    If $iDim > 2 Then $iDim = 2
    Return DllStructGetData($aByte, 'ubound', $iDim)
    EndFunc ;==>_GetUBoundFromByteArray2D

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ByteArray2DToArray
    ; Description ...: Überträgt die Daten aus dem Bytearray in ein klassisches 2D-Array
    ; Syntax.........: _ByteArray2DToArray($aByte)
    ; Parameters ....: $aByte die Struktur Bytearray
    ; Return values .: Ein klassisches 2D-Array mit allen Werten aus der Struktur
    ; Author ........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; ===============================================================================================================================
    Func _ByteArray2DToArray(ByRef $aByte)
    Local $iRows = _GetUBoundFromByteArray2D($aByte)
    Local $iCols = _GetUBoundFromByteArray2D($aByte, 2)
    Local $a[$iRows][$iCols]
    For $i = 0 To $iRows -1
    For $j = 0 To $iCols -1
    $a[$i][$j] = _GetValFromByteArray2D($aByte, $i, $j)
    Next
    Next
    Return $a
    EndFunc ;==>_ByteArray2DToArray

    [/autoit]
    Bsp.
    [autoit]

    #include 'Dll_Struct_2D.au3'

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

    #include <Array.au3>

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

    ; === 2d-Array / "2D-Struktur" (Integer Daten)
    Local $a[10][5]
    Local $2D_Struct = _CreateByteArray2D('int', 10, 5)

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

    For $i = 0 To 9
    For $j = 0 To 4
    $a[$i][$j] = ($i+1) *10 *($j+1)
    _SetValToByteArray2D($2D_Struct, ($i+1) *10 *($j+1), $i, $j)
    Next
    Next
    _ArrayDisplay($a, 'Original 2D Array')

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

    $a1 = _ByteArray2DToArray($2D_Struct)
    _ArrayDisplay($a1, 'aus Struktur erstelltes 2D Array')

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

    ; === Daten aus Struktur gelesen ==> Ausgabe Console
    For $i = 0 To 9
    For $j = 0 To 4
    ConsoleWrite(_GetValFromByteArray2D($2D_Struct, $i, $j) & ' ')
    Next
    ConsoleWrite(@CRLF)
    Next

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

    ; === "2D-Struktur" (Datentyp Zeichen)
    Local $2D_Struct_str = _CreateByteArray2D('char[128]', 5, 2)
    Local $n = 65
    For $i = 0 To 4
    _SetValToByteArray2D($2D_Struct_str, Chr($n), $i, 0)
    _SetValToByteArray2D($2D_Struct_str, Chr($n+32), $i, 1)
    $n += 1
    Next
    $a2 = _ByteArray2DToArray($2D_Struct_str)
    _ArrayDisplay($a2, 'String-Strukt als Array')

    [/autoit]

    Dateien

    Dll_Struct_2D.au3 5,61 kB – 391 Downloads Dll_Struct_2D_Bsp.au3 1,01 kB – 343 Downloads
  • Problem mit Func

    • BugFix
    • 21. November 2010 um 08:58

    NEIN, das geht mir jetzt einfach zu weit Alle und Jeden unter generellen Botverdacht zu stellen.

    Die Frage verstößt NICHT gegen die Regeln. Wir können vermuten, dass es ein Bot werden soll.
    ABER:
    Ich verlange, dass für Alle gleichermassen die Unschuldsvermutung gilt. Falls die Vermutung besteht, es könnte ein Bot werden, braucht hier niemand zu antworten.

    Ich denke, meine Position zum Thema Bot ist unstrittig. Wir haben hier aber eine Community, die mit Leben erfüllt sein soll und nicht mit Scharmützeln. Es gilt gründlich abzuwägen, wo liegt ein Regelverstoß vor und wo nicht. Wehret den Anfängen ist völlig in Ordnung, aber nicht derart, dass wir uns das Leben schwer machen.

    [Thread wieder offen]

  • Profifrage: CreateRemoteThread in Zielproress öffnen und ansprechen. Suche Theorie und Praxis :)

    • BugFix
    • 20. November 2010 um 20:58

    Der TS hat den Thread keineswegs gestartet um Dll-Injection zu betreiben. Diese (von uns abzulehnende) Lösungsvariante wurde von Eaelendil ins Spiel gebracht.
    Insofern ist es absolut unangemessen den TS mit Sperrung seines Threads zu bestrafen, weil ein anderer User die Forenregeln mißachtet. Und selbst dieser Verstoß gegen die Forenregeln ist grenzwertig, da nicht ausdrücklich in den Regeln hinterlegt, sondern nur dem dort angeführten Geiste nach.
    Ich finde es begrüßenswert, dass ihr mit Argusaugen auf die Einhaltung unserer Regeln achtet. Jedoch ist manchmal etwas mehr Feingefühl von Nöten.
    In diesem Fall gebe ich den Thread wieder frei unter der eindeutigen Maßgabe, dass Thema Dll-Injection nicht mehr zu verfolgen.

  • Lieblings Spiel der 80. Jahre

    • BugFix
    • 19. November 2010 um 21:39

    Mein Lieblingsspiel aus der Zeit (besitze jetzt auch eine auf Windows laufende Version): Blockout (3D-Tetris) :thumbup:

    Edit: Hier mal noch der Link zur aktuellen Version

  • If - then

    • BugFix
    • 18. November 2010 um 09:05

    Dazu verwendest du einfach den Else-Zweig (wenn in beiden Fällen wahr/unwahr reagiert werden soll) oder negierst die Abfrage:

    [autoit]


    If $input1 = "Alex" then
    msgbox (0,"TEST","Alex wahr")
    else
    msgbox (0,"TEST","Alex unwahr")
    endif

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

    ; oder nur unwahr abfragen
    If $input1 <> "Alex" then msgbox (0,"TEST","Alex unwahr")

    [/autoit]
  • Controls in (unsichtbare) Gruppe zusammenfassen

    • BugFix
    • 18. November 2010 um 08:52
    Zitat von autoBert

    BugFix , tklausl: sorry kann es sein dass ihr den 2. Teil der Frage nicht gelesen habt?

    Doch, gelesen - aber anders interpretiert. Ich dachte, er möchte eine nur logische Gruppe ohne sichtbare Abgrenzung durch das Group-Ctrl. Denn dass jemand dieses Ctrl nicht kennt hielt ich irgendwie nicht für möglich. ;)

  • Controls in (unsichtbare) Gruppe zusammenfassen

    • BugFix
    • 17. November 2010 um 23:50

    Dafür gibt es den Style $WS_GROUP. Edit: Damit wird nur das Fokussieren mit den Pfeiltasten geregelt.
    Echte Groups gibt es nur für Radiobutton.
    Für andere Ctrl fass deren ID in einem Array zusammen, dann kannst du dieses durchlaufen und z.B. gleiche Styles setzen.

  • Wenn Mausklick dann...

    • BugFix
    • 17. November 2010 um 22:49

    Edit:
    Diese Variante würde ich bevorzugen (ich mag Hooks ;))

    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    OnAutoItExitRegister('OnAutoItExit')
    HotKeySet('{ESC}', '_Exit')

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

    Global Const $HC_ACTION = 0
    Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

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

    While True
    Sleep(50)
    WEnd

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

    Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
    Switch $wParam
    Case $WM_MBUTTONDOWN
    _MButton(1)
    Case $WM_MBUTTONUP
    _MButton(0)
    EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

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

    Func _MButton($iDown)
    If $iDown Then
    ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
    ToolTip('')
    EndIf
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]
  • Button Farbe wieder auf Standard zurücksetzen

    • BugFix
    • 17. November 2010 um 18:57

    Das geht mit der Button-UDF:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <WindowsConstants.au3>
    Local $switch = False

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

    GUICreate('')
    $b1 = GUICtrlCreateButton("Button",10,10)
    GUICtrlSetBkColor($b1,0x059122)
    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $b1
    $switch = Not $switch
    If $switch Then
    _GUICtrlButton_SetStyle($b1, $GUI_SS_DEFAULT_GUI)
    Else
    GUICtrlSetBkColor($b1,0x059122)
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Checkbox mit 2 Aktionen

    • BugFix
    • 17. November 2010 um 08:17
    Zitat von m-obi

    Da wären wir wieder bei dem Thema: Sollte man bei Checkboxen und Radions nicht eigentlich BitAnd nehmen?

    Das bedarf eigentlich keiner Diskussion:

    Zitat von Hilfe AutoIt

    Bei Checkboxen und Radiobuttons können mehrere Statuse als $GUI_FOCUS und $GUI_CHECKED zurückgegeben werden. So ist z. B. BitAnd(GUICtrlRead($Item),$GUI_CHECKED) zu verwenden um zu sehen ob ein Control markiert ist.

    Wenn der auszulesende Wert eine Bitsumme enthalten kann, muß ich zwingend mit BitAnd selektieren. Alles andere ist Lotterie.

  • Laptop Kühler - Welcher ist gut?

    • BugFix
    • 16. November 2010 um 19:23
    Zitat von AntiSpeed

    ich schraub auch bestimmt an meinem Laptop ^^ . Wenn du weiß wie es geht, mach pls mal ein Tutorial drüber.

    Sag an, was für ein Typ es ist. Wenn ich es schon in den Fingern hatte, kann ich dir sagen wie es geht. - Wobei das Verfahren grundsätzlich gleich ist.
    - Bodenschrauben entfernen
    - Bodenplatte aushebeln, ist mit Plastiknasen eingerastet - das ist das eigentliche Geheimnis, diese zu finden ;)

  • _IsPressed() - KeyListe Frage

    • BugFix
    • 15. November 2010 um 18:25

    Ist abhängig von der verwendeten Tastatur.
    Guckst du: [ offen ] Wo sind ö/ä/ü bei _IsPressed?

  • Xenobiologist wird heute 31 Jahre

    • BugFix
    • 12. November 2010 um 20:28

    Hi Xeno,
    wünsche dir auch Alles Gute zu deinem Ehrentag. Reib dich nicht bei der Arbeit auf. Herzinfarkt muss nicht sein. ;)

  • neuer Browser

    • BugFix
    • 12. November 2010 um 19:54
    Zitat von Nitrama

    einen Browser gescriptet.


    Nun - sagen wir mal lieber: einen Embedded IE ;)

  • Inventarliste erstellen MySQL Datenbank

    • BugFix
    • 12. November 2010 um 16:02
    Zitat von hela

    ich bekomme immer nur einen eintrag angezeigt :(


    Dann machst du in der Auswertung etwas falsch.
    Die Abfrage gibt dir ein Recordset zurück, das du wie folgt weiter bearbeiten kannst.

    [autoit]


    ; Ausführung eines SQL-Statements mit Methode Execute ==> liefert Recordset zurück:
    $oRecSet = _oSQLDB_Execute($oConn, $sql_str) ;<== sollte der MySQL-Query-Funktion entsprechen

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

    ; Recordset in Array wandeln, es wird immer ein 2D-Array zurückgegeben:
    $array = $oRecSet.GetRows
    If Not IsArray($array) Then
    MsgBox(0, 'Array', 'kein Ergebnis')
    ; close connection
    EndIf

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

    _ArrayDisplay($array)

    [/autoit]

    Kannst ja auch mal hier schauen, vllt. hilft dir das weiter.

  • Inventarliste erstellen MySQL Datenbank

    • BugFix
    • 12. November 2010 um 15:41

    Nun, ich kann nicht ausschließen, dass was daneben geht. Mit MySQL hab ich eher wenig am Hut. Ich nutze Firebird.
    Dann versuch doch mal die ganz allgemeine Ausgabe, wie aus deinem ersten SQL-String (aber Felder und Tabellen gehören bei MySQL in "`").

    SQL
    SELECT * FROM `uebersicht`

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™