Entwickler-Ecke

Sonstiges (Delphi) - Bestimmten Bereich des Desktops ins TImage packen


Mindforce - Di 02.01.07 23:11
Titel: Bestimmten Bereich des Desktops ins TImage packen
Hi,

wie kann ich einen bestimmten Teil des Desktops in ein TImage packen, und wie könnte ich diesen Teil makieren?
Es gibt ja viele ScreenShot Programme mitdem man eine Zone makieren kann was "Fotografiert" werden soll.
Genau das möchte ich gerne machen!
Nur, wie?!

Thx!

M!ndforce


Coder - Mi 03.01.07 00:55

Such mal nach Screenshot und nach malen oder zeichnen auf den Desktop.

MfG


Mindforce - Mi 03.01.07 21:11

Hmmmm,

ich finde nex :-(


jaenicke - Mi 03.01.07 22:02

Also bei der Suche nach "Screenshot Desktop" habe ich z.B. diesen Thread gefunden: ;-)
http://www.delphi-forum.de/viewtopic.php?t=62993&highlight=screenshot+desktop


Mindforce - Mi 03.01.07 22:17

Hi,

ich hab mir den Thread durchgelesen, kann mir aber kein Code draus mixen einen bestimmten bereich auswählen zu können und ihm zu sagen das er genau diesen Bereich fotografieren soll! :eyes:

M!ndforce


alias5000 - Mi 03.01.07 22:27

user profile iconMrSaint hat im oben verlinkten Artikel geschrieben:
Hmm... Ich hab's aus die Schnelle damit versucht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
var 
  WinDC,
  MemDC   : hDC;
  Desktop : hBitmap;
  zx,
  zy      : integer;
  bmp     : TBitmap;
begin
  zx := Screen.Width;
  zy := Screen.Height;
  WinDC := GetDC (GetDeskTopWindow); {Bildschirmkontext holen}
  MemDC := CreateCompatibleDC (WinDC); {Kompatiblen Kontext erstellen}
  Desktop := CreateCompatibleBitmap (WinDC, zx, zy); {Bitmaphandle machen}
  SelectObject (MemDC, Desktop); {selektieren}
  BitBlt (MemDC, 0, 0, zx, zy, WinDC, 0, 0, SRCCOPY); {kopieren}
  DeleteDC (MemDC); {und wech damit}
  ReleaseDC (GetDeskTopWindow, WinDC); {diesen auch}
  bmp := TBitmap.Create;
  try
    bmp.Handle := Desktop;
    Image1.Picture.Bitmap.Assign(bmp);
  finally
    FreeAndNil(bmp);
  end;
end;


Leider wird auch ein "normaler" Screenshot gemacht :( Vielleicht fällt mir ja irgendwann mal noch was dazu ein, muss jetzt aber rst mal weg...


MrSaint


Und damit erhälst du ja einen Screenshot des Desktops. Jetzt musst du noch gucken, wie man auf dem Desktop eine Auswahl treffen könnte (da müsste ich jetzt auch suchen, kann da jetzt auch nichts zu sagen). Die Koordinaten kannst du dir ja merken und dann entsprechend das Bild zusammenschneiden.

Ich hoffe das hat nen Denkanstoss gebracht... :roll:

Gruß alias5000


jaenicke - Mi 03.01.07 23:08

Naja, was diese Programme machen ist ja, den Benutzer die Auswahl auf dem zuvor erstellten Bildschirmfoto zu machen und dabei ggf. noch die Fenster hervorzuheben.
Es gibt auch Programme, die das anders machen, aber das live zu machen... ich wüsste da nicht wie. Ich glaube da gibts was von Windows von wegen Desktop disablen, aber ich weiß nicht wie das unter XP geht und ob es überhaupt geht.

Das einfachste dürfte sein, einfach ein Bildschirmfoto mit dem obigen Code zumachen, dieses im Vollbild anzuzeigen, z.B. per Formular mit TopMost, und dann den User dort die Auswahl machen lassen. So meinte ich den Hinweis auf den anderen Thread.