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

Beiträge von Schumi

  • _WinAPI_ComputeCrc32 mit _ScreenCapture_CaptureWnd ?

    • Schumi
    • 28. März 2015 um 21:42

    Hallo zusammen,
    ich möchte doch noch einen letzten Versuch starten.
    Vor kurzem hatte ich ja mal angefragt, wie man das hier " PixelChecksum von _ScreenCapture_CaptureWnd ? " hinbekommt.

    Jetzt habe ich hier " http://autoit-script.ru/index.php?topic=8701.0 " noch eine Idee gefunden.

    Spoiler anzeigen
    [autoit]


    #Include <APIConstants.au3>
    #Include <ScreenCapture.au3>
    #Include <WinAPIEx.au3>

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

    ;Quelle: http://autoit-script.ru/index.php?topic=8701.0

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

    Dim $pBit, $hDib, $hBitmap

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

    ;Variablen für das Fenster
    Global $Fenster = "Mein Fenster..."
    $handle = WinGetHandle($Fenster, "")
    WinActivate($handle)

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

    ; Ermittelt das Handle der 1. Statuszeile, welches "Text" als Bild enthält.
    $Statushandle = ControlGetHandle($Fenster, "", "[CLASS:...; INSTANCE:1]")

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

    ; speichert den Screenshot von einem Fenster
    $hBitmap = _ScreenCapture_CaptureWnd("", $Statushandle, 145, 0, -1, -1, False)

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

    $tSize = _WinAPI_GetBitmapDimension($hBitmap)
    $hDC = _WinAPI_CreateCompatibleDC(0)
    ;For $i = 0 To 1
    $hDib = _WinAPI_CreateDIB(DllStructGetData($tSize, 1), DllStructGetData($tSize, 2), 24)
    $pBit = _WinAPI_GetExtended()
    $hSv = _WinAPI_SelectObject($hDC, $hDib)
    _WinAPI_DrawBitmap($hDC, 0, 0, $hBitmap, $MERGECOPY)
    _WinAPI_SelectObject($hDC, $hSv)
    ConsoleWrite('CRC = ' & _WinAPI_ComputeCrc32($pBit, DllStructGetData($tSize, 1) * DllStructGetData($tSize, 2) * 3) & @CR)
    ;Next

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

    _WinAPI_DeleteDC($hDC)
    _WinAPI_DeleteDC($hBitmap)

    [/autoit]

    Ich habe das jetzt hier eingebaut ein paar mal getestet und es scheint zu funkionieren.

    Meine Frage an euch ist nun:
    Kennt sich jemand mit "_WinAPI_ComputeCrc32" aus ?
    Ist das Beispiel hier korrekt?

    Gruß Schumi

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 23. März 2015 um 18:11

    Hallo Raupi,
    ja richtig, Controls kann man im Normalfall auslesen. Dann braucht man das "Gedönse" nicht.

    Aber ... in Delphi gibt es irgendwelche Controls in denen gezeichnet wird - man kann dann nichts auslesen - definitiv nicht. Das hast du evtl. auch schon gehört.
    Und solch ein Teil habe ich hier. Daher diese Umstände. Ich kann nur auf das "Dingsda"-Bild zugreifen und versuchen damit etwas zu machen. Und das mit dem Pixelgedönse schien mir die einfachste Lösung zu sein. Von hinten durch die Brust ins Auge - oder so ...

    Also wenn nicht noch einer von euch eine Idee hat dann mach ich das jetzt wie w.o. (9) beschrieben. Vielleicht funktioniert das ...(?)...
    Raupi, herzlichen Dank.

    Gruß Schumi

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 23. März 2015 um 17:05

    Ja, eine Anwendung. Wenn ich richtig informiert bin, ist diese mit Delphi erstellt worden.
    Ich kann auch wunderbar diesen Bereich als Bild speichern. Das klappt alles super.

    Gruß Schumi

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 23. März 2015 um 16:45

    Hallo Raupi,
    oh ja, da ist was dran.

    Also..
    Ich möchte gern einen Bereich aus einem Fenster auswerten. Dieser Bereich hat nur ca.10 unterschiedliche Darstellungen/Zustände.
    Meine Idee ist nun an der PixelChecksumme diese Zustände zu erkennen. Über die "_ScreenCapture_CaptureWnd"- Funktion kann ich den Bereich sehr genau erkennen - egal wo das Fenster steht.
    Ich komme jetzt aber an die PixelChecksumme nicht ran.

    Mein Umweg jetzt - von "_ScreenCapture_CaptureWnd" die Position ermitteln und dann über die Pos-Daten die PixelChecksumme bestimmen.
    Das sollte funktionieren - glaube ich.

    Eine Abkürzung ist mir natürlich lieber.
    Gruß Schumi

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 23. März 2015 um 16:11

    Ja genau ... So als erste spontane Idee fand ich das recht gut.
    Es ist ja nicht alles explizit beschrieben was geht oder nicht geht.

    Was hättest du denn gemacht um eine Checksumme zu bekommen?

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 23. März 2015 um 01:03

    Ich schau da schon tagelang drauf ...und es wurde nicht besser ;)
    Jetzt muss ich wohl doch die Fenster-Position und dann die Checksumme berechnen.

    Gruß Schumi

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 22. März 2015 um 21:11

    Wie kann man das sonst machen?
    Gruß Schumi

  • PixelChecksum von _ScreenCapture_CaptureWnd ?

    • Schumi
    • 22. März 2015 um 20:51

    Hallo zusammen,
    kann man eine PixelChecksum(me) von _ScreenCapture_CaptureWnd erstellen?
    Ich komme hier einfach nicht weiter und bitte um eure Hilfe.

    Mein Script sieht im Moment so aus:

    Spoiler anzeigen
    [autoit]


    #include <ScreenCapture.au3>
    #include <String.au3>
    #include <File.au3>
    #include <array.au3>
    #include <WinAPI.au3>
    #include <GDIPlus.au3>

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

    Dim $path = @ScriptDir
    Dim $File = "\Status.png"
    Dim $NameNeu

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

    ;Variablen für das Fenster
    Global $Fenster = "Mein Fenster..."

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

    $handle = WinGetHandle($Fenster, "")
    WinActivate($handle)

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

    ; Ermittelt das Handle der 1. Statuszeile, welches "Text" als Bild enthält.
    $Statushandle = ControlGetHandle($Fenster, "", "[CLASS:...; INSTANCE:1]")

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

    ; speichert den Screenshot von einem Fenster
    $hGDIBitmap = _ScreenCapture_CaptureWnd("", $Statushandle, 145, 0, -1, -1, False)

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

    _GDIPlus_Startup()
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hGDIBitmap)
    $y = _GDIPlus_ImageGetHeight($hBitmap)
    $x = _GDIPlus_ImageGetWidth($hBitmap)

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

    ;CheckSumme vom Pixelbereich ermitteln
    $checksum = PixelChecksum(0, 0, $x, $y, 1, $hBitmap, 1)
    If @error Then
    MsgBox(4096, "PixelChecksum Fehler", "PixelChecksum Fehler")
    ;~ Exit
    Else
    MsgBox(0, "PixelChecksum gefunden...", "PixelChecksum ist " & $checksum)
    EndIf

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

    ; Clean up resources
    _GDIPlus_ImageDispose($hBitmap)
    _WinAPI_DeleteObject($hGDIBitmap)
    _GDIPlus_Shutdown()

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

    Exit ; Ende

    [/autoit]


    Ich bekomme aber immer nur die gleiche CheckSumme angezeigt bei unterschiedlichen Bildern.
    Was mache ich falsch?

    Gruß Schumi

  • Updateproblem Windows 7

    • Schumi
    • 21. Januar 2015 um 18:32

    ja ok...

  • Updateproblem Windows 7

    • Schumi
    • 20. Januar 2015 um 13:53

    Hallo Bugfix,
    ich hätte noch einen anderen Vorschlag.
    Soeben habe ich WSUS-Offline laufen lassen und für Win7 32/64 mit Office2010 alle Updates gezogen.
    Für jedes Produkt gibt es jetzt eine ISO-Datei. Für Win7 (32) sind das ca. 1,9GB.

    Wenn du möchtest dann stelle ich dir das auf Dropbox ein, soll ich?
    Edit: Ich kann dir aber auch einen USB-Stick in die Hand drücken wenn du mal wieder in MD bist.

    Gruß Schumi

  • Updateproblem Windows 7

    • Schumi
    • 20. Januar 2015 um 11:12

    Hallo Bugfix,
    sorry für die späte Meldung - ich habe mal wieder keine Mail von deiner Nachricht bekommen.

    Bei WSUS-Offline kann das leider schon mal so sein. Dann haben evtl. die txt-Dateien im Ordner "..\client\md" einen Fehler.
    Für den Fall einfach mal alle txt-Dateien löschen und das Prog erneut starten. In dem Forum http://forums.wsusoffline.net/ sind dazu auch noch einige andere Infos.
    Und wenn alle Stricke reißen - das Prog löschen, neu runterladen und erneut starten.

    Das funktioniert schon... mir hat das Teil oft geholfen...

    Gruß Schumi

  • Updateproblem Windows 7

    • Schumi
    • 23. Dezember 2014 um 18:57

    Hallo BugFix,
    heute kam das hier über buerger-cert.de rein.

    "SCHUTZMASSNAHMEN
    5. Mircosoft: Korrektur fehlerhafter Updates
    Microsoft hat unter der Kennziffer KB3004394 ein fehlerhaftes Update veröffentlicht, das unter Windows 7 SP1 und Windows Server 2008 R2 SP1 in
    manchen Fällen dazu führt, dass keine weiteren Updates mehr eingespielt werden können.
    Microsoft hat zu diesem Zweck ein weiteres Update bereitgestellt [http://support.microsoft.com/kb/3024777].
    Betroffene Anwender (diejenigen mit einer der oben genannten Versionen von Windows, welche sich bereits KB3004394 installiert haben) sollten das
    auf der oben angegebenen Seite zum Download angebotene Update installieren. Damit wird das fehlerhafte Update ersetzt. Zusätzlich
    sollten Sie danach die Einstellungen hinsichtlich der automatischen Updates überprüfen, um sicherzugehen, dass diese Ihrer gewünschten
    Einstellung entsprechen.
    Auch eine Aktualisierung des Internet Explorers musste Microsoft nachbessern [http://support.microsoft.com/kb/3025390]. Die ältere,
    fehlerhafte Aktualisierung führte in manchen Fällen zu einer Beeinträchtigung der Funktionalität der dargestellten Webseiten. Anwender
    erhalten die Aktualisierung automatisch über das Windows Update, sofern diese Funktion eingeschaltet ist."

    Gruß Schumi

  • Updateproblem Windows 7

    • Schumi
    • 28. September 2014 um 14:50

    Hallo BugFix,
    hat WSUS-Offline was gebracht?

    Gruß Schumi

  • Updateproblem Windows 7

    • Schumi
    • 15. September 2014 um 22:03

    Hallo BugFix,
    vor einiger Zeit hat sich mein PC auch so aufgeführt. Die Fehler-Nr. habe ich aber nicht mehr im Kopf.
    Irgendwann habe ich mich dann mit WSUS-Offline http://www.wsusoffline.net/ beholfen.
    Vielleicht hilft es dir auch....

    Gruß Schumi

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Schumi
    • 14. September 2014 um 17:39
    Zitat von Andy

    ... , allerdings nicht, wieso ich aus dem Match die Buchstaben als Gruppe selektieren muss um danach diese Gruppe aus dem Match zu entfernen.
    Das ist sicherlich eine "unglückliche" Beschreibung, welche funktioniert.


    ... diese Gruppe ist bestandteil des Match. Du entfernst ja nichts. Wenn diese Gruppe nicht existiert wird nichts gefunden. Lass die Gruppe doch mal weg - wie sehen dann die Treffer aus?
    Dumm ist nur,dass das mit dem (?: nicht funktioniert. Aber...

    Evtl. hilft dir das hier. Ein kleines Tool für Autoit: http://n2b.ch/2011/01/22/autoit-regexp-tester-utility/
    Ein wirklich gutes Teil.

    In die Inputbox fügst du deinen Text ein und bei Pattern mein Regex s.w.o. . Die "Mode-Nr." (-1) steht für die Flag-Nr. aus der Funktion "StringRegExp" (s.Hilfe). Hier stell mal die 4 ein.
    Hiermit kannst du wunderbar experimentieren.

    Zitat von Andy

    Zitat
    irgendwo habe ich gelesen, dass das VB(A) RegEx kein lookahead (oder wars lookbehind) unterstützt.


    schau mal hier
    http://msdn.microsoft.com/en-us/library/…v=vs.84%29.aspx

    Nachtrag:
    Und schau mal ins schlaue Buch bei books.google.de
    "Regulaere Ausdruecke Kochbuch" bei "Lösung ohne Lookbehind" Seite 86
    ... alles sehr aufwändig

    Gruß Schumi

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Schumi
    • 14. September 2014 um 15:59
    Zitat von Andy

    Zitat von »Schumi«
    Lt Hilfe:
    (?:Muster) = Entspricht Muster, speichert die Entsprechung jedoch nicht, ...
    ja, damit hatte ich auch schon meine Probleme... Wenn ich den Match nicht haben möchte bzw. nicht in einer Gruppe haben möchte, dann suche ich ihn erst garnicht...

    Sorry, ich halte diese Ansicht für etwas zu kurz gedacht.
    Warum? Es kann gut sein, dass genau solch eine Bedigung (wie bei dir s.w.o) gesucht wird. Also vor den Ziffern sollen buchstaben stehen - und nur dann soll ein Treffer (nur die Ziffern) sein.
    Der Match den ich nicht haben möchte wird so zur "erweiterten Bedingung".

    In Autoit kann man das super mit zB. "(?<=[a-z])\d+(?=[a-z\r\n])" machen.
    Dieses "(?<=[a-z])" existiert aber leider nicht in VBS.

    Gruß Schumi

  • Updateproblem Windows 7

    • Schumi
    • 14. September 2014 um 14:38

    Hallo zusammen,
    vom Bürger-CERT kam diese Meldung (Heiselink) auch.

    Gruß Schumi

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Schumi
    • 14. September 2014 um 12:47

    Hallo Andy,

    ja richtig, alles sehr merkwürdig.
    Ich habe mir gestern das Pattern noch einmal angesehen. Und ich hätte es anders versucht.
    Nach der Hilfe sollte das hier funktionieren.

    .Pattern = "(?:[a-z]+)\d+(?=[a-z\r\n]+)"
    Das Dumme ist nur - das funktioniert nicht - also der erste Teil! ... "(?:[a-z]+)

    Lt Hilfe:
    (?:Muster) = Entspricht Muster, speichert die Entsprechung jedoch nicht, ...

    Oder wie sollte man das deuten?

    Gruß
    Schumi

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Schumi
    • 13. September 2014 um 21:13

    Hallo Andy,

    ich hätte hier noch einen evtl. interessanten Link für dich.
    http://www.txt2re.com/index-vb6.php3

    Man kann damit nicht nur den Regex erstellen lassen. Der Sourcecode als Beispiel ist auch dabei.

    Gruß Schumi

  • Tutorial für ADO Zugriffe auf SQL-Datenbanken, Excel, Textfiles etc. erstellen

    • Schumi
    • 23. Januar 2014 um 19:31

    Es war ja auch nur eine Idee von mir ;)

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™