Seite 1 von 1

GrabSprite() (oder ähnliches) auch ohne Screen?

Verfasst: 23.05.2006 15:12
von Rattlesnake Entertainment
Hi
Ich will ein Programm machen, wo der Desktop, bzw die Benutzeroberfläche fotografiert wird, und dann auf einem Screen angezeigt wird.
Problem: so viel ich weiß, kann man Sprite-Befehle nur auf Screens ausführen, ausser es gibt einen Befehl GrabDesktop() oder so ähnlich
Lösung(en):Leider noch keine :cry:
Na ja hoffentlich kann mir wer helfen :|

Verfasst: 23.05.2006 15:17
von AND51
Wie wäre es denn mal wenn du im FOrum nach der Möglichkeit suchst, einen Screenshot nzu erstellen? Dazu gibt es hier genug Beiträge und Lösungen; ferner gibt es diese Code auch schon in diversen Libs, sollte also nicht ganz unbekannt sein...

Verfasst: 23.05.2006 16:41
von Mok
Soviel ich da weiß, geht das nicht. Ich blättere mal alle PB-Hilfen durch.

Verfasst: 23.05.2006 16:44
von DarkDragon
Mok hat geschrieben:Soviel ich da weiß, geht das nicht. Ich blättere mal alle PB-Hilfen durch.
/:-> http://www.purebasic.fr/german/viewtopi ... screenshot
Im CodeArchiv gibts auch noch Codes.

Verfasst: 23.05.2006 17:00
von Rattlesnake Entertainment
jetzt werde ich gleich zusammengedroschen, aber ich will den ganzen Desktop fotografieren, und evtl. das bild auch noch speichern

Verfasst: 23.05.2006 17:29
von roherter
Soweit ich da erkennen kann auf dem ersten blick hat dir DarkDragon schon die antwort gegeben du müsstet dir halt nur mal die zweite Procedure anschauen von dem link s.o. :shock:

Verfasst: 26.05.2006 08:35
von Jilocasin
@Rattlesnake

Das ist die einfachste Variante:

Code: Alles auswählen

;Bitmap anlegen:
CreateImage(0,GetSystemmetrics_(#SM_CXSCREEN),GetSystemmetrics_(#SM_CYSCREEN))

;auf angelegtes Bitmap zeichnen:
DC = StartDrawing(ImageOutput())
  BitBlt_(DC,0,0,ImageWidth(),ImageHeight(),GetDC_(GetDesktopWindow_()),0,0,#SRCCOPY)
StopDrawing()

;Bitmap an Fenstergroesse anpassen
ResizeImage(0,640,480)

If OpenWindow(0,100,100,640,480, #PB_Window_SystemMenu, "Screenshot")
  Repeat
    EventID.l = WaitWindowEvent()
    StartDrawing(WindowOutput())
      DrawImage(ImageID(),0,0)
    StopDrawing()
    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf
  Until Quit = 1
EndIf
End

Verfasst: 27.05.2006 16:59
von Rattlesnake Entertainment
@Jilocasin:
Jau, das hab' ich gesucht, Danke :)