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

Beiträge von Oscar

  • _ShowImage

    • Oscar
    • 20. März 2010 um 22:37

    Das führt wieder zu: AutoIT3.exe ended.rc:-1073741819

    Hast Du meine Variante mal ausprobiert? Die funktioniert bei mir unter Win7 64 Bit und WinXP 32 Bit.

  • _ShowImage

    • Oscar
    • 20. März 2010 um 22:33

    Mit der Änderung stürzt es bei mir nicht mehr ab, sondern es "friert" ein (Fenster läßt sich nicht mehr bewegen/schließen).

  • _ShowImage

    • Oscar
    • 20. März 2010 um 22:19

    Ah, die Idee mit den Static-Variablen ist gut. Damit geht das! Danke, SEuBo! :thumbup:
    Habe das Skript angepasst (siehe Post #1).

    Jetzt klappt das neuzeichnen, wenn man mit einem anderen Fenster drüberfährt. Allerdings "ruckt" es noch etwas, wenn man das Fenster mit dem Bild etwas ausserhalb des Bildschirms bewegt und dann wieder zurück.
    Falls dafür noch jemand eine Lösung kennt?

    Edit:  eukalyptus: Dein Skript funktioniert bei mir nicht. Da stürzt AutoIt ab (AutoIT3.exe ended.rc:-1073741819) wenn ich ein Bild lade.

  • _ShowImage

    • Oscar
    • 20. März 2010 um 19:10

    Ich brauchte gerade mal eine Funktion zum anzeigen von Bildern. Diese soll die Bilder (nach Möglichkeit) komplett (100%) in einem Fenster anzeigen. Wenn die Bilder eine höhere Auflösung haben als der Monitor, dann sollen sie entsprechend (proportional) runterskaliert werden.
    So weit habe ich das auch schon fertig (deshalb hier in Skripte). :)
    Es gibt nur noch ein Problem mit dem neuzeichnen, wenn man ein anderes Fenster darüber bewegt. An sich ja kein Problem, das kann man ja mit WM_PAINT lösen (einfach neuzeichnen lassen), aber und jetzt kommt das Schwierige, ich möchte das gern als UDF haben.
    Der GUIRegister-Aufruf muss also von der Funktion "_ShowImage" aus erfolgen. Allerdings sind die Variablen ja lokal (möchte gern auf globale Variablen verzichten) und jetzt weiß ich nicht, wie ich das sonst lösen kann. Jemand eine Idee?

    Problem erledigt! Jetzt funktioniert auch das neuzeichnen. :)

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    #cs
    Beispiel - Anfang
    #ce
    Opt('GUIOnEventMode', 1)
    GUICreate('Beispiel', 600, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUICtrlCreateButton('Zeige Bild...', 20, 20, 160, 35)
    GUICtrlSetOnEvent(-1, '_Show')
    GUISetState()
    While Sleep(50)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Show()
    Local $sPath
    $sPath = FileOpenDialog('Bilddatei auswählen', @WorkingDir, 'Images (*.jpg;*.bmp;*.png)', 3)
    If Not @error Then _ShowImage($sPath)
    EndFunc ;==>_Show
    #cs
    Beispiel - Ende
    #ce

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

    ;===============================================================================
    ; Function Name: _ShowImage($sImgFile)
    ; Description:: Zeigt ein Bild in einem separaten Fenster an.
    ; Parameter(s): $sImgFile = Pfad zu dem Bild
    ; Requirement(s): #include <GDIPlus.au3>
    ; #include <GUIConstantsEx.au3>
    ; #include <WindowsConstants.au3>
    ; Return Value(s): wenn die Datei nicht existiert wird @error auf "1" gesetzt
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _ShowImage($sImgFile)
    If Not FileExists($sImgFile) Then Return SetError(1, 0, 0)
    Local $hGui, $hBitmap, $hGraphic, $aWinPos, $iFrameWidth, $iFrameHeight, $iImgWidth, $iImgHeight, $iFactor
    Local $iOldOpt = Opt('WinTitleMatchMode', 4)
    Local $aTaskbarPos = WinGetPos('classname=Shell_TrayWnd')
    Opt('WinTitleMatchMode', $iOldOpt)
    $iOldOpt = Opt('GUIOnEventMode', 0)
    Local $iGuiWidth = 300, $iGuiHeight = 300
    $hGui = GUICreate('Calc Frame', $iGuiWidth, $iGuiHeight, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION))
    _GDIPlus_Startup()
    $hBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile)
    $aWinPos = WinGetPos($hGui)
    GUIDelete($hGui)
    $iFrameWidth = $aWinPos[2] - $iGuiWidth
    $iFrameHeight = $aWinPos[3] - $iGuiHeight + 10
    $iImgWidth = _GDIPlus_ImageGetWidth($hBitmap)
    $iImgHeight = _GDIPlus_ImageGetHeight($hBitmap)
    $iFactor = $iImgWidth / $iImgHeight
    While $iImgHeight > ($aTaskbarPos[1] - $iFrameHeight)
    $iImgHeight -= 1
    $iImgWidth -= $iFactor
    WEnd
    While $iImgWidth > (@DesktopWidth - $iFrameWidth)
    $iImgHeight -= 1
    $iImgWidth -= $iFactor
    WEnd
    $iImgWidth = Int($iImgWidth)
    ConsoleWrite($iImgWidth & ' x ' & $iImgHeight & ' ' & $iFrameWidth & ' x ' & $iFrameHeight & @CR)
    $hGui = GUICreate('Show Image', $iImgWidth, $iImgHeight, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION))
    GUISetState()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
    _RedrawImage($hGraphic, $hBitmap, $iImgWidth, $iImgHeight)
    GUIRegisterMsg($WM_PAINT, '_WM_PAINT')
    While True
    $aMsg = GUIGetMsg(1)
    If $aMsg[1] = $hGui And $aMsg[0] = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    GUIRegisterMsg($WM_PAINT, '')
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    GUIDelete($hGui)
    Opt('GUIOnEventMode', $iOldOpt)
    EndFunc ;==>_ShowImage

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

    Func _WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    If $hWnd = WinGetHandle('Show Image') Then _RedrawImage()
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_PAINT

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

    Func _RedrawImage($par1 = 0, $par2 = 0, $par3 = 0, $par4 = 0)
    Local Static $hGraphic, $hBitmap, $iImgWidth, $iImgHeight
    If $par1 <> 0 Then
    $hGraphic = $par1
    $hBitmap = $par2
    $iImgWidth = $par3
    $iImgHeight = $par4
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iImgWidth, $iImgHeight)
    EndFunc ;==>_RedrawImage

    [/autoit]

    Dateien

    _ShowImage.au3 3,51 kB – 245 Downloads
  • [ geschlossen ] Suche Laptop für maximal 600€

    • Oscar
    • 20. März 2010 um 18:33

    Naja, bei 600€ für einen Laptop wird das keine HighEnd-Grafikkarte, das sollte Dir klar sein. ^^

    Aber diese beiden hier sehen ganz vielversprechend aus:
    MSI EX628-T6647W7P
    Acer Aspire 5739G-744G25MN - Gamer II

  • Buchstaben

    • Oscar
    • 20. März 2010 um 11:42

    So:

    [autoit]


    HotKeySet ("s" , TestFunc1())

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

    While Sleep(50)
    WEnd

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

    Func TestFunc1()
    MsgBox (1, "test", "test")
    EndFunc

    [/autoit]
  • Problem mit Macro.Tool

    • Oscar
    • 20. März 2010 um 11:04

    Den Inhalt von einem Input-Control musst Du mit GUICtrlRead auslesen.
    Es muss also so aussehen:

    [autoit]

    send (GUICtrlRead($Input1))

    [/autoit]
  • Buchstaben

    • Oscar
    • 20. März 2010 um 10:40

    Ich denke, die meisten hier halten sich zurück, weil wir keinen Keylogger-Support bieten wollen und das was Du vorhast geht schon sehr weit in diese Richtung (Tastendrücke abfangen).
    Mal abgesehen davon, dass die "Verschlüsselung", die Dir da vorstrebt nicht gerade stark ist (leicht zu knacken).

    Es wäre einfacher, wenn Du einfach einen ICQ-Client benutzt, der "von Haus aus" die Daten verschlüsselt. ;)

  • StringBetween - Komm nich damit klar

    • Oscar
    • 20. März 2010 um 07:56

    Mit StringRegExp ist das viel einfacher:

    [autoit]


    #include <Array.au3>
    $sSource = BinaryToString(InetRead('http://www.bfbs-radio.com/pages/extranet/listenagain.php', 1))
    $aMP3Links = StringRegExp($sSource, 'soundFile=(.+)"', 3)
    _ArrayDisplay($aMP3Links)

    [/autoit]
  • Wieso wird bild nicht generiert?

    • Oscar
    • 19. März 2010 um 20:27

    Erstell' das Bild nur einmal und lade dann das geänderte Bild mit GUICtrlSetImage.

  • Hab ein Problem mit GUICtrlCreatePic, die Bitmapdatei wird nicht angezeigt.

    • Oscar
    • 19. März 2010 um 20:02

    Mit einer Funktion "GIF aus DLL" kann ich leider nicht dienen. :(

    Bezüglich der Hilfe hast Du recht, allerdings ist 32 Bit BMP auch eher ungewöhnlich und wird von den Programmen unterschiedlich interpretiert. Standard ist bei BMP hingegen eine Farbtiefe von 24 Bit.

  • Hab ein Problem mit GUICtrlCreatePic, die Bitmapdatei wird nicht angezeigt.

    • Oscar
    • 19. März 2010 um 19:49

    IrfanView hat doch eine Batch-Konvertierung, damit kannst Du alle Bilder auf einmal konvertieren.

  • Hab ein Problem mit GUICtrlCreatePic, die Bitmapdatei wird nicht angezeigt.

    • Oscar
    • 19. März 2010 um 19:45

    Einfach mit IrfanView unter einem anderen Namen speichern.

  • Hab ein Problem mit GUICtrlCreatePic, die Bitmapdatei wird nicht angezeigt.

    • Oscar
    • 19. März 2010 um 19:41

    Wenn Du das BMP als 24 Bit speicherst, dann funktioniert das. Dein BMP hatte 32 Bit.

    Geändert:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Frage über send...

    • Oscar
    • 19. März 2010 um 18:35

    Forenregeln lesen! Hier gibt's keine Bot-Unterstützung!

    [Thread closed]

  • Ab wann braucht Windows Adminrechte?

    • Oscar
    • 19. März 2010 um 15:59

    Ist es nicht eher so, dass Programme ihre Daten in @AppDataDir & '\Programm\' ablegen sollen?

    So habe ich das bei meinen Programmen jetzt immer gemacht und da braucht man auch keine Adminrechte zum schreiben.
    BTW: Firefox, Thunderbird und so packen ihre Daten auch dorthin.

  • Sonderzeichen

    • Oscar
    • 17. März 2010 um 16:59

    Der (Al.Gaida) kassiert gleich die zweite Verwarnung! :cursing:

  • Sonderzeichen

    • Oscar
    • 17. März 2010 um 16:54

    Tja, das ist ja eher sowas wie ein "Negativ-Bot". ;)

    Ich denke, das kann man dann schonmal supporten.

    Edit: zu spät...

    Aber _IsPressed benötigt noch ein Include:

    [autoit]

    #Include <Misc.au3>

    [/autoit]
  • Sonderzeichen

    • Oscar
    • 17. März 2010 um 16:13

    Beschreib doch mal, was Du vorhast, dann kann man Dir viel einfacher helfen.

  • Server - Client tcp

    • Oscar
    • 17. März 2010 um 16:11

    Mein CryptChat kann auch Mehrfach-Verbindungen.

    Grobe Prozedur:
    Das Serverskript muss alle akzeptierten Verbindungen in einem Array speichern und diese dann in einer Schleife abfragen, ob neue Nachrichten eingetroffen sind. Wenn ja, dann an alle anderen verschicken.

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™