| |
|
|
Georg Bernhardt | Hallo,
gibt es eine Möglichkeit den gesamten Inhalt eines Fensters z.B. aus einem Browserfenster, das nicht ganz auf den Bildschirm passt (Scrollbalken rechts) auszulesen und in ein Grafikdatei zu speichern? Für Firefox gibt es eine Erweiterung, die das macht (ScreenGrab). Ich brauche aber ein Programm, das generell einsetzbar ist. Hat da jemand ein Idee?
Gruß
Georg |
|
|
| |
|
|
|
| Nein für eine generell-funktionierende Lösung fehlt es hier der Windows-GUI am nötigen Wissen.
Die Windows-GUI weiss nämlich selbst nicht was :
a) hinter einem Fenster für Pixel liegen b) ausserhalb des Anzeigebereiches für Pixel liegen
Demzufolge kann dies immer nur von der eigendlichen Anwendung selbst erzeugt werden. |
|
|
| |
|
|
|
Frank Abbing | Hallo,
sowas Ähnliches wurde schon öfter diskutiert. Es ist so wie iF es angedeutet hat. Ein Programm benötigt in der Regel einen HDC und eine Bitmap, um sein Fenster damit zu füllen. Zumindest eine Bitmap. Sobald Windows meldet, das ein Fenster neu gezeichnet werden muss, kopiert das Programm seinen HDC neu in den Fenster-DC. Windows selber kümmert sich aber um das Clipping und übernimmt dabei nur die beschnittenen Grafikdaten. Möchte jetzt ein Fremdprogramm die Grafikdaten auslesen, kann es nur den Fensterhandle ermitteln und damit auch nur den Fenster-DC. Und somit erhält es nur die beschnittenen Daten. An die originalen Daten kann es nicht heran, weil der HDC für die Fensterrestaurierung nur dem Originalprogramm bekannt ist. Ich sehe aber zwei Möglichkeiten, doch zum Ziel zu gelangen.
1. Das Originalprogramm stellt über eine Schnittstelle den Handle auf seinen Restaurierungs-HDC zur Verfügung.
2. Snap-Programm analysiert den Maschinencode auf Vorkommen der API BitBlt(). Oder patched BitBlt() direkt. Ist aber nur was für echte Gurus. Also vergiss es. |
|
|
| |
|
|
|
Georg Bernhardt | Hallo,
ich bastele immer noch daran herum ein Browserfenster vollständig auszulesen und nun müßte ich wissen, wie man die Bildschirmkoordinaten eines anderen Fensters (z.B.) Browserfenster (%getfocus?) auslesen kann. Darüber lege ich ein Profanfenster und mache einen Screenshot usw. usw.
Georg |
|
|
| |
|
|
|
Frank Abbing | API:
GetWindowRect() GetClientRect() |
|
|
| |
|
|
|
Georg Bernhardt | Hallo,
warum klappt das, Browserfenster ist aktuell
browserwin& = %getfocus sendkey(browserwin&,34)
scrollt die Seite im Browserfenster
und das nicht
Beispiel zu api_GetWindowRect,USER32
Def @Getwindowrect(2) !USER32, GetWindowRect
Declare B#,Browserwin&, xl&,xr&,yo&,yu& Browserwin& = %getfocus
Dim B#,16 @Getwindowrect(Browserwin&,B#) xl& =Long(B#,0), yo&=Long(B#,4) xr&=Long(B#,8) yu&=Long(B#,12)
Die Werte sind dann 0 Versteh ich nicht. Hat jemand eine Antwort?
Georg |
|
|
| |
|
|
|
Jac de Lad | Ich kanns grad nicht ausprobieren, aber vielleicht hilft ja GetActiveWindow anstelle von %getfocus! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 07.02.2006 ▲ |
|
|
|
|
Georg Bernhardt | Jawoll Du hast recht
Georg |
|
|
| |
|
|
|
| Hallo Georg, Du machst das wohl gerne was?
Ich rede vom Weglassen der [CODE]-Tags.
Mach mal bitte gerne CodeTags. |
|
|
| |
|
|