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

Beiträge von name22

  • Bitmap Daten direkt aus Arbeitsspeicher auslesen

    • name22
    • 20. Dezember 2010 um 16:59

    Das kannte ich schon. Aber ich hätte vielleicht auch schreiben sollen, dass Zeit eine Rolle spielt :S. Die Funktion ist prima, aber ich brauche eine extrem schnelle Funktion... Die Art der Daten wäre mir auch egal (Binär, Farbcodes etc...), ich muss die Daten auch nicht interpretieren oder verändern können sondern nur ggf. wieder zu einer Bitmap zusammenfügen.

  • Bitmap Daten direkt aus Arbeitsspeicher auslesen

    • name22
    • 20. Dezember 2010 um 16:46

    Tja... Wie die Überschrift schon sagt, möchte ich die Daten einer Bitmap über ein HBTIMAP Handle (wie es z.B. von _ScreenCapture_Capture zurückgegeben wird) direkt aus dem Speicher auslesen. Also ohne zwischenspeichern auf der Festplatte, da das zu lange dauert :S. Bisherige Ansätze oder Versuche gibt es nicht, da ich keine Ahnung habe wie ich das überhaupt angehen soll. Hoffe auf Lösungsvorschläge/Lösungen. ;)

  • [GDi+] Die 4 magischen Quadrate

    • name22
    • 20. Dezember 2010 um 16:39
    Zitat

    Funktioniert :D Vllt kannst du die GUI noch schließen lassen durch GUIGetMsg() oder OnEventMode ;)


    Ich glaub Blume weiß wie das geht :whistling: .....
    Aber eine andere Schließmöglichkeit als Esc. wäre schon nützlich ;). Wenn du es mit AdlibRegister machst, kannst du das Sleep aus der Hauptschleife entfernen und durch eine ganz normale MessageLoop ersetzen.

  • [GDi+] Die 4 magischen Quadrate

    • name22
    • 20. Dezember 2010 um 16:13

    Funktioniert, und ist für den Anfang recht gut ;).
    Als Übung könntest du das Script ja jetzt noch verbessern und währendessen dazulernen. Als Vorschlag hätte ich mal einen Backbuffer einzubauen, das ganze mid AdlibRegister oder einer anderen Timer Funktion zu machen anstatt mit Sleep in einer Endlosschleife etc... :D

  • Alle Dateien von einem Pfad als Array zurückgeben klappt nicht!

    • name22
    • 20. Dezember 2010 um 16:08

    Ich hab auch mal eine Funktion hingezaubert und sie funktioniert sogar :thumbup: .

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _FileListToArrayRecursiv()
    ; Description ...: Findet Dateien in einem Verzeichnis und allen Unterverzeichnissen
    ; Syntax ........: _FileListToArrayRecursiv($sPath, [$sFilter = "*"])
    ; Parameters ....: $sPath - Verzeichnispfad in dem gesucht werden soll.
    ; $sFilter - [optional] Dateinamenfilter (z.B. "*.mp3"). Wildcards werden unterstützt.
    ; Return values .: Success - Return Array with Files ($Array[0] = Count)
    ; Failure - Return 0
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Benötigt #include <File.au3>
    ; =================================================================================================
    Func _FileListToArrayRecursiv($sPath, $sFilter)
    If $sFilter = "" Then $sFilter = "*"

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

    Local $aFiles = _FileListToArray($sPath, $sFilter, 1)
    If Not IsArray($aFiles) Then
    Local $aFiles[1]
    $aFiles[0] = 0
    EndIf

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

    Local $aFolders = _FileListToArray($sPath, "*", 2)
    If Not IsArray($aFolders) Then
    If $aFiles[0] = 0 Then Return 0
    Else
    $bResult = False
    For $i = 1 To $aFolders[0]
    $aSearchTmp = _FileListToArrayRecursiv($sPath & "\" & $aFolders[$i], $sFilter)
    If IsArray($aSearchTmp) Then
    $bResult = True
    ReDim $aFiles[$aFiles[0] + $aSearchTmp[0] + 1]
    For $j = 1 To $aSearchTmp[0]
    $aFiles[$aFiles[0] + $j] = $aFolders[$i] & "\" & $aSearchTmp[$j]
    Next
    $aFiles[0] += $aSearchTmp[0]
    EndIf
    Next
    If Not $bResult Then Return 0
    EndIf

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

    Return $aFiles
    EndFunc

    [/autoit]
  • Alle Dateien von einem Pfad als Array zurückgeben klappt nicht!

    • name22
    • 20. Dezember 2010 um 11:52

    Was spricht gegen die Funktion

    [autoit]

    _FileListToArray

    [/autoit]

    ? ?(

  • Script compilieren von einem AutoIt Script heraus?

    • name22
    • 20. Dezember 2010 um 11:50

    Du kannst z.B. den gewünschten Code temporär in einer au3 Datei abspeichern und diese dann mit dem AutoIt Compiler im AutoIt Verzeichnis über Kommandozeilenparameter kompilieren. Hier steht auch wie das geht. ;)

  • Hilfe bei Func in Gui

    • name22
    • 19. Dezember 2010 um 22:38

    Nakroma Das ist das was ich geschrieben habe in grün :rolleyes: .

    Zitat

    Am besten dazu noch BitAND benutzen, da es mehrere States auf einmal geben kann.


    Dieser Fall ist bei mir bisher so gut wie nie aufgetreten, aber ist ein guter Hinweis. Also müsste es so lauten:

    [autoit]

    If BitAND(GUICtrlRead($cCheck), $GUI_CHECKED) = $GUI_CHECKED Then

    [/autoit]

    PS: Mir ist gerade aufgefallen, dass ich in meinem ersten Post totalen Müll verzapft habe :pinch: . Aber so stimmt es jetzt :rolleyes: .

  • In Konsolen Fenster etwas reinschreiben

    • name22
    • 19. Dezember 2010 um 22:33
    Zitat

    Kann man den "Server" auch ohne AutoIT als Child öffnen ?
    Und dann in der Hilfe bei $foo den Process Namen eingeben ?


    Kannst du, aber es würde dir nichts bringen :D. Um etwas in den Stdin Stream eines Programmes schreiben zu können musst du es mit Run o.Ä. im Autoit Script öffnen und dann die zurückgegebene PID (Process ID) bei StdinWrite verwenden.
    Ein nicht über das Script gestartete Prozess kann keine Daten von diesem Script über den Stdin Stream erhalten. Das dürfte allerdings kein Problem sein in den meisten Fällen...

  • Hilfe bei Func in Gui

    • name22
    • 19. Dezember 2010 um 21:30

    In Zukunft bitte AutoIt Quellcode in

    Code
    [autoit][/autoit]

    brackets setzen. ;)
    Ich bin mir nicht ganz sicher was die Checkboxen bewirken sollen, aber den Status einer Checkbox überprüfen kannst du mit

    [autoit]

    If GUICtrlRead($cCheck, $GUI_CHECKED) Then

    [/autoit]

    .
    Und nach das Then kommt was du im Falle einer "gecheckten" Checkbox machen willst.

  • Text des aktiven Controls ermitteln

    • name22
    • 19. Dezember 2010 um 20:17

    Ich sollte mir Beiträge wieder genauer durchlesen... Für mich war es selbstverständlich, dass man zuerst überprüft ob man die Funktion richtig verwendet und sich dann erst in einem Forum darüber beschwert. :D

  • (@SW_SHOW) auf Knopfdruck?

    • name22
    • 19. Dezember 2010 um 20:12

    Man könnte ja auch einfach die HotKeySet Funktionen VOR der Endlosschleife aufrufen. :pinch:

    Spoiler anzeigen
    [autoit]


    HotKeySet("^e", "show") ; Mit ALT + e wird...
    HotKeySet("^r", "hide") ; Mit ALT + r wird...

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

    While 1
    Sleep (10)
    WEnd

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

    Func hide ()
    WinSetState("Mozilla Firefox", "", @SW_HIDE) ; ...Firefox versteckt
    EndFunc

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

    Func show ()
    WinSetState("Mozilla Firefox", "", @SW_SHOW) ; ...Firefox angezeigt
    EndFunc

    [/autoit]
  • (@SW_SHOW) auf Knopfdruck?

    • name22
    • 19. Dezember 2010 um 20:05

    Weil das Script nie über die While 1 Endlosschleife hinauskommt, und somit auch kein HotKeySet aufgerufen wird.

  • Text des aktiven Controls ermitteln

    • name22
    • 19. Dezember 2010 um 19:46

    Nicht jedes Control ist auch mit den AutoIt Control Funktionen kompatibel... Du kannst ja auch mal ControlCommand versuchen.

  • In Konsolen Fenster etwas reinschreiben

    • name22
    • 19. Dezember 2010 um 19:35

    Ups.. Ich sehe gerad, dass dir das von BadBunny ja gar nicht weiter hilft :D . Du musst das Programm als Child Prozess starten und dann über StdinWrite in die Konsole des anderen Programms schreiben. In der Hilfe gibt es ein Beispiel zu StdinWrite ;).

  • In Konsolen Fenster etwas reinschreiben

    • name22
    • 19. Dezember 2010 um 18:56

    Also willst du Daten in eine fremde Konsole schreiben. Das hat BadBunny doch auch schon beschrieben.

  • In Konsolen Fenster etwas reinschreiben

    • name22
    • 19. Dezember 2010 um 18:50

    Ich dachte du wolltest in die Konsole deines eigenen Scripts schreiben? ?(

  • In Konsolen Fenster etwas reinschreiben

    • name22
    • 19. Dezember 2010 um 18:31

    ConsoleWrite? BadBunny hat dir doch schon beschrieben was du machen musst...

  • In Konsolen Fenster etwas reinschreiben

    • name22
    • 19. Dezember 2010 um 18:18

    Du kannst z.B. mit ConsoleWrite etwas in den STDOUT Stream (Standard Out Stream) schreiben. Wenn du nun ein Programm über Run aus einem anderen Programm startest kannst du im ersten Programm mithilfe von StdoutRead alles auslesen was du mit ConsoleWrite im zweiten Programm ausgibst.

  • GDI+ String ändern

    • name22
    • 18. Dezember 2010 um 12:54
    Zitat

    Wenn ichs richtig sehe,
    zeichnest du einfach vor dem String das Hintergrund immer neu,
    berechnest es aber nicht neu und überschreibst damit die vorherige Schrift.
    Richtig ?


    Richtig ;).

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™