Ganzen desktop als Screen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Ganzen desktop als Screen

Beitrag von Alves »

Wie kann ich den ganzen Desktop mit allen Windows wie einen Screen behandeln, also das die Windows nicht mehr reagieren auf Tastendrücke?

Könnte man vll per Screenshot und ScreenOutput machen, aber die gefundenen Beispiele wollen sich nicht verstehen lassen. Hilfe?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ermn.. was genau hast du vor?

also, es gibt möglichkeiten, einen desktop-screenshot zu machen und den als hintergrundbild für nen DX-screen zu verwenden.
das akute optische problem wird der Mauszeiger sein.
das würdest du umgehen, wenn du ein borderless maximized win erstellst, mit einem windowedscreen, der die aktuelle desktopgröße benutzt.

außerdem solltest du dann alle eingaben hooken, oder wär das ok, wenn dein prog mit Alt-Tab übergangen werden kann?

screenshot vom desktop gibt bestimmt forenthemen dazu.

wenn du dort nicht klar kommst, solltest du vllt. das alte topic hochholen, damit wir wissen, wovon du redest...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Nee, überspringen ist nicht gut.

Genau das wollt ich machen. Screenshot vom Desktop (ohne Cursor) und als auf den Screen zeichnen.

Was ich vorhab?

Ein Prog was ich früher mal gesehen hab, wo man den Desktop zerballern kann.
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Beitrag von Jilocasin »

ganzen Desktop mit allen Windows wie einen Screen behandeln

Per OpenScreen(...) oder was meinst du?

//nachtrag

Pardon! Ich war leider etwas zu spät! :lol:
Zuletzt geändert von Jilocasin am 11.06.2006 17:37, insgesamt 1-mal geändert.
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Jilocasin hat geschrieben:ganzen Desktop mit allen Windows wie einen Screen behandeln

Per OpenScreen(...) :lol: :lol: oder was meinst du?
Das was im Post davor steht.

Mit allen Windows.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ach SOOO.. das sollte doch supereasy gehen.

also, screenshot von desktop per programm machen lassen muss möglich sein, schließlich kostet mich das nur einen knopfdruck, also ist die funktion vorhanden.

hast du denn mit der boardsuche nix gefunden?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Beitrag von Jilocasin »

Gugg mal hier:
http://www.purebasic.fr/german/viewtopic.php?t=8513

//nachtrag

schon wieder zu spät ! :lol: :cry:
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Ander Variante bin ich ja grad dran.

Verprügelt mich, ich weiß, aber ich komm damit nicht klar:

Hab jetzt den Code von Jilocasin:

Code: Alles auswählen

Enumeration
  #image
EndEnumeration  


;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 1=2
If OpenWindow(0, 10, 10, 640, 480, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "Screenshot") 
StartDrawing(WindowOutput()) 
DrawImage(ImageID(),0,0) 
StopDrawing() 
  Repeat 
    EventID.l = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf 
  Until Quit = 1 
EndIf 
End  
EndIf

InitKeyboard()
InitSprite()

OpenScreen(800,600,32,"Abreagieren")
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
StartDrawing(ScreenOutput())
  DrawImage(ImageID(), 0, 0)
StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)     


Er öffnet den Screen, aber er rendert nichts drauf.

Edit:

Schlagt mich noch doller, ich hab nich mal ein FlipBuffers().
Geht aber trotzdem nicht.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Danke für die Hilfe, funzt jetzt mit diesem Kot:

Code: Alles auswählen

Enumeration
  #image
EndEnumeration  


;Bitmap anlegen 
CreateImage(#image,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(#image,800,600) 


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

ergeb=UseImage(#image)
InitKeyboard()
InitSprite()

OpenScreen(800,600,32,"Abreagieren")
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
StartDrawing(ScreenOutput())
  DrawImage(ergeb, 0, 0)
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)     
Alleridngs lässt die Quality ein bisschen zu wünschen übrig.

Auch geändert.

Ein Wunder. Heut brauch ich kaum Hilfe, aber nachher wahrsce, bei den MouseBefehlen...
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Alves hat geschrieben:funzt jetzt mit diesem Kot
Ähm ja?
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Antworten