AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi MagSetWindowFilterList function not remove specified window of screenshot

MagSetWindowFilterList function not remove specified window of screenshot

Ein Thema von flashcoder · begonnen am 27. Jan 2018 · letzter Beitrag vom 29. Jan 2018
Antwort Antwort
Fukiszo
(Gast)

n/a Beiträge
 
#1

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 13:48
use this command wherever you need
this will hide a window by its handle
Code:
 ShowWindow(EnterHandle, SW_HIDE); // Enter Handle of Window wich needs to become invisible

or

 ShowWindow(FindWindow(EnterClassName,nil), SW_HIDE); // EnterClassName can be something like TForm1 etc, adjust to your

or

 ShowWindow(FindWindow(nil,'Enter Forms Caption'), SW_HIDE); // self explaining

replace SW_HIDE with SW_SHOW to bring it back
use this code careful, it can be used to also tweak control (in and outside of your program)

Geändert von Fukiszo (27. Jan 2018 um 13:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 14:28
Hiding / minimizing a window to exclude it from a screenshot is an invasive operation and I as an user would not like it (even if it's only for a split second).

1 - MagSetWindowFilterList function not remove main form (Form1).
You should not declare your filterList as PHWNDArray . Just use a normal THWNDArray as variable declaration and pass it like this: MagSetWindowFilterList(hwndMag, MW_FILTERMODE_EXCLUDE, 1, @filterList[0]) . You could even use plain HWND as type for filterList (in case there's always only one handle in your "list").

2 - How recovery the content of "MagnifierWindow" to a image format?
I never used the magnification API, but the linked article shows a way by using the so called MagImageScalingCallback .
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#3

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 19:43
@Zacherl,

thank you very much, your suggestion about MagSetWindowFilterList worked fine.
I will try translate the part of save content of hwndmag to a image format.

I tried the suggestion of @Fukiszo but not worked see:

Delphi-Quellcode:
Canvas := TCanvas.Create;
  MyBitmap := TBitmap.Create;
  DC := GetWindowDC(hwndMag);

  GetWindowRect(hwndMag, r);

  try
    Canvas.Handle := DC;

      MyBitmap.Width := r.Width;
      MyBitmap.Height := r.Height;

      MyBitmap.Canvas.CopyRect(Rect(0, 0, MyBitmap.Width, MyBitmap.Height), Canvas,
                               Rect(0, 0, r.Width, r.Height));

      MyBitmap.SaveToFile('c:\screen.bmp');

  finally
    ReleaseDC(0, DC);
    MyBitmap.Free;
    Canvas.Free
  end;
But if someone know a way in Delphi and that works, i will accept.

Geändert von flashcoder (27. Jan 2018 um 19:49 Uhr)
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#4

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 20:48
Delphi-Quellcode:
 MyBitmap.Canvas.CopyRect(Rect(0, 0, MyBitmap.Width, MyBitmap.Height), Canvas,
                               Rect(0, 0, r.Width, r.Height));
Delphi-Quellcode:
my example was made for a full screen, not part of screen
use it like this:
 MyBitmap.Canvas.CopyRect(Rect(X.Start, Y.Start, X.End, Y.End), Canvas,
                          Rect(X.Start, Y.Start, X.End, Y.End));

X and Y are Screen Offsets, not your Application Window Offsets
eg, Position [0,0] = topleft screen corner and not your application windows coordinate!
but better wait, others may give much better methods than my rude ones.

Geändert von Fukiszo (27. Jan 2018 um 20:56 Uhr)
  Mit Zitat antworten Zitat
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#5

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 21:52
@Fukiszo,

i tried your two suggestions and none works, but this can be the reason:

Zitat:
Saving the data

Normally, we could save the content of a window into a file, or copy its content into memory by using the BitBlt function. The main problem while saving the captured data by the magnification library is that we cannot access the bitmap of the host window or the magnification window with the BitBlt function as usual. So we use a work around by using the MagSetImageScalingCallback() function, which is described as below.
This alert can be found on C++ example linked on question.
So, i think that with BMP.Canvas.CopyRect() also not is different.
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#6

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 22:04
sorry i dont know MagXXXXX.pas units neither their .dll,
i gave general examples,
if MAGxxx uses overlay to display something, my method fail. that i think your warning is telling.
I'm sorry!

...using the MagSetImageScalingCallback() function, which is described as below...
can you show that?

Geändert von Fukiszo (27. Jan 2018 um 22:07 Uhr)
  Mit Zitat antworten Zitat
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#7

AW: MagSetWindowFilterList function not remove specified window of screenshot

  Alt 27. Jan 2018, 22:14
...using the MagSetImageScalingCallback() function, which is described as below...
can you show that?
@Fukiszo, i still will try translate this part

Geändert von flashcoder (27. Jan 2018 um 22:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz