Seite 1 von 2

Maus und Desktop

Verfasst: 25.10.2006 17:11
von Xaby
Hallo Fans,

wie kann ich eine Art ScreenShot vom Desktop machen?

>> damit hier nicht wieder Leute schreiben: Bitte genauer und dafür gibt es doch Programme, oder wozu brauchst du das ... :

Ich würde gern den Desktophintergrund in einem #Image speichern und danach vielleicht zerstören oder sowas.

Eine Art transparentes Fenster wäre cool. Aber alle Bemühungen meinerseits schlugen fehl.

Meist sind die Programme an und gleich wieder aus gegangen. Oder haben Fehlermeldungen ausgeworfen ...
Bzw. starteten gar nicht.

Achso und es sollte schon eine Art Fensteranwendung werden, also zu mindest ohne Sprites oder speziellen Grafikmodus.

Genauso würde mich interessieren, wie ich zum Beispiel Menü-Enträge im rechte-Maus-Tastemenü einstellen, verändern ... kann.

Oder mir ein eigenes Menü mache, wenn mein Programm läuft.


Denn irgendwie kann ich Gadgets immer nur in einem Fenster benutzen.
Oder?

Hülpfe bitte mal :oops:

Dank euch :allright:

Re: Maus und Desktop

Verfasst: 25.10.2006 17:19
von PMV
Xaby hat geschrieben:>> damit hier nicht wieder Leute schreiben: Bitte genauer und dafür gibt es doch Programme, oder wozu brauchst du das ... :
:mrgreen:
du hast folgendes vergessen:
Boardsuche, Codearchiv, PureBoard-Archiv

MFG PMV

Verfasst: 25.10.2006 18:18
von a14xerus
rechte menutaste:

rechte taste bei windowevent abfargen und mit displaymenu ein zuvor erstelltes menu darstellen

(siehe popup menu)

Verfasst: 25.10.2006 18:36
von Fluid Byte
wie kann ich eine Art ScreenShot vom Desktop machen?

Code: Alles auswählen

OpenWindow(0,0,0,500,400,"ScreenIt v8.6.5 Alpha 891",#WS_SYSMENU | #WS_CAPTION | 1)

CreateGadgetList(WindowID(0))

ButtonGadget(0,5,5,100,25,"Make Screenshot")
ButtonGadget(1,5,30,100,25,"Save As...",#WS_DISABLED)
ButtonGadget(2,5,55,100,25,"Exit")

TextGadget(3,110,5,385,390,"",4096)

Repeat 
	EventID = WaitWindowEvent()
	
	If EventID = #PB_Event_Gadget
		Select EventGadget()
			Case 0
			If hbmOutput : DeleteObject_(hbmOutput) : EndIf
			
			*hwndDesk = GetDesktopWindow_()
			
			hdcDesk = GetDC_(*hwndDesk)
			
			SCX = GetSystemMetrics_(#SM_CXSCREEN)
			SCY = GetSystemMetrics_(#SM_CYSCREEN)
			hbmOutput = CreateCompatibleBitmap_(hdcDesk,SCX,SCY)
			
			hdcMem = CreateCompatibleDC_(hdcDesk)
			SelectObject_(hdcMem,hbmOutput)
			BitBlt_(hdcMem,0,0,SCX,SCY,hdcDesk,0,0,#SRCCOPY)			
			DeleteDC_(hdcMem)

			ReleaseDC_(*hwndDesk,hdcDesk)
			
			DisableGadget(1,0)
			
			Case 1
			Filename$ = SaveFileRequester("","","Bitmap (*.*)|*.bmp",0)
			
			If Filename$		
				CreateImage(0,SCX,SCY)
				StartDrawing(ImageOutput(0))	
				DrawImage(hbmOutput,0,0)
				StopDrawing()				
				
				SaveImage(0,Filename$) : FreeImage(0)			
			EndIf
			
			Case 2 : End
		EndSelect
	
	EndIf
	
	hdcWin = StartDrawing(WindowOutput(0))	
	If hbmOutput : DrawImage(hbmOutput,110,5,385,390) : EndIf
	StopDrawing()
	
Until EventID = 16

If hbmOutput : DeleteObject_(hbmOutput) : EndIf
Eine Art transparentes Fenster wäre cool.

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"untitled",#WS_OVERLAPPEDWINDOW | 1)

osi.OSVERSIONINFO
osi\dwOSVersionInfoSize = SizeOf(OSVERSIONINFO) 
GetVersionEx_(osi)

If osi\dwPlatformId = #VER_PLATFORM_WIN32_NT
	SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_LAYERED)	
	SetLayeredWindowAttributes_(WindowID(0),0,120,#LWA_ALPHA)
EndIf

While WaitWindowEvent() ! 16 : Wend

Verfasst: 25.10.2006 21:36
von Xaby
@Fluid Byte ...

Scheiße, bist du gut :o

Wie schon beim letzten Thema an dich geschrieben, du handelst wenigstens.

Zu den beiden anderen kann ich nur sagen:

Vielen Dank für den Hinweis, mein Gott, wieso bin ich nicht allein drauf gekommen und Dank auch an euch, dass ihr gleich einen Link zum Board hier gepostet habt und ähnlich wie Fluid Byte gleich ein CODE-Besipiel geschrieben :shock: ==> Achtung Ironie. :mrgreen:


Mal ehrlich Leute, ist ja nicht so, dass ich nicht schon was versucht hatte.

Und es ist doch immer genau eine Zeile oder manchmal nur eine kleine Syntax-Erklräung oder ein Kniff, der alles erleichtert.
Doch wo sollte man den finden, wenn nicht hier?

Großes echtes Lob noch mal an Fluid Byte. Solltet euch ein Beispiel nehmen.

Denn es hilft ja allen, wir können alle was bei lernen und schaden kann es nicht, wenn PureBasic auch ,,NewBe-s,, schmackhaft gemacht wird.

Oder hättet ihr was gegen, wenn mehr Leute PB nutzen, weil es so schön einfach und trotzdem grenzenlos ist???

Euer Folker :allright:

Achso, und mal was, was nicht speziell PB ist ...

Kennt ihr den Punkt ...
Bild

Wie kann man den von PB aus umstellen?

Und wie kann man das aktuelle Hintergrundbild festlegen?

Sind es irgendwelche Registrieeinträge?

Wer weiß was :o


>> Achso, ... wie könnte man sowas selbst setzen?
HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\Spooler ...




Dank euch. Noch mal Gruß, Folker :allright:

Verfasst: 25.10.2006 21:49
von PMV
Xaby hat geschrieben:Vielen Dank für den Hinweis, mein Gott, wieso bin ich nicht allein drauf gekommen und Dank auch an euch, dass ihr gleich einen Link zum Board hier gepostet habt und ähnlich wie Fluid Byte gleich ein CODE-Besipiel geschrieben :shock: ==> Achtung Ironie. :mrgreen:
Entschuldige der Herr, aber es soll Leute geben, die vergessen ab und zu
mal das ein oder andere ... ich hab zwei Wörter in die Suche eingegeben
... "Screenshot" und "Desktop" und gleich einige Treffer gehabt. Auf
einen davon hab ich drauf geklickt und dort war ein verweis auf Sorce im
CodeArchiv ... mit dieser Information hab ich dann dir die paar Zeilen
schnell geschrieben um dich drauf hin zu weisen, dass es diese
Möglichkeiten noch gibt. So konnte ich dir in wenigen Minute helfen ... da
ich das gefundene nicht selber ausprobiert habe, habe ich es auch nicht
direkt als Link angegeben. Einer der Links oder Code im CodeArchiv wäre
aber sicher für dich passend gewesen ... hättest du gesucht.

Und wenn du mir mit diesen Zeilen sagen wolltest, du hast gesucht ...
dann interpretiere ich das so, das du nächste mal das auch getan hast
und ich mir damit überhaupt sparen kann, dir zu Antworten. Hier gibs eh
genug andere ... die Hilfe mehr zu schätzen wissen, auch wenn diese
etwas "bedürftiger" ausfällt ...

Ich fürchte, du hast mich heute am falschen Fuß erwischt -.-, naja,
vielleicht haste das nächste mal ja doch glück ... wer weis ...

MFG PMV

Verfasst: 25.10.2006 21:51
von Fluid Byte
@Fluid Byte ...

Scheiße, bist du gut :o

Wie schon beim letzten Thema an dich geschrieben, du handelst wenigstens.
Ach..... :oops:
Wie kann man den von PB aus umstellen?

Code: Alles auswählen

Procedure ShowDeskIcons(bFlag.b)
    *hwndProg = FindWindowEx_(0,0,"Progman",0)
    ShowWindow_(*hwndProg,bFlag)
EndProcedure
Simpel, nicht wahr? :wink:
Und wie kann man das aktuelle Hintergrundbild festlegen?

Code: Alles auswählen

SystemParametersInfo_(#SPI_SETDESKWALLPAPER,0,Dateiname$,0)
Wichtig: Ein Wallpaper muss vorher immer in das Windows Standard Bildformat (*.bmp) konvertiert werden!

Verfasst: 25.10.2006 22:01
von Kiffi
Xaby hat geschrieben:Großes echtes Lob noch mal an Fluid Byte. Solltet euch ein Beispiel nehmen.
Fluid Byte zeigt hier im Board einen bewundernswerten Altruismus, den ich
bei Deinen Postings nicht bereit bin aufzubringen.
Xaby hat geschrieben:Denn es hilft ja allen, wir können alle was bei lernen
wieso habe ich nur das dumpfe Gefühl, dass hier nur einer profitiert?

Verfasst: 25.10.2006 22:02
von Xaby
Nicht streiten.

@PMV
Ich hatte ja zwei Fragen gestellt :mrgreen:

Und wenn du dir schon die ,,Mühe,, machst und ins Codearchive schaust, hättest doch gleich auch den Link hier mit reinsetzen können :D

Übrigens, bin ja total froh, dass du schneller programmieren kannst als ich mir neue ,,Herausforderungen,, ausdenken kann /:->

Aber wenn ich

Code: Alles auswählen

ShowDeskIcons(0)
ausführe ... kann ich mein komplettes ZweiteMausTasteMenü nicht mehr benutzen :roll:

Aber ist auch cool :wink: :allright:

@Kiffi ... :? :( :shock:

Verfasst: 25.10.2006 22:11
von PMV
Ich hab ja nicht auf den Link zum CodeArchiv geklickt ...
Ich gebe keine Links durch, wenn ich nicht wenigstens davon ausgehen
kann, dass es auch hilfreich ist. Ich konnte nur davon ausgehen, das
irgend wo im CodeArchiv, PureBoard-Archiv oder hier im Board das
Gesuchte auf dich wartet :wink: . Also kein Link ... nur den Anstupser.

Ironie ist gut, du solltest diesen nur an der richtigen Stelle anwenden,
sonnst werden es immer mehr, die wie Kiffi keine lust mehr haben, dir zu
helfen.

Ich hab genau aus dem Grund dir geschrieben, weil ich weis, das nur
noch wenige hier etwas für dich tuen wollen ... aber wenn du so weiter
machst wirst du bald auf solche fleißigen Neulinge hier im Board
angewiesen sein, wenn es nicht schon soweit ist. :wink: Nur eine
Vermutung, soll ja nicht heißen, es hätte dich keiner gewarnt :D

2 Fragen ... hab mir extra noch mal genau deinen Post durchgelesen,
nach dem ersten lesen hatte ich nämlich kaum was verstanden und mich
deshalb nur auf die erste Frage konzentriert. Also ich sehe 3 Frage.

Und die letzten beiden versteh ich nicht wirklich :lol:
Was willst du mit nem "PopUp"-Menü machen? Ein existierendes
verändern? So weit ich weis musst du dann ein komplet neues erstellen.
Müsst ich aber noch ma nachschauen um das genau sagen zu können.
Es geht doch um die PB-Befehle, oder willst das per API machen?

Und das mit den Gadgets in mehreren Fenstern benutzen find ich erlich
gesagt ne seltzame Frage ... ich fänds unlogisch wenn man ein Gadget in
zwei Fenstern gleichzeitig verwenden könnte ... und nacheinander geht
sicher auch nicht ... höchstens mit viel Rumstochern in den
Objekteigenschaften des Gadgets ... da ists sicherer und einfacher,
jeweils ein neues Gadget an zu legen.

MFG PMV