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

Beiträge von kaesereibe

  • 2 Ethernet-Adapter Mac Adressen anzeigen auswerten

    • kaesereibe
    • 7. März 2017 um 07:48

    Warum benutzt ihr eigtl. immer dieses lahme WMI wenn es auch über die WinAPI geht?

    -> GetAdaptersInfo function
    -> IP_ADAPTER_INFO structure

    Sollte ja als Tipp reichen und für den einen oder anderen nicht so schwer sein umzusetzen ;)

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • kaesereibe
    • 22. September 2016 um 08:02

    Auf der Windows API Index Seite wird uns ja nahegelegt:

    Zitat von msdn

    Deprecated or legacy APIs
    The following are technologies and APIs that are outdated or have been replaced or deprecated from the Windows client and server operating systems.

    - Graphics Device Interface (GDI): Use Direct2D instead.
    - GDI+: Use Direct2D instead.


    Habt ihr das mal mit Direct2D probiert?


    Was man aber noch machen kann um es ein bisschen zu beschleunigen, ist neben LoadLibrary auch GetModuleHandle und GetProcAdress zu benutzen, um die ganzen Funktionen ein bisschen schneller aufrufen zu können.

  • Lange Initialisierungszeit der ArrayList, wie vermeiden?

    • kaesereibe
    • 13. September 2016 um 08:26
    AutoIt
    Global $TimerObjCreate = TimerInit()
    Global $AList = ObjCreate("System.Collections.ArrayList")
    ConsoleWrite("Initialization Time : " & TimerDiff($TimerObjCreate) & @CRLF)
    
    
    Global $TimerFirstAdd = TimerInit()
    $AList.add("Some Data")
    ConsoleWrite("First Write Time    : " & TimerDiff($TimerFirstAdd) & @CRLF)
    
    
    Global $TimerSecondAdd = TimerInit()
    $AList.add("Some other Data")
    ConsoleWrite("Second Write Time   : " & TimerDiff($TimerSecondAdd) & @CRLF)
    
    
    Global $TimerThirdAdd = TimerInit()
    $AList.add("Some more Data")
    ConsoleWrite("Third Write Time    : " & TimerDiff($TimerThirdAdd) & @CRLF)
    Alles anzeigen
    Code
    Initialization Time : 12.3057350945263
    First Write Time    : 1.58978499292244
    Second Write Time   : 0.0186291191761843
    Third Write Time    : 0.0135211348859402


    =============================================================================================
    Habs auch mal mit AutoHotkey probiert:

    Spoiler anzeigen
    Code
    #NoEnv
    SetBatchLines -1
    
    
    global TIMER_INIT := TIMER_ARR_1 := TIMER_ARR_2 := TIMER_ARR_3 := 0
    
    
    
    
    QPC(1)
    ArrList := ComObjCreate("System.Collections.ArrayList")
    TIMER_INIT := QPC(0)
    
    
    
    
    QPC(1)
    ArrList.Add("Some Data")
    TIMER_ARR_1 := QPC(0)
    
    
    
    
    QPC(1)
    ArrList.Add("Some other Data")
    TIMER_ARR_2 := QPC(0)
    
    
    
    
    QPC(1)
    ArrList.Add("Some more Data")
    TIMER_ARR_3 := QPC(0)
    
    
    
    
    MsgBox % TIMER_INIT "`n" TIMER_ARR_1 "`n" TIMER_ARR_2 "`n" TIMER_ARR_3
    
    
    
    
    QPC(R := 0)
    {
        static P := 0, F := 0, Q := DllCall("QueryPerformanceFrequency", "Int64P", F)
        return !DllCall("QueryPerformanceCounter", "Int64P", Q) + (R ? (P := Q) / F : (Q - P) / F)
    }
    Alles anzeigen
    Code
    Initialization Time : 10.9521
    First Write Time    :  0.3085
    Second Write Time   :  0.0036
    Third Write Time    :  0.0020


    Erstelle ich das Array aber auf normalem Wege (ohne System.Collections.ArrayList) sieht es ganz normal aus

    Spoiler anzeigen
    Code
    #NoEnv
    SetBatchLines -1
    
    
    global TIMER_INIT := TIMER_ARR_1 := TIMER_ARR_2 := TIMER_ARR_3 := 0
    
    
    
    
    QPC(1)
    ArrList := []
    TIMER_INIT := QPC(0)
    
    
    
    
    QPC(1)
    ArrList.Push("Some Data")
    TIMER_ARR_1 := QPC(0)
    
    
    
    
    QPC(1)
    ArrList.Push("Some other Data")
    TIMER_ARR_2 := QPC(0)
    
    
    
    
    QPC(1)
    ArrList.Push("Some more Data")
    TIMER_ARR_3 := QPC(0)
    
    
    
    
    MsgBox % TIMER_INIT "`n" TIMER_ARR_1 "`n" TIMER_ARR_2 "`n" TIMER_ARR_3
    
    
    
    
    QPC(R := 0)
    {
        static P := 0, F := 0, Q := DllCall("QueryPerformanceFrequency", "Int64P", F)
        return !DllCall("QueryPerformanceCounter", "Int64P", Q) + (R ? (P := Q) / F : (Q - P) / F)
    }
    Alles anzeigen
    Code
    Initialization Time : 0.0007
    First Write Time    : 0.0006
    Second Write Time   : 0.0002
    Third Write Time    : 0.0002
  • Netzwerkadapter auslesen

    • kaesereibe
    • 13. September 2016 um 07:53

    Oder mit der WinAPI InternetGetConnectedState

    AutoIt
    $ret = DllCall("wininet.dll", "int", "InternetGetConnectedState", "dword*", 0x40, "dword", 0)
    
    
    MsgBox(0, "Netzwerkstatus", "Netzwerk-Konnektivität:   " & ($ret[0] ? "An" : "Aus"))
  • Computer Startuptime auslesen und in Array schreiben

    • kaesereibe
    • 6. September 2016 um 13:21

    Herunterfahren über:
    Windows Icon => Rechtsklick => Herunterfahren oder abmelden => Herunterfahren

  • Computer Startuptime auslesen und in Array schreiben

    • kaesereibe
    • 6. September 2016 um 12:39

    Ich fahre mein PC jeden Tag hoch und runter =)

  • Computer Startuptime auslesen und in Array schreiben

    • kaesereibe
    • 6. September 2016 um 08:23

    06.09.2016 - 08:22 hier. Wusste gar nicht, dass mein PC erst in der Zukunft startet (08.10.2016 - 08:43) :D

    selbst wmic os get lastbootuptime & net statistics workstation gibt bei mir dieses merkwürdiges Datum zurück 8|
    windows 10 halt...

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • kaesereibe
    • 9. August 2016 um 07:32

    Zu Befehl :D

    Im Anhang:
    - Runde_3.ahk
    - Runde_3_x64.exe
    - Runde_3_x86.exe

    Dateien

    Runde3.7z 720,87 kB – 581 Downloads
  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • kaesereibe
    • 8. August 2016 um 15:23

    Bin mal so frei, eine andere Scriptsprache für das Bsp. #3 hinzuzufügen. Aber bitte nicht Steinigen :D

    Code
    #NoEnv
    #SingleInstance Force
    SetBatchLines -1
    
    
    global hToken := hCanvas := hPen := X1 := X2 := Y1 := Y2 := CountStart := CountEnd := 0
    global GuiW := 1000, GuiH := 600, Rounds := 20000, GuiTitle := "GDI+ Performance Test"
    global Q := DllCall("QueryPerformanceFrequency", "int64*", Frequency)
    
    
    ; ===============================================================================================================================
    
    
    if !(DllCall("GetModuleHandle", "str", "GdiPlus", "ptr"))
        hGDIPLUS := DllCall("LoadLibrary", "str", "GdiPlus.dll", "ptr")
    VarSetCapacity(SI, 24, 0), Numput(1, SI, 0, "Int")
    if !(DllCall("GdiPlus.dll\GdiplusStartup", "ptr*", hToken, "ptr", &SI, "ptr", 0))
        hToken := hToken
    
    
    ; ===============================================================================================================================
    
    
    Gui, +LastFound +hwndGDIExample
    Gui, Show, % "w" GuiW " h" GuiH, % GuiTitle
    
    
    DllCall("GdiPlus.dll\GdipCreateFromHWND", "ptr", GDIExample, "ptr*", hCanvas)
    DllCall("Gdiplus.dll\GdipSetSmoothingMode", "ptr", hCanvas, "uint", 4)
    DllCall("Gdiplus.dll\GdipCreatePen1", "uint", 0xFFFFFFFF, "float", 1, "int", 2, "ptr*", hPen)
    DllCall("GdiPlus.dll\GdipGraphicsClear", "ptr", hCanvas, "uint", 0xFF000000)
    
    
    DllCall("QueryPerformanceCounter", "int64*", CountStart)
    
    
    loop % Rounds
    {
        X1 := FRandom() * GuiW, X2 := FRandom() * GuiW, Y1 := FRandom() * GuiH, Y2 := FRandom() * GuiH
        , DllCall("GdiPlus.dll\GdipSetPenColor", "ptr", hPen, "uint", 0xFF000000 + IRandom())
        , DllCall("GdiPlus.dll\GdipDrawLine", "ptr", hCanvas, "ptr", hPen, "float", X1, "float", Y1, "float", X2, "float", Y2)
    }
    
    
    DllCall("QueryPerformanceCounter", "int64*", CountEnd)
    
    
    WinSetTitle, % GuiTitle " / Created " Rounds " lines in " Round((CountEnd - CountStart) * 1000 / Frequency, 2) " ms."
    return
    
    
    ; ===============================================================================================================================
    
    
    GuiClose:
    GuiEscape:
        DllCall("GdiPlus.dll\GdipDeletePen", "ptr", hPen)
        DllCall("GdiPlus.dll\GdipDeleteGraphics", "ptr", hCanvas)
        DllCall("GdiPlus.dll\GdiplusShutdown", "ptr", hToken)
        DllCall("FreeLibrary", "ptr", hGDIPLUS)
    ExitApp
    
    
    ; ===============================================================================================================================
    
    
    FRandom()
    {
        SetFormat, FloatFast, 0.15
        Random, rand, 0.0, 1.0
        return rand
    }
    
    
    IRandom()
    {
        Random, rand, 0, 0xFFFFFF
        return rand
    }
    Alles anzeigen

    Dadurch, dass aber weder AutoIt noch Autoh... konstante Werte zurückgeben (bei mir ca. 20000 - 38000 ms) lässt sich das schlecht vergleichen.

  • Seltsames Leuchten in den Wolken

    • kaesereibe
    • 15. Juli 2016 um 08:53

    [Blockierte Grafik: http://cdn.playbuzz.com/cdn/3e3cf0a5-34af-4f50-a900-e7b664788376/6ee963f7-4b85-4689-807c-deaab83b2e89.gif]

    :P:P:P

  • GPU Auslastung auslesen

    • kaesereibe
    • 1. März 2016 um 07:52

    Hier ist ein Beispiel in AutoH... AHK_NVIDIA_NvAPI

    Das was du brauchst musst du halt in AutoIt umschreiben.

  • Dllcall geht nur teilweise

    • kaesereibe
    • 17. Februar 2016 um 13:28

    Probier doch mal mit der DefWindowProc Function:

    AutoIt
    ; POWER ON
    DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", WinGetHandle('[CLASS:Progman]'), "uint", 0x0112, "wparam", 0xF170, "lparam", -1)
    
    
    ; SCHLAF MODUS
    DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", WinGetHandle('[CLASS:Progman]'), "uint", 0x0112, "wparam", 0xF170, "lparam", 1)
    
    
    ; POWER OFF
    DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", WinGetHandle('[CLASS:Progman]'), "uint", 0x0112, "wparam", 0xF170, "lparam", 2)


    Edit:

    Ist ein bisschen buggy das Ganze. Mal gehts, mal gehts nicht.

    AutoIt
    DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", _WinAPI_GetDesktopWindow(), "uint", 0x0112, "wparam", 0xF170, "lparam", -1)


    Was aber bei mir zu 100% funktioniert hat, ist ein MouseClick oder MouseMove um den Monitor zurück zu holen (Hardware seitig)

  • Func innerhalb Func möglich?

    • kaesereibe
    • 17. Januar 2016 um 17:19

    Klassen sind schon was feines für sowas :P
    Aber dafür verwende ich nen "Ableger*" von AutoIt


    *Vorsicht.. Ban Grund im Main- (Eng) Forum alleine für die Erwähnung... haha :D
    (Beide haben ihre Vor- und Nachteile und ich benutze beide)

  • CCleaner-Starter

    • kaesereibe
    • 14. Januar 2016 um 07:48

    1. Zum starten brauchst du kein Script was dir die Buttons drückt.
    Unter Einstellungen findest du den Punkt "CCleaner starten" über Papierkorb.
    Einfach aktivieren und mit Rechtsklick auf dein Papierkorb kannst du den CCleaner starten.

    [Blockierte Grafik: https://i.imgur.com/00MWPLu.png]

    2. Auch für das Herunterfahren nach dem Reinigen brauchst du dafür kein Script.
    Einfach unter Einstellungen => Erweitert den Haken "Nach Bereinigung" herunterfahren aktivieren.

    [Blockierte Grafik: https://i.imgur.com/IzI7JdK.png]

  • schlafen mit sleep oder besser?

    • kaesereibe
    • 2. Dezember 2015 um 14:23

    Ungetestet für deinen speziellen Fall zwecks durchreichen.
    Aber evtl. mit der WM_DEVICECHANGE message. (Notifies an application of a change to the hardware configuration of a device or the computer.)

  • Input mit grauem Infotext - auch wenn Fokus auf Input

    • kaesereibe
    • 25. November 2015 um 09:32

    EM_SETCUEBANNER message (0x1501)
    wParam: TRUE if the cue banner should show even when the edit control has focus; otherwise, FALSE. FALSE is the default behavior—the cue banner disappears when the user clicks in the control.

    Ergo GUICtrlSendMsg($cIn, 0x1501, 1, "Bitte Web-Adresse oder Suchtext eingeben") sollte reichen


    p.s.: für ComboBox gibt es die CB_SETCUEBANNER message (0x1703) dort gibt es allerdings nur Zero als wParam

  • _WinAPI_GetLastError_Description( ) statt _WinAPI_GetLastError( )

    • kaesereibe
    • 25. November 2015 um 07:53

    Wie AspirinJunkie gesagt hatte:

    Dafür gibt es die FormatMessage function. Diese wandelt den ErrorCode der GetLastError function in eine Fehlerbeschreibung um.
    Diese Ausgabe entspricht den System Error Codes (auch in deutsch).

  • Selbstschutz mit AutoIT

    • kaesereibe
    • 16. Oktober 2015 um 15:54

    Du kannst das Ganze aber auch als "Dienst" oder "Aufgabenplanung" laufen lassen und somit es immer wieder starten wenn nicht vorhanden.

    Btw. wenn du bei "Usern" eine Antiviren-Software installiert hast und die über einen Server verwaltest, haben diese "User" nicht die Möglichkeit dieses Antivieren-Programm zu schließen oder den Scan-Task abzubrechen.
    Und dass das bei Kaspersky zu 100% so ist weiß ich, da wir es selbst mal im Einsatz hatten.

    Und inwiefern solch ein Support (in diesem Forum) hier gegen die Foren-Regeln verstößt, kann ich dir nicht sagen..

  • Alternative Hash Funktion für MD4, MD5 & SHA-1

    • kaesereibe
    • 16. Oktober 2015 um 15:39

    Dann weiß ich ja, dass ich zukünftig die Crypt-Lib nicht mehr benutze, wenn ich einen einfachen Hash wie MD5 oder SHA-1 brauche. ;)

  • Selbstschutz mit AutoIT

    • kaesereibe
    • 16. Oktober 2015 um 15:33

    Ja es ist Möglich dein Code in einen anderen Prozess oder .dll zu "injizieren" (inject).

    Das benötigt aber ein bisschen Hintergrundwissen.
    Daher rate ich dir, wenn du es wirklich vorhast (was das rechtliche angeht kann ich dir nichts dazu sagen), aufgrund meiner genannten Wörter dich ein wenig ein zu lesen.

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™