bon j'ai repris le code de kelly et en lui ajoutant la capture d'ecran et
l'adaptation a la resolution en cours , je me suis permis d'en faire un
Screen saver tout simple
il faut le compiller en "deformation.scr"
a copier dans C:\WINDOWS\system32\
sous le nom de deformation.scr
ensuite vous avez acces au screen saver comme d'habitude !
il est a noter que j'ai mis une signature en bas de l'ecran !
il suffit dans les parametre du screensaver d'entrer
"kelly" , pour voir disparaitre le marquage ...
la petite fenetre n'est pas muni de bouton "ok" , il suffis de la quitter
par la croix , pour que le fichier "deformation.ini" soit modifié
ça peut rammer un peut l'orsqu'on quitte cette petite fenetre ! ..
pour voir l'effet il faut attendre bien 3 secondes ....
voici le code :
Code : Tout sélectionner
;
; ici les initialisations des variables et tableaux
;"/s" pour le lancer
;"/c:" + un nombre pour le faire Paramétrer
;"/p", espace, et un nombre qd son nom est simplement séletionné dans la boîte des propriétés du bureau
; "/p" , peut etre Preview ??
;Sinon, un truc tout con:
;Code:
;OpenConsole()
;p$=ProgramParameter()
;While p$
; PrintN(p$)
; p$=ProgramParameter()
;Wend
;Input()
;
Enumeration
#Window_0
#Window_1
EndEnumeration
;- Gadget Constants
;
Enumeration
#code
#Text_0
#sprite
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 293, 129, 249, 109, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "config")
If CreateGadgetList(WindowID())
StringGadget(#code, 40, 50, 170, 30, "", #PB_String_Password)
TextGadget(#Text_0, 10, 20, 90, 20, "ENTREZ le Code")
EndIf
EndIf
EndProcedure
#Police=1
;*********** pour le screensaver
Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
End
EndIf
If Param = "/c" :;l'utilisateur veut paramettrer le screensaver !
Open_Window_0():; jouvre ma fenetre ( cree a partir de visual designer)
Repeat
Texte$ = GetGadgetText(#code):;je recupere le contenu de ma boite de config
If Texte$="kelly":;si le gars tappe le code "kelly"
dobro=1:; c'est bon on affiche pas la surimpression
code$="ok":;on se prepare a ecrire le mot "ok" dans un fichier
Resultat = OpenFile(1, "deformation.ini") :;on cree le fichier
WriteStringN(code$) :; on ecrit dedans "ok"
CloseFile(1)
Else
dobro=0:; la le mec a pas rentré le bon code
EndIf
Until WindowEvent() = #PB_Event_CloseWindow :; le gars a fermé la boite de config
EndIf
GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
If ReadFile(1, "deformation.ini"):;en temps normal on commence par regarder si le screen saver est enregistré
code$ = ReadString() :; on lit le contenu de "deformation.ini"
CloseFile(1)
EndIf
If code$="ok":; bon le gars est enregistré
dobro=1:; ce flag va retirer la surimpression
Else
dobro=0:; il n'est pas enregistrer donc on affiche la surimpression
EndIf
;************ c'est tout pour le parametrage du screen saver
GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "system", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
Ecran_Largeur=EcranX
Ecran_Hauteur=EcranY
#CAPTUREBLT = $40000000
Gosub capture_ecran
OpenWindow( #Window_1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess , "Dos 3.10")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan
OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)
; faire ici les initialisations du pre affichage
LoadSprite( #sprite,"ecran.bmp")
DisplaySprite(#sprite,0,0)
FlipBuffers()
Dim p(Ecran_Largeur*2,Ecran_Hauteur*2)
StartDrawing(ScreenOutput())
For i=0 To Ecran_Largeur
For u=0 To Ecran_Hauteur
p(640+i,512+u)=Point(i,u)
Next
Next
DrawText(" En ROUTE")
StopDrawing()
FreeSprite( #sprite)
gro=150
Dim zoom0.f(gro)
Dim trans(gro)
zoom0(0)=0
gro2.f=0.15
For i=0 To gro
zoom0(i)=gro2
trans(i)=gro
gro2-0.001
Next
Dim zx(gro,gro)
Dim zy(gro,gro)
For i=0 To gro
For u=0 To gro
x0=Sqr(i*i+u*u)
If x0<=gro
zx(i,u)=i*(1+zoom0(x0))
zy(i,u)=u*(1+zoom0(x0))
Else
If trans(i)=gro
trans(i)=u-1
EndIf
EndIf
Next
Next
Repeat
xx=Random(Ecran_Largeur)
yy=Random(Ecran_Hauteur)
For u=1 To gro
For i=1 To trans(u)
c=p(639+xx+zx(i,u),511+yy+zy(i,u))
p(639+xx+i,511+yy+u)=c
c=p(640+xx-zx(i,u),512+yy-zy(i,u))
p(640+xx-i,512+yy-u)=c
c=p(640+xx-zx(i,u),511+yy+zy(i,u))
p(640+xx-i,511+yy+u)=c
c=p(639+xx+zx(i,u),512+yy-zy(i,u))
p(639+xx+i,512+yy-u)=c
Next
Next
StartDrawing(ScreenOutput())
For i=0 To Ecran_Largeur-1
For u=0 To Ecran_Hauteur-1
Plot (i,u,p(640+i,512+u))
Next
Next
StopDrawing()
If dobro=0
;**************** crée par Dobro **********************
StartDrawing( ScreenOutput())
BackColor(0,0,0):;couleur de fond noir
FrontColor(0, 120, 0)
Locate(EcranX-TextLength("Créé par Kelly et Dobro")-200, EcranY-45):;ceci pose le crayon au bon endroit (une ligne en dessous) comme indique plus haut
DrawingFont(FontID):;attention on va ecrire du text sur la zone reserve du sprite
DrawText("Créé par Kelly et Dobro"):; voila on le fait
StopDrawing():
; ********************************************
EndIf
FlipBuffers()
GetCursorPos_(Souris.POINT):; test le curseur de la souris
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y
ShowCursor_(1)
End
capture_ecran:
DC = GetDC_(0)
CreateImage(8, Ecran_Largeur, Ecran_Hauteur)
UseImage(8)
dessin = StartDrawing(ImageOutput())
BitBlt_(dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT|#CAPTUREBLT)
; pour n'avoir que le fond sans les fenetre retirer le #CAPTUREBLT
StopDrawing()
ReleaseDC_(0, DC)
SaveImage(8, "ecran.bmp")
Delay(2000)
Return