Deutsch
Forum

Fenster-Snapshot

 

Melanie
Brayer
Hallo,

Ich schreibe noch an einer Shell und tüftel gerade an einem Task-/Window-Manager al a MacOS. Das vollgende Problem ergibt sich, wenn ich eine direkte copie des DCs direkt mit den Windows-APIs oder mit startpaint versuche:
Der Fenster-Snapshot enthält auch teile eines übergeordneten Fensters, was ich aber nicht will, da ich nur ein Bild eines spezielles Fensters haben will.

Das Fenster in den Vordergrund zu holen ist ein wenig schlecht, da der Snapshot in gewissen Intervallen aktuallisiert werden soll.
Wer hat da Ideen, die zur lösung beitragen?
 
mele (¯`·.¸¸.{ WinXP Pro, XProfan9, XPIA }.¸¸.·´¯)

<Bugs zählen ist besser als Schafe zählen, da der Computer nur so schlau ist wie der der Mensch der ihn bedient.>
12.12.2005  
 



Tjo Melle also nach meiner Theorie geht das leider garnicht was Du möchtest.
Windows grundsätzlich speichert kein Abbild eines Fensters. Windows sagt lediglich den Controls das sie sich neuzeichnen sollen - bzw. welche Bereiche.

Das Grundsätzlich ist juristisch zu verstehen - was demzufolge nicht immer heißen soll, sondern ausgenommen Aussnahmen.

Diese Aussnahmen sind jedoch stark APP-Abhängig - was Dir leider demzufolge nix nutzt.

Sollte ich mich irren so bitte ich um Korrektur.

Bis denne, David.
 
12.12.2005  
 



Hab mich noch nicht mit GetWindowDC BitBlit beschäftigt - laß mal deine Anfänge sehen, ich Augenblick sehe ich nicht, warum das nicht gehen sollte...

Wenn zwei nachdenken, kommt vielleicht was vernünftiges dabei heraus.
 
13.12.2005  
 




Frank
Abbing
Hi,

ich hab das vor einiger Zeit auch ansatzweise versucht, bin aber zu keinem zufriedenstellenden Ergebniss gekommen.
Was ich noch nicht versucht hatte, war ein DIB eines HDCs eines Controls/Windows zu erstellen und das DIB auf einen neu erzeugten HDC zu kopieren. Könntest du am einfachsten testen, wenn du mal die ProSpeed.dll dazunimmst. Dann kannst dus auch sofort speichern.
Nur über den HCD geht - vermute ich - gar nicht.
 
13.12.2005  
 



In der Art hatte ich mir das auch gedacht...
Das Speichern ist ohne zusätzliche DLL etwas aufwendig. Wenn ich mehr Zeit hätte, würde ichs mal mit der ProSpeed testen. Bin sehr gespannt, ob es geht...
 
14.12.2005  
 



Geht leider nicht und hat auch nichts mit der jeweiligen Anwendung zu tun. Da scheint nur das im DC zu stehen, was wirklich sichtbar ist - schade ...
Getestet mit GetWindowDC, BitBlt und Startpaint -1.

Besten Dank nochmals an Frank - mit deiner Hilfe war der benötigte Quelltext nur ein paar Zeilen lang...
 
15.12.2005  
 



Da Melanie hier keinen Quelltext gepostet hat, tue ichs mal. so kann jeder mitdenken und selbst tüfteln:
KompilierenMarkierenSeparieren
CLS
DEF @GetDC(1) !USER32,GetDC
DEF @GetWindowDC(1) !USER32,GetWindowDC
DEF @CreateCompatibleBitmap(3) !GDI32,CreateCompatibleBitmap
DEF @BitBlt(9) !GDI32,BitBlt
Def @ReleaseDC(2) !USER32,ReleaseDC
Declare Dialog&,WinDC&,MEMDC&,HBITMAP&
AddWindows
LET Dialog&=@Control(DIALOG,Dialog,$D0C80000,30,30,300,300,%Desktop,4000,%HINSTANCE)
LET Dialog&=@FindWindow(@ListBox$(Fitte Fenster auswählen,3))

If Dialog&<>0

    LET WINDC&=@GetWindowDC(Dialog&)
    MCLS @Width(Dialog&)+10,@Height(Dialog&)+10
    Startpaint -1
    @SetActiveWindow(Dialog&)
    Sleep 1000
    LET MEMDC&=%HDC
    LET HBITMAP&=@CreateCompatibleBitmap(MEMDC&,@Width(Dialog&),@Height(Dialog&))
    @BitBlt(MEMDC&,0,0,@Width(Dialog&),@Height(Dialog&),WINDC&,0,0,$00CC0020)
    @ReleaseDC(Dialog&,WINDC&)
    Endpaint
    MCOPYBMP 0,0-@Width(Dialog&),@Height(Dialog&)>0,0;0
    Sleep 1000
    @SetActiveWindow(%HWND)

    While 0=0

        Waitinput

    wend

endif


Salve.
 
16.12.2005  
 




Michael
Wodrich
?? noch in Arbeit ??
 
Programmieren, das spannendste Detektivspiel der Welt.
16.12.2005  
 



Nein, bloß falsch kopiert, hab mich heute schon ein paar mal so ausgetrickts - sehe einfach nicht mehr, was ich da auf dem Bildschirm mache ..
 
16.12.2005  
 



Hoffentlich habe ich jetzt wenigstens den richtigen Quelltext erwischt
 
16.12.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.132 Betrachtungen

Unbenanntvor 0 min.
H.Brill05.01.2019
Andre Rohland27.11.2012
Julian Schmidt20.09.2011

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie