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

  • Hilfe bei Dll-Aufruf

    • BugFix
    • 15. April 2010 um 12:16

    Wenn ich nicht irre, werden hier aber Pointer verlangt:

    Zitat

    char *data, char *parms


    Meiner Meinung nach, könnte es so etwas werden:

    [autoit]

    Func _FiSH_encrypt_msg($mWnd, $aWnd, $sData, $show, $nopause)
    Local $tData = DllStructCreate('char[900]')
    DllStructSetData($tData, 1, $sData)
    Local $tParams = DllStructCreate('char[900]')
    Local $ret = DllCall('Fish.dll', 'int', 'FiSH_encrypt_msg', 'hwnd', $mWnd, 'hwnd', $aWnd, 'ptr', DllStructGetPtr($tData), _
    'ptr', DllStructGetPtr($tParams), 'BOOLEAN', $show, 'BOOLEAN', $nopause)
    If @error Then Return SetError(@error,0,-1)
    Switch $ret[0]
    Case 0, 1
    Return $ret[0]
    Case 2
    Local $aOut[2] = [DllStructGetData($tData,1), DllStructGetData($tParams,1)]
    Return $aOut
    Case 3
    Return DllStructGetData($tData,1)
    EndSwitch
    EndFunc

    [/autoit]
  • Supreme Auction

    • BugFix
    • 15. April 2010 um 11:53

    Techmix:
    Stimme mit deiner Einschätzung völlig überein. Es ist inzwischen durchaus üblich, dass die betroffenen Unternehmen ihren (wohl zu Recht) schlechten Ruf mit solchen Hurraschreiern aufmöbeln wollen und dabei die Geschädigten Personen auch noch verunglimpfen. :thumbdown:

    Auch wenn ich hier nicht betroffen bin ist meine Empfehlung an alle:

    Solange keine absolute rechtliche Klarheit über die Methoden bestehen, sollte man wohl besser die Finger von Supreme lassen.

  • Fehlerhafte Werte von _GUICtrlTab_GetItemRect() und _GUICtrlTab_GetItemRectEx()

    • BugFix
    • 15. April 2010 um 11:38

    Hi,
    ich bin fast schon an mir selbst verzweifelt, weil ich einen Fehler nicht fand. Dabei kommt der Fehler von den oben genannten Funktionen.
    Im folgenden Bsp. könnt ihr es selbst testen:
    Der Code dient dazu, bei Rechtsklick festzustellen über welchem Tabitem der Rechtsklick erfolgt, da dabei das Item nicht aktiviert wird.
    Klickt mit re. Maustaste in die Mitte der Tabbezeichnung (Buchstabe 'a'), dann wird mit _GUICtrlTab_GetItemRect() die Abmessung/Position des Tabitem ermittelt. Bei 'Tab 0' wird dort left=2, top=2 zurückgegeben obwohl das Tab an Position 8,8 erstellt wurde!
    Laut Rect-Funktion befindet man sich bereits bei Schriftende eines Tabs im nächsten Tab. :wacko:
    (Die beiden Funktionen sind identisch - nur gibt eine ein Array und die andere eine Struktur zurück.)

    Hat jemand dafür eine Erklärung/ Lösung parat?

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiTab.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>

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

    $Form1 = GUICreate("Test", 297, 341, 210, 144)
    $Tab = GUICtrlCreateTab(8, 8, 280, 240)
    $hTab = GUICtrlGetHandle($Tab)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $tab1 = GUICtrlCreateTabItem("Tab 0")
    $tab2 = GUICtrlCreateTabItem("Tab 1")
    $tab3 = GUICtrlCreateTabItem("Tab 2")
    $tab4 = GUICtrlCreateTabItem("Tab 3")
    GUICtrlCreateTabItem("")
    $labelRect = GUICtrlCreateLabel('', 8, 270, 280, 17)
    $labelMouse = GUICtrlCreateLabel('', 8, 305, 280, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_SECONDARYUP
    For $i = 0 To 3
    $old = Opt('MouseCoordMode', 2)
    $mouse = MouseGetPos()
    Opt('MouseCoordMode', $old)
    GUICtrlSetData($labelMouse, 'MousePos: ' & $mouse[0] & ', ' & $mouse[1])
    If _MouseOverTabItem($Form1, $hTab, $i) Then
    WinSetTitle($Form1, '', 'Right clicked Index: ' & $i)
    $rect = _GUICtrlTab_GetItemRect($hTab, $i)
    GUICtrlSetData($labelRect, 'ItemRECT: ' & $rect[0] & ', ' & $rect[1] & ', ' & $rect[2] & ', ' & $rect[3])
    ExitLoop
    EndIf
    Next
    EndSwitch
    WEnd

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

    Func _MouseOverTabItem($GUI, $hWnd, $iTabItem)
    If Not BitAND(WinGetState($GUI), 8) Then Return False
    Local $old = Opt('MouseCoordMode', 2)
    Local $posM = MouseGetPos(), $tMouse = DllStructCreate($tagPOINT)
    DllStructSetData($tMouse, 1, $posM[0])
    DllStructSetData($tMouse, 2, $posM[1])
    Opt('MouseCoordMode', $old)
    Local $tTabItem = _GUICtrlTab_GetItemRectEx($hWnd, $iTabItem)
    If _WinAPI_PtInRect($tTabItem, $tMouse) Then
    Return True
    Else
    Return False
    EndIf
    EndFunc ;==>_MouseOverTabItem

    [/autoit]
  • Basis-Client für IRC-Chat

    • BugFix
    • 15. April 2010 um 09:12

    Ich hatte mich mal damit befasst, es dann aber bleiben lassen. Grund: SSL im IRC ist totaler Schwachsinn. Das gibt dir eine Pseudosicherheit, die definitiv nicht vorhanden ist.
    SSL macht nur bei End-To-End Verbindungen Sinn. Gerade das ist aber im IRC-Netz nicht der Fall.
    Eine Verschlüsselung mit der Fish.dll wäre sinnvoll - aber demgegenüber steht die Bequemlichkeit der User.
    Wenn du möchtest, kannst du dich gern damit befassen, ich werde keine weiteren Anstrengungen in der Richtung unternehmen.

  • StringReplace Zeilenumbruch erhalten

    • BugFix
    • 15. April 2010 um 08:28

    Es werden keine Zeilenumbrüche gelöscht - der Text enthält nämlich gar keine! :D
    "description" steht in einer einzigen Zeile.

  • Statistik Webzugriffe

    • BugFix
    • 14. April 2010 um 20:29

    Ich habe ja Tuts etc. auf meinem Webspace abgelegt. Nun habe ich mir mal die Statistik des Vorjahres und des laufenden Jahres angesehen. Recht interessant, wenn man mal betrachtet aus welchen Regionen der Welt Zugriffe erfolgten.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    Besucher2009.jpg 114,46 kB – 0 Downloads Besucher2010_04.jpg 78,7 kB – 0 Downloads Zugriffe2009.jpg 45,04 kB – 0 Downloads Zugriffe2010_04.jpg 45,58 kB – 0 Downloads
  • HotKeySet - AutoIt soll Taste gedrückt halten

    • BugFix
    • 14. April 2010 um 18:49

    Du mußt das KeyEvent direkt auslösen.
    Das Aufrufen dieser Funktion klappt aber nicht in jedem Fall über HotKeys. Wenn SHIFTDOWN aktiv ist, wird der HotKey zum Aufheben nicht mehr registriert. Deshalb muß auch die HotKey-Abfrage innerhalb der Hook-Prozedur erfolgen.:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    OnAutoItExitRegister('_OnExit')
    HotKeySet('#!e', '_Exit') ; Win+Alt+e zum Programm beenden
    Opt('MustDeclareVars', 1)
    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
    Global $isShift = False

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _OnExit()
    If $isShift Then _keybd_event(0x10, 0x2) ; beim Programmende auf jeden Fall Shift zurücksetzen
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
    Exit
    EndFunc

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS, $vkCode
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
    If $wParam = $WM_KEYDOWN Then
    Switch $vkCode
    Case 101 ; NUMPAD 5
    If $isShift Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    _keybd_event(0x10)
    $isShift = True
    Return -1
    Case 104 ; NUMPAD 8
    If Not $isShift Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    _keybd_event(0x10, 0x2)
    $isShift = False
    Return -1
    EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

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

    Func _keybd_event($vkCode, $Flag=0)
    DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', $Flag, 'ptr', 0)
    EndFunc

    [/autoit]
  • RegEnumKey und mehrer zeichenfolgen abfragen??

    • BugFix
    • 14. April 2010 um 15:33

    ;) zweites Klammernpaar vergessen, aber das sagt doch auch die Fehlermeldung genau.
    $keys[1][2] = [['']]

  • RegEnumKey und mehrer zeichenfolgen abfragen??

    • BugFix
    • 14. April 2010 um 13:35

    Einfach in einem Array hinterlegen und durchlaufen:

    Spoiler anzeigen
    [autoit]

    Local $keys[1][4] ; <== zweite Dimension nach Anzahl der zu lesenden Schlüssel
    ;...
    ;...

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

    Local $aReadKey[4] = ["vendor","Version","status","Installdate"]
    ; Du kannst auch $aReadKey als 2D verwenden und nicht gewollte Werte zu den Schlüsseln schreiben (also: ['status','RC0'])
    For $i = 0 To UBound($keys) -1
    For $j = 0 To UBound($aReadKey) -1
    $regkey = RegRead($startkey & "\" & $keys[$i][0], $aReadKey[$j]) ; od. $aReadKey[$j][0]
    If @error Then ContinueLoop
    ;~ If $regkey <> $aReadKey[$j][1] Then
    $keys[$i][$j] = $regkey
    ;~ EndIf
    Next
    Next

    [/autoit]
  • StringReplace Zeilenumbruch erhalten

    • BugFix
    • 14. April 2010 um 13:04
    Zitat von MrB

    leider gehen alle Zeilenumbrüche dabei verloren!

    Dazu brauchen wir schon deinen Code. _StringBetween killt definitiv keine Zeilenumbrüche, der Fehler liegt dann an anderer Stelle.

  • Proble mit NomadMemory

    • BugFix
    • 14. April 2010 um 12:58
    Zitat von Aldi

    sondern einen leeren Sting -_-

    Sicher? - Returnwert ist nämlich ein Array. ;)

  • RegEnumKey und mehrer zeichenfolgen abfragen??

    • BugFix
    • 14. April 2010 um 12:52

    So sollte es funktionieren (Du hattest die Schleife verlassen, falls 'Status' nicht gelesen wird, du mußt aber fortsetzen).

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Local $keys[1][2] = [''], $startkey ="HKEY_LOCAL_MACHINE\SOFTWARE\MeineSoftware\", $string = "RC0"

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

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error Then ExitLoop
    If $keys[UBound($keys) -1][0] <> '' Then ReDim $keys[UBound($keys) +1][2]
    $keys[UBound($keys) -1][0] = $var
    Next

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

    For $i = 0 To UBound($keys) -1
    $regkey = RegRead($startkey & "\" & $keys[$i][0], "Status")
    If @error Then ContinueLoop ; falls für den Schlüssel kein 'Status' vorhanden ==> nächsten Schlüssel lesen
    If $regkey <> $string Then
    $keys[$i][1] = $regkey
    EndIf
    Next

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

    ; ==> Das folgende ist unnütz, da du nur dann Werte einträgst, wenn der Wert <> 'RC0' ist
    ;~ For $i = Ubound($keys) -1 To 0 Step -1
    ;~ If $keys[$i][1] = 'RC0' Then _ArrayDelete($keys, $i)
    ;~ Next

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

    _ArrayDisplay ($keys)

    [/autoit]


    Im Moment liest du aber nur 'Status' aus - ist das gewollt?

  • kann man irgendwie dds datein öfnen

    • BugFix
    • 13. April 2010 um 23:09

    Ich vermute mal, du meinst: Direct Draw Surface - Dateien.
    Was willst du denn damit anfangen? Bloß öffnen sicher nicht :D.

    Nur betrachten kannst du hiermit.

  • Dll Problem

    • BugFix
    • 13. April 2010 um 21:45

    Hier steht was dazu: http://www.autoitscript.com/forum/index.php?showtopic=85618&view=findpost&p=784491

  • Programmdatenbank (SQLite)

    • BugFix
    • 13. April 2010 um 21:25

    Es ist korrekt, dass die absolute Obergrenze bei 64k liegt. Aber in allen Publikationen wird davon abgeraten INI-Dateien größer als 32k werden zu lassen. ;)

  • Next with no matching For Statement

    • BugFix
    • 13. April 2010 um 09:19
    Zitat von autoitinstallermaker

    Das Programm läuft seltsamerweise nicht richtig ab, wenn ich jedes IF einzelnt schließe. Ich bin da echt am verzweifeln ;(

    Deine Logik können wir nicht nachvollziehen. Deshalb immer sauber einrücken, dann wird das klar.
    Kann ja sein, dass du folgendes möchtest:

    [autoit]

    If WinExists("Novell GroupWise - Mailbox") Then
    WinClose("Novell GroupWise - Mailbox")
    Sleep(5000)
    If WinExists("Dialogfeld") Then
    WinClose("Dialogfeld")
    Sleep(2000)
    MsgBox(1,"Fehlgeschlagen","Fehlgeschlagen")
    EndIf
    EndIf

    [/autoit]

    Aber das können wir nicht erahnen. Du mußt ja wissen, wann welche Dialoge erscheinen und danach deine Programmlogik gestalten.

  • Programmdatenbank (SQLite)

    • BugFix
    • 13. April 2010 um 08:43

    Die Programm-Idee ist gut.
    Aber die Wahl einer INI-Datei als 'Datenbank' ist etwas unglücklich. Eine INI hat ein Größenlimit von 32k, das ist mit einer DB schnell erreicht. Auch fehlt die Möglichkeit zu komplexen, kombinierten Abfragen.
    Wenn schon kein SQLite verwendet wird, dann nutze besser eine normale Textdatei. Das findet z.B. in 'cfg'-Dateien Anwendung in der Art:
    Eintrag=param1;param2;param3;.....

  • Problem mit Array Schleife

    • BugFix
    • 11. April 2010 um 18:11

    1. In einer Schleife ist das Quatsch
    2. Hilfe mal lesen zu IniWriteSection: "...Wenn die Daten ein Array sind, dann muss das Array ein zweidimentionales Array sein und die zweite Dimension muss 2 Elemente beinhalten."

  • [Beendet] µitLight April - Mitte Juni

    • BugFix
    • 11. April 2010 um 16:50
    Zitat von MatthiasG.

    Dann nutze ich doch das Cheatengine und manipuliere den Wert oder lese ihn aus.


    Ja das steht doch nicht im Widerspruch zu dem, was ich sagte. Als Ersteller des Captchas wird man es immer knacken könne, absolut easy - man weiß ja wo man suchen muß. Darum kann man selbst den Wert des Captchas nicht überprüfen.
    Und eine allgemeingültige Prüfung ist nicht durchführbar, es gibt einfach keine vergleichbaren Kriterien. Wie schon mehrfach angesprochen - die Wertung kann nur subjektiv erfolgen.

  • Befehle unter Linux hinzufügen?

    • BugFix
    • 11. April 2010 um 10:53

    Auf diese Fragestellung wirst du kaum eine aufschlußreiche Antwort bekommen.
    Wer oder was arbeitet denn mit dem Linux-OS (Kaffeemaschine, Staubsauger, Wäschetrockner... :D ) und was verstehst du unter "Befehle hinzufügen" ? :wacko:

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™