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

  • VLC Problem

    • BugFix
    • 26. Juli 2009 um 20:32

    Da du die Datei abspielen kannst, ist der Inhalt unbeschädigt. Vermutlich sind im Header Informationen beschädigt. Du hast nicht geschrieben, was es für eine Videodatei ist. Aber für AVI hatte ich mal ein Programm mit dem der Header neu erstellt werden konnte, sollte es auch für andere Formate geben, denke ich. Viel Glück beim Suchen. ;)

  • Teile vom Bildschirm als Bild speichern?

    • BugFix
    • 26. Juli 2009 um 19:56

    Hier nochmal der Code, aber auf Basis eines gespeicherten Bildes.

    Basis *.bmp
    [autoit]

    #include <GDIPlus.au3>
    #include <ScreenCapture.au3>
    #include <WinAPI.au3>

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

    _Main()

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

    Func _Main()
    Local $hBitmap, $iX, $iY

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

    _GDIPlus_Startup()

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

    ; Capture 32 bit bitmap
    _ScreenCapture_Capture(@TempDir & '\capture.bmp')
    $hBitmap = _GDIPlus_BitmapCreateFromFile(@TempDir & '\capture.bmp')

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

    ; Create 24 bit bitmap clone
    $iX = _GDIPlus_ImageGetWidth ($hBitmap)
    $iY = _GDIPlus_ImageGetHeight ($hBitmap)

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

    MsgBox(0, 'Maße', 'Bildabmessung: ' & $iX & ' x ' & $iY)

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

    ; Clean up resources
    _WinAPI_DeleteObject ($hBitmap)

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

    ; Shut down GDI+ library
    _GDIPlus_ShutDown ()

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

    EndFunc ;==>_Main

    [/autoit]


    Edit:

    Basis *.jpg
    [autoit]

    #include <GDIPlus.au3>
    #include <ScreenCapture.au3>
    #include <WinAPI.au3>

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

    _Main()

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

    Func _Main()
    Local $hBitmap, $iX, $iY, $hImage

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

    _GDIPlus_Startup()

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

    ; Capture 32 bit bitmap
    _ScreenCapture_Capture(@TempDir & '\capture.jpg')
    $hBitmap = _GDIPlus_BitmapCreateFromFile(@TempDir & '\capture.jpg')
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & '\capture.jpg')

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

    ; Create 24 bit bitmap clone
    $iX = _GDIPlus_ImageGetWidth($hImage); ($hBitmap)
    $iY = _GDIPlus_ImageGetHeight($hImage); ($hBitmap)

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

    MsgBox(0, 'Maße', 'Bildabmessung: ' & $iX & ' x ' & $iY)

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

    ; Clean up resources
    _WinAPI_DeleteObject ($hBitmap)

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

    ; Shut down GDI+ library
    _GDIPlus_ShutDown ()

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

    EndFunc ;==>_Main

    [/autoit]


    Gib mal in der SuFu Screencapture ein, da findest du schon etliche Lösungen.

  • Teile vom Bildschirm als Bild speichern?

    • BugFix
    • 26. Juli 2009 um 17:49

    Ich hab das Bsp. aus der Hilfe mal leicht verändert, so siehst du, wie du zu den Maßen kommst:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <ScreenCapture.au3>
    #include <WinAPI.au3>

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

    _Main()

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

    Func _Main()
    Local $hWnd, $hBitmap, $hClone, $hImage, $iX, $iY, $hDC

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

    ; Initialize GDI+ library
    _GDIPlus_Startup ()

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

    ; Handle des aktiven Fensters holen
    $hWnd = WinGetHandle('[ACTIVE]')

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

    ; Capture 32 bit bitmap
    $hBitmap = _ScreenCapture_CaptureWnd ("", $hWnd)
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP ($hBitmap)

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

    ; Create 24 bit bitmap clone
    $iX = _GDIPlus_ImageGetWidth ($hImage)
    $iY = _GDIPlus_ImageGetHeight ($hImage)

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

    MsgBox(0, 'Maße', 'Bildabmessung: ' & $iX & ' x ' & $iY)

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

    ; Clean up resources
    _GDIPlus_ImageDispose ($hClone)
    _GDIPlus_ImageDispose ($hImage)
    _WinAPI_DeleteObject ($hBitmap)

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

    ; Shut down GDI+ library
    _GDIPlus_ShutDown ()

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

    EndFunc ;==>_Main

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Teile vom Bildschirm als Bild speichern?

    • BugFix
    • 26. Juli 2009 um 17:31
    Zitat von MrWong

    Aber eine Frage hab ich dann doch noch wie kann ich denn nun die Bildgröße herausfinden? Danke


    Ich verstehe den Sinn deiner Frage nicht. Du willst doch nur einen bestimmten Bildausschnitt capturen. Dafür übergibst du die Koordinaten - also weißt du doch, welche Abmessungen dein Bild hat.

  • Kleines Problem mit Variablen

    • BugFix
    • 26. Juli 2009 um 13:44

    Du solltest nur die Befehle (ohne ID-Variable) übergeben. Die ID's der erstellten Ctrls läßt du dir einfach in einem Array speichern.
    Übergib auch gleich ein Array, sparst du dir das Splitten.

    [autoit]

    Local $Cmd[4] = [ _
    'GUICreate("Form2", 131, 79, 192, 124)', _
    'GUICtrlCreateButton("Button1", 8, 8, 75, 25)', _
    'GUICtrlCreateButton("Button2", 8, 40, 75, 25)', _
    'GUISetState(@SW_SHOW)']

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

    $getID = _PlugIn_ExecAll($Cmd)
    Sleep(1000)
    GUISetState(@SW_MAXIMIZE, $getID[0])
    Sleep(1000)
    GUISetState(@SW_RESTORE, $getID[0])

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

    MsgBox(0, "ID Form2", $getID[0])

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

    Func _PlugIn_ExecAll($__CMD)
    Local $ret_ID[UBound($__CMD)]
    For $x = 0 To UBound($__CMD) -1
    $ret_ID[$x] = Execute($__CMD[$x])
    Next
    Return $ret_ID
    EndFunc ;==>_PlugIn_ExecAll

    [/autoit]
  • memread und if =/

    • BugFix
    • 26. Juli 2009 um 07:59

    [OT]
    Bitte benutze Groß-/Kleinschreibung UND Interpunktion! Es grenzt sonst an ein Ratespiel, dein Problem zu Erkennen. Und entsprechend wenig Resonanz wirst du haben.
    [/OT]

  • Fadenkreuz dauerhaft erhalten

    • BugFix
    • 24. Juli 2009 um 19:55
    Zitat von war10ck

    Was ich weis liegt das prob an autoit, daher kann man da eig nix machen, also glaub nict das das mal irgendwer schaffen sollte. Aber vllt mal mit ner neuen version von autoit od so. Aber derezit is dasa leider nicht möglich


    Man, was seit ihr negativ. :D
    Ein bischen Überlegen und dann fällt einem auch der richtige Weg ein:

    Spoiler anzeigen
    [autoit]

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

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

    Global $hDC, $hPen, $obj_orig
    Global $active, $lastActive = 0
    HotKeySet("!e", '_ende')

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

    AdlibEnable('_SetCrossToActive')

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

    While 1
    Sleep(100)
    WEnd

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

    Func _SetCrossToActive()
    $active = WinGetHandle('[ACTIVE]')
    If $lastActive = $active Then Return
    $lastActive = $active
    $hDC = _WinAPI_GetWindowDC($active)
    ShowCross($hDC, @DesktopWidth / 2, @DesktopHeight / 2, 20, 2, 0xFF)
    EndFunc

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

    Func ShowCross($hDC, $start_x, $start_y, $length, $width, $color)
    $hPen = _WinAPI_CreatePen($PS_SOLID, $width, $color)
    $obj_orig = _WinAPI_SelectObject($hDC, $hPen)
    _WinAPI_DrawLine($hDC, $start_x - $length, $start_y, $start_x - 5, $start_y) ; horizontal left
    _WinAPI_DrawLine($hDC, $start_x + $length, $start_y, $start_x + 5, $start_y) ; horizontal right
    _WinAPI_DrawLine($hDC, $start_x, $start_y - $length, $start_x, $start_y - 5) ; vertical up
    ; _WinAPI_DrawLine($hDC, $start_x, $start_y + $length, $start_x, $start_y + 5) ; vertical down
    _WinAPI_MoveTo($hDC, $start_x, $start_y + $length)
    _WinAPI_LineTo($hDC, $start_x, $start_y + 5)
    EndFunc ;==>ShowCross

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

    Func _ende()
    AdlibDisable()
    _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, BitOR($RDW_INVALIDATE,$RDW_ALLCHILDREN))
    _WinAPI_SelectObject($hDC, $obj_orig)
    _WinAPI_DeleteObject($hPen)
    _WinAPI_ReleaseDC(0, $hDC)
    Exit
    EndFunc

    [/autoit]
  • Error:

    • BugFix
    • 23. Juli 2009 um 22:30

    Du liest am Anfang 3 Parameter aus:

    [autoit]

    $main_pid = $CmdLine[1]
    $cool_key = $CmdLine[2]
    $cool_hwnd = $CmdLine[3]

    [/autoit]


    Das heißt aber auch, dass du zwingend dein Programm mit allen 3 Parametern aufrufen mußt. Verwendest du nur 2 kommt der Fehler:
    Error: Array variable subscript badly formatted

  • Tierstimmenrätsel (Spiel für Kinder)

    • BugFix
    • 23. Juli 2009 um 06:53
    Zitat von Oscar

    Aber wieso WAV-Dateien? Was für Probleme gibt es denn mit MP3?


    Das Ausführen von mp3 mit SoundPlay() od. _SoundPlay() funktioniert und bringt AutoIt-technisch auch keinen Fehler. Aber nach jedem Sound erhalte ich eine externe Fehlermeldung (Rückgabefehler) von einer .cpp-Datei. Da diese Datei irgendwo als Source eingebunden ist, habe ich keine Chance, die Fehlerquelle zu finden.
    Und wenn dies bei mir passiert, ist es nicht unwahrscheinlich, dass bei anderen derselbe Fehler auftaucht. Somit habe ich mich für die sichere Variante entschieden.
    Ich vermute, Windows ist von Haus aus aus Lizenzgründen nicht mit einem mp3-Encoder ausgestattet. Erst die Installation von Programmen, die diese Lizenzen führen, macht mp3-Betrieb möglich.
    Ich hätte auch lieber mp3 verwendet. Schließlich ist das Speicherverhältnis 1:10.

  • schrift auf dem desktop anzeigen lassen

    • BugFix
    • 22. Juli 2009 um 22:12

    Ja, das geht z.B. mit meiner Funktion _SplashOn.
    Damit kannst du auch Text mit transparentem Hintergrund frei positionieren.

  • Tierstimmenrätsel (Spiel für Kinder)

    • BugFix
    • 22. Juli 2009 um 21:48
    Zitat von MatthiasG.

    Wo hast du eigentlich die Geräuche her?


    Die findest du auf: https://autoit.de/www.partnersinrhyme.com und https://autoit.de/www.infilmserver.de

  • Tierstimmenrätsel (Spiel für Kinder)

    • BugFix
    • 22. Juli 2009 um 21:24

    Hi,
    nun habe ich mich auch mal drangesetzt und ein Spiel für Kinder erstellt. :D
    Beim Tierstimmenrätsel geht es darum, nacheinander 10 Tierstimmen zu erkennen.
    Es ertönt erst die Tierstimme, dann wird eine GUI mit 30 Tierbildern (Anordnung jedes mal wechselnd) eingeblendet. Je nach Level hat man 30, 20, 10 oder 5 Sekunden Zeit auf das richtige Bild zu klicken. Dabei zählt ein Punktwert von 100 gegen 0. Wird auf das Bild geklickt, bleibt der Punktwert stehen und wird, wenn es das richtige Bild ist, zu den Gesamtpunkten addiert.
    Ein Highscore mit 10 Einträgen für jedes Level wird geführt.
    Im Übungsmode werden alle Bilder eingeblendet und bei Klick ertönt der zugehörige Sound.
    Damit es überall abgespielt werden kann, liegen die Sounds als *.wav vor, was leider das Ganze aufbläht.
    Deshalb habe ich den gezipten Programmordner auf meinen Webspace gepackt.

    Anmerkung zum Urheberrechtsschutz:
    Die verwendeten Symbole/Klänge sind laut Info der Anbieter für die nichtkommerzielle Nutzung frei verwendbar.
    Eine Quellenangabe befindet sich in der Source.

    Download: animal.zip

    Und hier noch ein paar Bilder:

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

  • Variable Funktionen in der Laufzeit erstellen

    • BugFix
    • 22. Juli 2009 um 20:54
    Zitat von MMM

    Jetzt soll diese Datei ausgelesen werden und auf die jeweilige Taste per Send der String hinter dem ; ausgeführt werden.


    Na genau das geht doch mit dem Bsp., dass ich dir gezeigt habe.
    Per HotkeySet wird in der dazugehörigen Funktion die Dummy-Funktion mit dem jeweiligen Befehlsstring ausgeführt.

  • Erkennen das Schliessen eines Fensters

    • BugFix
    • 22. Juli 2009 um 10:37

    Mal unabhängig vom Lösungsweg:
    Ich persönlich finde es mehr als nervig, wenn bei irgendwelchen, nicht sicherheitsrelevanten Aktionen diese Abfrage: "Sind Sie sicher bla bla" auftaucht. Da frag ich mich immer: Hä, halten die Programmierer die User für grenzenlos dämliche Trottel, die ausnahmslos immer auf irgendwelche Button klicken? :rofl:
    Man muß nicht immer jede mögliche Dummheit abfangen. Ist auch ein Stück Lernprozeß für den User, wenn er ohne zu Denken klickt. :P

  • Spooler Dienst beenden, printers Verzeichnis leeren und neu starten

    • BugFix
    • 22. Juli 2009 um 10:15

    Geht auch ohne lästige Send-Befehle:

    [autoit]

    RunWait(@ComSpec & " /c " & 'net stop spooler', "", @SW_HIDE)
    Local $PID = Run(@ComSpec & " /c " & 'del %WINDIR%\System32\spool\PRINTERS\*.*', "", @SW_HIDE, 0x1)
    StdinWrite($PID, 'J')
    StdinWrite($PID)
    RunWait(@ComSpec & " /c " & 'net start spooler', "", @SW_HIDE)

    [/autoit]
  • Script Splitten und dabei Variabeln übernehmen

    • BugFix
    • 22. Juli 2009 um 09:40

    wie wär es denn, wenn du dein Skript auch mal zeigst. Aus deiner Beschreibung kann ich icht viel herauslesen.

  • Variable Funktionen in der Laufzeit erstellen

    • BugFix
    • 22. Juli 2009 um 09:36

    Erstelle doch eine Dummy-Funktion, der du den variablen Befehlsstring übergibst:

    [autoit]

    $ToDo = InputBox('Variable Befehle', 'Gib eine Befehlszeile ein', 'MsgBox(0, "TEST", "Das ist ein Testbefehl")')
    _Dummy($ToDo)

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

    Func _Dummy($ToDo)
    Execute($ToDo)
    EndFunc

    [/autoit]
  • ListView-Sortierung speichern und widerherstellen

    • BugFix
    • 22. Juli 2009 um 09:26
    Zitat von sc4ry

    2. Wie kann ich die Sortierung der Spalten im einem ListView speichern und Widerherstellen? Ich habe das ListView so eingestellt, dass man auf die Columns klicken kann und sich die Sortierung ändert ... nur wie stell ich das nach nem Neustart wieder her (mit ListView-Command)? Das ListView wird über eine DB gefüllt, die Einträge sind erstmal nach OID sortiert.


    Nach welcher Spalte sortiert wurde kannst du ja beim ColumnClick in einer Globalen Variable speichern.
    Und um die Sortierrichtung zu erfahren gehst du genau so vor, wie du es mit den Augen machst: Vergleiche die ersten beiden Einträge der Sortierspalte, dann kennst du auch die Sortierrichtung. ;)

  • Wie prüfe ich Array vor der Verarbeitung auf Fehler?

    • BugFix
    • 21. Juli 2009 um 08:58

    Du hast genau den Code weggelassen, der notwendig ist um dein Problem zu finden - nämlich die Erstellung/Befüllung des Array.
    Dieser Zugriff: $traffic = $array[3][2] verweist laut Fehlermeldung auf einen Bereich außerhalb des Arrays. Zeile4/Spalte3 gibt es also nicht. Das Array hat weniger Zeilen od. Spalten laut Fehlermeldung. Dort mußt du also deine Überprüfung ansetzen.

  • zählen

    • BugFix
    • 20. Juli 2009 um 15:46

    Sollte so gehen:

    [autoit]

    $fh = FileOpen("meine.txt",0)
    $text = FileRead($fh)
    FileClose($fh)
    $mp3 = StringRegExp($text, "\.mp3", 3)
    MsgBox(0, 'mp3', 'Anzahl .mp3 = ' & Ubound($mp3))

    [/autoit]

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™