Fremdes Fenster Bild austauschen.

  • Hallo an alle!

    Ich möchte von ein Programm was ich Starte ein Bild austauschen von Englisch auf Deutsch das Bild Selber lässt sich mit dem befehl ControlHide ausblenden doch ich möchte es mit mein BMP ersetzen das Control ID Heisst "Static23" nun welchen befehl brauche ich um das Bild zu überlappen.

    Es würde für mich sehr Hilfreich sein wenn ein kleines Script beispiel erstellt wird, wie man ein Fremdes Fenster das Control ID durch überlappen eines anderes Bild ersetzt.


    Danke schon mal im vorraus


    Gruß Baron

  • Könntest du dein Anliegen vielleicht nochmal so formulieren, dass das ein normaler Mensch versteht? Also jetzt mal abgesehen von falscher Grammatik, fehlender Interpunktion und scheinbar zufällig gewählter Groß- und Kleinschreibung, glaube ich, dass du im Prinzip einfach ein Bild auf ein anderes Fenster zeichnen möchtest.
    Das könntest du beispielsweise ganz einfach mit GDI-Plus lösen. Dafür gibt es aber genügend Tutorials...
    Das wären dann die wichtigsten Befehle:
    _GDIPlus_ImageLoadFromFile()
    _GDIPlus_GraphicsCreateFromHWND()
    _GDIPlus_GraphicsDrawImage()

  • Nein Ich möchte kein Bild Zeichnen sondern ein Vorhandenes Bild was im Fremdem Fenster ist ersetzen duch mein eigenes erstelltes bmp Bild. Das Control ID: Static23 kann ich mit dem Befehl "ControlHide" entfernen doch ich will es ja nicht entfernen sondern durch ein anderes erstelltes Bild ersetzen.

  • Ich hätte da vielleicht einen Ansatz, aber es will nicht richtig klappen....
    Das Bild wird leider nur ausgeblendet, vielleicht weiß ja jemand weiter...

    [autoit]

    Func _WinControlSetBitmap($sWindowName, $sWindowText, $iControlID, $sImagePath) ;$sImagePath = *.bmp
    Local Const $STM_SETIMAGE = 0x0172, $IMAGE_BITMAP = 0x0000

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

    $hWnd = WinGetHandle($sWindowName, $sWindowText)
    $hBitmap = _WinAPI_LoadImage(0, $sImagePath, $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE)

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

    $aRet = DllCall("User32.dll", "HWND", "SendDlgItemMessageW", "HWND", $hWnd, "int", $iControlID, "UINT", $STM_SETIMAGE, "WPARAM", $IMAGE_BITMAP, "LPARAM", $hBitmap)
    EndFunc

    [/autoit]
  • Hier habe ich mal ein Bild gemacht und welches Programm es sich Handelt ist zwar nur eine 60 Tage lizence doch zum Testen ob sowas geht mit Bilder austauschen ist dies Tool Das Projekt.

    [Blockierte Grafik: http://s3.imgimg.de/uploads/mein89417d1epng.png]

  • Hast du es schon mit der einfachsten Variante:

    [autoit]

    GuiSwitch($HandleDerAnwendung)
    GuiCtrlSetImage($ControlIdDesControls)

    [/autoit]

    probiert? Ich bezweifle zwar dass es funktioniert, aber man weis ja nie. Ansonsten Google mal nach AnyGui, damit lassen sich Controls in fremde Anwedungen integrieren,

    mfg autoBert

  • Mit der Include AnyGui geht es Prima mein Bild in das Fenster zu bringen doch nun habe ich ein 2 Problem das Orginal Bild konnte ich mit dem Befehl "Controlhide" entfernen nun wollte ich mein Bild darüber legen wo Standard das Orginal Bild wahr. doch mein Bild bleibt im Hintergrund und die Buttons plus Extra Fenster wo die Button Drauf liegen bleiben im vordergrund will ja mein Bild im Vordergrund bringen.

    Hier mal das Probe Bild und das Probe Skript.

    Bild

    Spoiler anzeigen

    Skript

    Spoiler anzeigen

    #include <guiconstants.au3>
    #include <anygui.au3>

    ControlHide('Setup Capture - Welcome','','Static28')
    $pos = WinGetPos('Setup Capture - Welcome','')

    WinMove('Setup Capture - Welcome','',(@DesktopWidth-$pos[2])/2, (@DesktopHeight-$pos[3])/2,$pos[2] + 147,$pos[3] + 190)
    _GuiTarget ('Setup Capture - Welcome', 1 )
    _TargetaddPic ('C:\lob.bmp', $pos[2]-470, $pos[3]-310, 459, 237)
    GUISetState ( )


    While 1
    $msg = GUIGetMsg ( )
    If Not WinExists ('Setup Capture - Welcome') Then Exit
    WEnd

    Das Ganze ist erst mal Probe aufgebaut auch das Fenster Größe ist mit absicht damit man erkennt das mein Bild dahinter verschwinden würde, wie bekomme ich mein Bild in denn vordergrund???


    MfG

    Baron