Delphi-PRAXiS
Seite 5 von 10   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bildschirmlupe - Bereich unter Formular ermitteln (https://www.delphipraxis.net/126586-bildschirmlupe-bereich-unter-formular-ermitteln.html)

Garfield 1. Jan 2009 11:06

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Zitat:

Zitat von turboPASCAL
Nein, auch wenn wenn man die die Lupe nicht bewegt wird diese aktualisiert. Es hann sich ja in der Zwischenzeti etwas im Hintergrund, also unter der Lupe ändern.

Bei mir anscheinend nicht. Die Lupe stand eine Weile über VirtualVCR und es hat sich nichts geändert.

Zitat:

Zitat von turboPASCAL
Zitat:

ganz so ist es nicht. Der Hintergrund des Formulars wird vor dem Screenshot transparent geschaltet und darin scheint das Problem zu bestehen.
Hui, das flackert schön. ;)

Mit der jetzigen Einstellung flackers bei mir nicht. Allerdings darf man nicht über den Desktoprand hinaus.

Zitat:

Zitat von turboPASCAL
Aber nicht vom gesamten Screen oder ? Das ist/wäre Resourcenverschwendung.

:gruebel:
Delphi-Quellcode:
    dcDesktop := GetWindowDC(hDesktop);

stahli 1. Jan 2009 11:18

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Bei den AlphaControls ist auch eine (sehr gut funktionierende) Lupe dabei.

Garfield 1. Jan 2009 11:50

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Zitat:

Zitat von turboPASCAL
Aber nicht vom gesamten Screen oder ? Das ist/wäre Resourcenverschwendung.

Mit
Delphi-Quellcode:
dcForm := GetWindowDC(Form1.Handle);
funktioniert es nicht, da ist das Bild schwarz.

Mit
Delphi-Quellcode:
hForm := GetForegroundWindow;
dcForm := GetWindowDC(hForm);
kann man das aktive Formular capturen.

taaktaak 1. Jan 2009 16:23

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Interessant, aber für mich bleibt die Kernfrage:
Was macht VISTA(+AERO) anders? Hier muss es ja einen grundlegenden Unterschied geben? Der ist für mich noch nicht erkennbar :(

Namenloser 1. Jan 2009 16:27

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Zitat:

Zitat von Garfield
Es gibt auch einen dynamischen Modus mit DDraw Overlay.

Unter Vista funktioniert das mit DDraw aber nicht

Zitat:

Zitat von Garfield
Funktioniert bei mir unter XP tadellos.

Ja, unter XP. Aber nicht unter Vista, und das ist ja das Problem.

Zu den Artefakten in meinem Programm: Wie gesagt, es ist ein Kompromiss. Meiner Meinung immer noch besser, als wenn der gezeigte Ausschnitt gar nicht aktuell ist.

Zitat:

Zitat von taaktaak
Interessanr, aber für mich bleibt die Kernfrage:
Was macht VISTA(+AERO) anders? Hier muss es ja einen grundlegenden Unterschied geben? Der ist für mich noch nicht erkennbar :(

Unter Vista gibt es halt den neuen Fenstermanager. Meine Vermutung ist, dass unter XP Layered Windows auf Screenshots nicht sichtbar waren, weil der Fenstermanager mit (halb-)transparente Fenster eben nicht "richtig" umgehen konnte, d.h. erst die normalen Fenster gezeichnet wurden, und am Ende heimlich die Layered Windows "dazugemogelt" wurden. Warum die dann nicht auf dem Desktop-Canvas sind, weiß ich nicht, aber es wird wohl irgendwelche internen Gründe gehabt haben.

Wie auch immer, jedenfalls war die Möglichkeit des Auslesens der Pixel unter dem Fenster, eindeutig ein Bug, der durch einen Workaround entstanden zu sein scheint, und kein Feature. Deshalb ist es IMO auch prinzipiell richtig, dass das unter Vista nicht mehr funktioniert. Dass man verdeckte Bereiche unter Windows nicht auslesen kann (außer XP und vllt Win2k durch Ausnutzen eines Bigs), war schon immer ein Problem, und es ist ärgerlich, dass es dafür keine Möglichkeit zu geben scheint (zumindest keine mir bekannte). Soweit ich weiß, kann man mit einer WM_PRINT (?) Message zumindest unverdeckte Screenshots von einzelnen Fenstern machen - die geben aber leider nicht exakt das zurück, was auf dem Bildschirm sichtbar wäre (z.B. ohne Aero).

taaktaak 1. Jan 2009 16:55

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Interessant, vielen Dank für die Erklärung.
Dann funktionieren also die meisten Lupen aufgrund eines Bugs so gut - schon witzig.
Eine Lösung, das auch unter Aero hinzubekommen, ist dann vermutlich entweder gar nicht möglich oder nur von wirklichen Profis, die die Internas sehr gut kennen, realisierbar.

stahli 1. Jan 2009 19:14

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Die Lupe von den AlphaControls zeigt immer nur ein aktives Formular an.
Das ist etwas unerwartet, funktioniert aber insgesamt sehr gut.
Formularinhalte werden ständig aktualisiert.

Demo unter AlphaControls

Vielleicht kann das als Anregung helfen...

stahli

Sunlight7 1. Jan 2009 19:19

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
@NamenLozer:
Stimmt echt interessant, hab jetzt den QC gefunden und ich habe es auch mit dem Bug gemacht :stupid:


Heißt das jetzt, meins läuft unter Vista auch nicht?


Zitat:

Zitat von Garfield
Zitat:

Zitat von turboPASCAL
Nein, auch wenn wenn man die die Lupe nicht bewegt wird diese aktualisiert. Es hann sich ja in der Zwischenzeti etwas im Hintergrund, also unter der Lupe ändern.

Bei mir anscheinend nicht. Die Lupe stand eine Weile über VirtualVCR und es hat sich nichts geändert.

Bei mir, Win XP/SP2 aktuallisiert es auch nicht.

turboPASCAL 1. Jan 2009 19:26

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Zitat:

Bei mir, Win XP/SP2 aktuallisiert es auch nicht.
Bei mir, Win XP/SP2 schon. :gruebel:
Irgendwelche Themes laufen oder anderes Zeugs ?

Namenloser 1. Jan 2009 19:31

Re: Bildschirmlupe - Bereich unter Formular ermitteln
 
Zitat:

Zitat von stahli
Die Lupe von den AlphaControls zeigt immer nur ein aktives Formular an.
Das ist etwas unerwartet, funktioniert aber insgesamt sehr gut.
Formularinhalte werden ständig aktualisiert.

Demo unter AlphaControls

Vielleicht kann das als Anregung helfen...

stahli

Wo ist diese Lupe denn? Ich find die da nirgens. :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 5 von 10   « Erste     345 67     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz