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

Beiträge von Bitnugger

  • Url im Hintergrund öffnen und wieder schließen

    • Bitnugger
    • 24. September 2021 um 13:15
    Zitat von Buscape23

    Und zwar würde ich gern ein Relais durch das aufrufen einer URL Seite ansteuern.

    Wenn du uns sagst, was genau das für ein Relais ist, könnten wir dir sicher besser helfen... habe auch ein paar IO-Module (ETH484 - 4 x 16A ethernet relay) mit Relais und die steuere ich "in etwa" so an, wie funkey es gezeigt hat. TCPRecv macht nur Sinn, wenn du die Antwort auch auswertest.

  • Möglich oder nicht? Zeitwert aus einem Programm im Hintergrund auslesen und in ein neues Script schreiben

    • Bitnugger
    • 24. September 2021 um 00:08
    Zitat von mikush

    Selbst die Beispiele funtionieren nicht.

    Wenn du die an den entsprechenden Stellen nicht angepasst hast, kann es das auch nicht: Benutzername, Passwort und die zu startende Anwendung (inkl. Pfad).

    Was bekommst du denn an Ausgabe von den Beispielen?

    Zitat von mikush

    Lokal funktioniert es aber (mit Administratorrechten).

    Ohne Administratorrechte funktioniert es nicht? Dann muss du das AutoIt-Script natürlich auch mit administrativen Rechten starten oder RunAs(...) benutzen.

    Wenn ich nicht weiß, welcher Fehler aufgetreten ist, kann ich dir auch nicht sagen, was da falsch läuft... du lieferst ja keine brauchbaren Infos und auch kein Script. Zumindest die Zeile mit dem Run() solltest du uns zeigen...

    Zitat von mikush

    Oder liegt es daran, daß ich nur die Home-Version von Windows 10 habe?

    Das heißt nicht Home-Version, sondern Home-Edition... und nein, damit hat es nichts zu tun.

    Das ist oftmals der Fehler:

    Resolve "Access is Denied" using PSExec with a Local Admin Account

    • Open RegEdit on your remote server.
    • Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System.
    • Add a new DWORD value called LocalAccountTokenFilterPolicy.
    • Set its value to 1.
    • Reboot your remove server.
  • Möglich oder nicht? Zeitwert aus einem Programm im Hintergrund auslesen und in ein neues Script schreiben

    • Bitnugger
    • 23. September 2021 um 21:32
    Zitat von mikush

    Verdammt, das war's mit dem Altersbonus ;( .

    Den gibt es hier eh erst ab 80 und auch nur in Begleitung der Eltern. 8o Der Durchschnitt mag wohl bei 30 liegen, aber wir haben hier auch User, die schon über 80 sind!

    Zitat von mikush

    Wenn das Script auf dem Zielrechner nicht allzu viel Last erzeugt wäre ein Dauerlauf kein Problem.

    Das würde keine spürbare Last erzeugen, aber so musst du immer an zwei Stellen ein Auge haben und bei Anpassungen evtl. an beiden Scripten Änderungen vornehmen. psexec muss nicht auf den Zielrechnern installiert sein und ja, psexec kannst du wie auch alle anderen Programme via AutoIt mit Run(...) oder RunWait(...) starten.

    Hier ein Bsp.:

    AutoIt
    ;-- TIME_STAMP   2021-09-23 21:21:04
    
    #include <AutoItConstants.au3>
    
    _psexec_demo()
    
    Func _psexec_demo()
        ; \\Server = \\192.168.178.31 (mein Mini-Server)
        ; psexec.exe muss im Suchpfad liegen, oder der Pfad zu psexec.exe muss mit angegeben werden: "F:\Progdir\wscc\SysInternals Suite\PsExec.exe"
    
        Local $sOutput, $iPID
    
        $iPID = Run('psexec.exe \\Server -accepteula -nobanner -i -u mikush -p Geheim0815! -n 30 -h "\\Server\c\Program Files (x86)\Chocolatey GUI\ChocolateyGui.exe"', '', @SW_SHOW, BitOR($STDERR_CHILD, $STDOUT_CHILD))
    ;~     $iPID = Run('psexec.exe \\192.168.178.31 -accepteula -nobanner -i -u mikush -p Geheim0815! -n 30 -h "\\192.168.178.31\c\Program Files (x86)\Chocolatey GUI\ChocolateyGui.exe"', '', @SW_SHOW, BitOR($STDERR_CHILD, $STDOUT_CHILD))
        If $iPID Then
            ProcessWaitClose($iPID) ; warten bis psexec beendet wurde
            $sOutput = StdoutRead($iPID) ; wenn kein Fehler aufgetreten ist, sollte die Ausgabe eigentlich via StdoutRead gelesen werden können, ist aber bei psexec nicht der Fall...
            ConsoleWrite('> StdoutRead('&$iPID&')' & @CRLF & $sOutput & @CRLF & '------------------------' & @CRLF)
    
            $sOutput = StderrRead($iPID) ; obwohl error code 0, muss die Ausgabe via StderrRead gelesen werden...
            ConsoleWrite('! StderrRead('&$iPID&')' & @CRLF & $sOutput & @CRLF & '------------------------' & @CRLF)
            ; das fangen wir dann einfach so ab...
            If StringInStr($sOutput, 'with error code 0.') Then ConsoleWrite('+ Es ist kein Fehler aufgetreten!' & @CRLF & '------------------------' & @CRLF)
    
        Else
            ConsoleWrite('! Fehler bei Run() - psexec.exe konnte nicht ausgeführt werden!' & @CRLF)
        EndIf
    EndFunc
    Alles anzeigen
  • Möglich oder nicht? Zeitwert aus einem Programm im Hintergrund auslesen und in ein neues Script schreiben

    • Bitnugger
    • 23. September 2021 um 01:42
    Zitat von mikush

    Noch ein Programm in der Kette will ich eigentlich vermeiden.

    Verstehe dich... und auch ich bin mittlerweile 3x 20... aber mit AutoIt wüßte ich nicht, wie man das lösen kann, ohne dass auf dem Zielrechner ein Script ständig im Hintergrund läuft, dass man dann z.B. via UDP/TCP ansprechen kann, damit es ein Script startet - psexec ist dafür wirklich die optimale Lösung.

  • Möglich oder nicht? Zeitwert aus einem Programm im Hintergrund auslesen und in ein neues Script schreiben

    • Bitnugger
    • 22. September 2021 um 23:57
    Zitat von mikush

    Einfach ausgedrückt, ich suche einen Remote Programmaufruf.

    PsExec - Windows Sysinternals
    Execute processes on remote systems.
    docs.microsoft.com
  • sql Einlesen einer Dateistruktur, wie gelöschte Dateien ermitteln?

    • Bitnugger
    • 21. September 2021 um 22:22
    Zitat von BugFix

    Statt WinAPI kannst Du auch TypeLib nutzen:

    Schön, TypeLib... kannte ich auch noch nicht.

    Verstehe nur nicht, wieso du dafür eine lokale Variable anlegst... macht ja nur Sinn, wenn du das Ergebnis von ObjCreate überprüfen willst.

    AutoIt
    Func _GUID_TypeLib()
        Return ObjCreate("Scriptlet.TypeLib").GUID
    EndFunc  ;==>_GUID_TypeLib
  • emulierte Tastatureingabe eines RFID-Scanners in Variable schreiben

    • Bitnugger
    • 16. September 2021 um 19:42
    Zitat von Oscar

    Was meint ihr dazu?

    Ich würde es auch begrüßen, wenn wir das Thema etwas lockerer sehen, denn wie du bereits gesagt hast, ist es von einem Tastatur-Hook noch ein weiter Weg zu einem (brauchbaren) Keylogger. Für mich klingt das so, als wollte ich jemandem nicht erklären, wie ein Benzinmotor funktioniert, weil er ja sonst ein Auto damit bauen könnte. Auch hier im Forum gibt es einige Scripts, in denen ein Low-Level Tastatur-Hook verwendet wird... streng genommen dürfte es die aber aufgrund der aktuellen Regeln gar nicht geben. Zudem... auch wenn ich einen guten Keylogger habe... muss ich ihn ja irgendwie auf dem Ziel-PC installieren und die Logs dann unbemerkt an mich senden... ohne das dies zurückverfolgbar ist... was dann der weitaus schwierigere Teil wäre.

  • Zeichensatz-Probleme beim Schreiben in MariaDB

    • Bitnugger
    • 16. September 2021 um 18:27
    Zitat von robbytobi

    Grob gesagt ist UTF8 die falsche Wahl. Um zum Ziel zu kommen ist "UTF8MB4" notwendig gewesen.

    Hier findet du auch eine Erklärung dazu, warum dem so ist:

    What is the difference between utf8mb4 and utf8 charsets in MySQL?
    What is the difference between utf8mb4 and utf8 charsets in MySQL? I already know about ASCII, UTF-8, UTF-16 and UTF-32 encodings; but I'm curious to know…
    stackoverflow.com
    Zitat von CodeCaster

    UTF-8 is a variable-length encoding. In the case of UTF-8, this means that storing one code point requires one to four bytes. However, MySQL's encoding called "utf8" (alias of "utf8mb3") only stores a maximum of three bytes per code point.

    So the character set "utf8"/"utf8mb3" cannot store all Unicode code points: it only supports the range 0x000 to 0xFFFF, which is called the "Basic Multilingual Plane". See also Comparison of Unicode encodings.

  • Zeichensatz-Probleme beim Schreiben in MariaDB

    • Bitnugger
    • 15. September 2021 um 21:58
    Zitat von robbytobi

    Allerdings kommen in der DB nun wieder nur Fragezeichen an:

    Wie genau hast du das denn überprüft? - Das Bild unter deinem Text (Content)... wie bist du an den Text aus der DB gekommen und womit hast du ihn wo ausgegeben? Und nein, da kommen keine Fragezeichen an!!!

    Evtl. muss der Text vor dem Senden doch mit einer *MultiByte*-Funktion konvertiert werden... also entweder nach MultiByte oder nach WideChar. Das musst du aber selbst austesten, weil habe kein MariaDB.

    Die Werte für die Statusleiste kannst du in der SciTEUser.properties setzen. Ich habe dir mal meine als Anhang dazugelegt... da findest du sie fast am Ende.

    Dateien

    SciTEUser.7z 9,97 kB – 403 Downloads
  • Bild aus RichEdit mit Windows Standard-App öffnen

    • Bitnugger
    • 15. September 2021 um 21:27

    Da müsste ich mich auch erst mal reinfuchsen... aber evtl. ist dir hiermit auch geholfen:

    AutoIt
    ;-- TIME_STAMP   2021-09-15 21:18:45
    
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiRichEdit.au3>
    
    Global $Main = GUICreate("Main", 871, 752, -1, -1, -1, -1)
    ;~ Global $Rich1 = _GUICtrlRichEdit_Create($Main,"",20,20,692,714,-1,-1)
    Global $Rich1 = _GUICtrlRichEdit_Create($Main, "", 20, 20, 692, 714, BitOR($ES_MULTILINE, $WS_HSCROLL, $WS_VSCROLL, $ES_AUTOHSCROLL, $ES_AUTOVSCROLL))
    Global $Button_Save = GUICtrlCreateButton("Speichern", 721, 20, 100, 30, -1, -1)
    Global $Button_Zoom = GUICtrlCreateButton("Zoom", 721, 70, 100, 30, -1, -1)
    Global $iZoom = 200 ; 100 and 200 to 6400
    
    If FileExists(@ScriptDir & "\RichSave.rtf") Then _GUICtrlRichEdit_StreamFromFile($Rich1, @ScriptDir & "\RichSave.rtf")
    
    GUISetState(@SW_SHOW, $Main)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button_Save
                _GUICtrlRichEdit_StreamToFile($Rich1, @ScriptDir & "\RichSave.rtf")
                If @error Then MsgBox(0, "Achtung", "Fehler beim Speichern: #Error " & @error)
            Case $Button_Zoom
                _GUICtrlRichEdit_SetZoom($Rich1, _GUICtrlRichEdit_GetZoom($Rich1) = $iZoom ? 100 : $iZoom)
        EndSwitch
    WEnd
    Alles anzeigen
  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 15. September 2021 um 20:09
    Zitat von Oscar

    Naja, das ist ja kein Programm zum starten von dutzenden von Funktionen.

    Es geht hier doch nur darum, einen Hotkey zum capturen festzulegen und IMHO sollten die 64 Möglichkeiten doch wohl ausreichen.

    Ja, ok... hast ja Recht... mir persönlich hat die vorherige Version besser gefallen, weil ich da genau den Hotkey festlegen kann, den ich haben will.

    Was du noch ändern könntest... für die HotkeyModifiers (Alt|Ctrl|Shift|Win) kein Combo verwenden, mit dem ich ja nur einen davon auswählen kann, sondern Checkboxen, denn so wäre dann z.B. auch Alt + Ctrl + Shift + F4 möglich.

    Alternativ kannst du für die Auswahl des Hotkey aber auch eine kleine UDF verwenden, mit der dir alle Möglichkeiten offenstehen - (korrigierte) UDF inkl. Demo im Anhang. Link dazu ist im Script hinterlegt.

    Dateien

    Hotkey Control - UDF (msctls_hotkey32).7z 2,94 kB – 319 Downloads
  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 14. September 2021 um 18:13
    Zitat von Oscar

    Ich habe das Programm jetzt dahingehend geändert, dass der Anwender den Hotkey selbst festlegen kann (Tasten begrenzt).

    _SetHotkey funktioniert nicht, wenn PRINTSCREEN bereits von einer anderen Anwendung gesetzt wurde... und hat man es einmal geändert, z.B. auf F4, kann man PRINTSCREEN nicht mehr auswählen, weil es im Combo nicht angezeigt wird.

    Tasten begrenzt... weniger geht ja nicht... was mache ich, wenn ich z. B. Strg + Shift + F4 benötige? Das solltest du aber dringend noch mal überarbeiten... ansonsten - sehr schön!

  • Zeichensatz-Probleme beim Schreiben in MariaDB

    • Bitnugger
    • 14. September 2021 um 14:42

    Wenn du SciTE auf UTF-8 umgestellt hast und der Text in deinem Post #4 in der Scite Editor-Pane korrekt angezeigt wird, darfst du die Zeichen nicht mehr konvertieren. Die sollten dann - so wie sie sind - korrekt in der DB ankommen, da die Quell- und Ziel-Codepage ja gleich sind.

    In der Scite Output-Pane (Consolen-Output wäre in einer CMD) werden die Zeichen ja via ConsoleWrite ausgegeben... und ConsoleWrite konvertiert die Zeichen vor der Ausgabe immer nach ANSI. Deswegen musst du sie hier dann doch konvertieren... s. Bild.

    Wenn diverse Zeichen nicht korrekt, sondern als Fragezeichen angezeigt werden, bedeutet dies, dass diese mit der verwendeten Schriftart nicht darstellbar sind.

    So sollte das auch bei dir aussehen...

    UTF8.png

  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 13. September 2021 um 21:36
    Zitat von BugFix

    Wenn die Strukturen Variablen mit Alias enthalten, finde ich diese Darstellung übersichtlicher:

    Stimmt... muss ich mir endlich mal angewöhnen, vergesse es immer wieder, obwohl es so superpraktisch ist.

    Tweaky

    Dann kannst du folgende Zeile...

    If (@error Or (Abs(DllStructGetData($tRECT, "Left")) + Abs(DllStructGetData($tRECT, "Top")) + _

    Abs(DllStructGetData($tRECT, "Right")) + Abs(DllStructGetData($tRECT, "Bottom"))) = 0) Then

    so ändern...

    If (@error Or (Abs($tRECT.Left) + Abs($tRECT.Top) + Abs($tRECT.Right) + Abs($tRECT.Bottom)) = 0) Then

  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 13. September 2021 um 20:53
    Zitat von Tweaky

    Kann man die Zeile "$bRet = DllCall("dwmapi.dll", "long", "DwmGetWindowAttribute" ..." nicht durch "_WinAPI_DwmGetWindowAttribute(...)" ersetzen?

    Ja kannst du...

    ; needed to get rect when Aero theme is active : Thanks Kafu, Zedna

    $bRet = DllCall("dwmapi.dll", "long", "DwmGetWindowAttribute", _

    "hwnd", $hWnd, _

    "dword", $DWMWA_EXTENDED_FRAME_BOUNDS, _

    "struct*", $tRECT, _

    "dword", DllStructGetSize($tRECT))

    If (@error Or $bRet[0] Or (Abs(DllStructGetData($tRECT, "Left")) + Abs(DllStructGetData($tRECT, "Top")) + _

    Abs(DllStructGetData($tRECT, "Right")) + Abs(DllStructGetData($tRECT, "Bottom"))) = 0) Then

    $tRECT = _WinAPI_DwmGetWindowAttribute($hWnd, $DWMWA_EXTENDED_FRAME_BOUNDS)

    If (@error Or (Abs(DllStructGetData($tRECT, "Left")) + Abs(DllStructGetData($tRECT, "Top")) + _

    Abs(DllStructGetData($tRECT, "Right")) + Abs(DllStructGetData($tRECT, "Bottom"))) = 0) Then

  • Zeichensatz-Probleme beim Schreiben in MariaDB

    • Bitnugger
    • 13. September 2021 um 20:33
    Zitat von robbytobi

    UTF8 als Basis scheint mir geeignet um alle meine Anforderungen abzudecken.

    Ja, denke ich auch, nur in SciTE hast du es wohl nicht eingestellt, denn das arbeitet per Default ja mit der ANSI-Codepage.

    SciTE kannst du auf UTF-8 umstellen, indem du diese Zeilen in der SciTEUser.properties hinzufügst bzw. änderst:

    Code: SciTEUser.properties
    # Internationalisation
    # Unicode
    code.page=65001
    #~ output.code.page=850
    output.code.page=65001
    #~ output.code.page=0

    So sieht das bei mir aus...


    Alternativ sollte es funktionieren, wenn du den String vor dem Absenden an die DB nach UTF-8 konvertierst. Dafür hat die Windows-API ein paar Funktionen:

    _WinAPI_WideCharToMultiByte und _WinAPI_MultiByteToWideChar bzw. _WinAPI_MultiByteToWideCharEx

    Du brauchst dann wohl _WinAPI_WideCharToMultiByte... $iCodePage musst du dann auf 65001 setzen.


    Gun-Food

    Habe soeben einen Fehler entdeckt... bei aufgeklappten Code-Tags wandert das "Code" beim Scrollen der Seite mit, was aber eigentlich nicht sein sollte.

    Hier ein Bild, um es verständlich zu machen:

    Code.png

  • Servus vom Robbytobi

    • Bitnugger
    • 13. September 2021 um 18:40

    Herzlich willkommen!

    Erinnert mich an meine Anfänge hier... war etliche Jahre auch nur passiver Mitleser und schon recht fit mit AutoIt, als ich mich hier angemeldet hatte, um quasi als Dank für das geteilte Wissen auch mal anderen helfen zu können.

  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 13. September 2021 um 17:20

    Sehr schön...

    Bei HotKeySet prüfe ich übrigens mittlerweile immer, ob es funktioniert hat... PRINTSCREEN ist bei mir schon vergeben und ich hatte beim ersten Start min. 5 min gebraucht, bis ich das geschnallt habe.

    HotKeySet('{PRINTSCREEN}', '_Capture') ; Capture-Hotkey festlegen (hier: [Drucken])

    If Not HotKeySet('{PRINTSCREEN}', '_Capture') Then Exit MsgBox(16, @ScriptName, 'Capture-Hotkey "{PRINTSCREEN}" konnte nicht gesetzt werden!')

  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 12. September 2021 um 19:46
    Zitat von Oscar

    Bei mir ist zwar der primäre Bildschirm links, aber das sollte wohl keine Rolle spielen.

    Anscheinend wohl doch... stelle ich es bei mir so um, dass Anzeige 1 auf der rechten Seite ist (was ja nicht der Fall ist), klappt es auch bei mir. Du kannst die Anordnung der Bildschirme ja mal temporär bei dir umstellen... dann wirst du es selbst sehen.

    In der Funktion _Capture habe ich testweise mal folgende Zeile geändert...

    $hCapture = _ScreenCapture_CaptureWnd('', $hWnd, 0, 0, -1, -1, $bCursor)

    Local $tRECT = _WinAPI_GetWindowRect($hWnd)

    $hCapture = _ScreenCapture_Capture('', DllStructGetData($tRECT, 1), DllStructGetData($tRECT, 2), DllStructGetData($tRECT, 3), DllStructGetData($tRECT, 4), $bCursor)

    ...so wird immer nur ein Fenster angezeigt, allerdings stimmt es dann mit dem Border nicht mehr... daran kannst du aber sehen, dass da was mit den Berechnungen bei _ScreenCapture_CaptureWnd falsch läuft.

    Im Else-Zweig machst du $hCapture zu einer lokalen Variable... warum?

  • Kleines AutoIt-Capture Programm

    • Bitnugger
    • 11. September 2021 um 18:55
    Zitat von Oscar

    Das habe ich mal geändert. Die neue Version (Post #1) funktioniert jetzt auch mit mehreren Monitoren.

    Nein, auch jetzt funktioniert es nicht mit mehreren Monitoren und an den _ScreenCapture-Funktionen hast du ja auch nichts geändert.


    Anzeige 1: -1920,     0,     0,  1080 - sekundärer Bildschirm (Totoal Commander)

    Anzeige 2:     0,     0,  1920,  1080 - primärer Bildschirm (SciTE)

    Ganzer Bildschirm

    - funktioniert auf beiden Monitoren korrekt

    Aktives Fenster

    - auf Anzeige 1: funktioniert korrekt, wenn das Fenster nicht maximiert ist, andernfalls werden beide Bildschirme angezeigt

    - auf Anzeige 2: funktioniert immer korrekt

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™