Page 4 sur 12
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 1:30
par Backup
Ar-S a écrit :Dobro, ta proce et la mienne fonctionnent de la même façon... j'insiste
ben non , car ma procedure lit la couleur de reference ,puis utilise cette couleur
alors que la tienne est fixe
c'est bien pour ça que ça doit pas le faire .... et tu fais bien de proposer ce test a Nico .. du coup
il suffit que certaines carte graphique renvoient une couleur differente que celle de ta variable, et t'es dans les choux
alors que ma procedure , elle s'adapte
boude pas !!
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 11:01
par Ar-S
Code : Tout sélectionner
il suffit que certaines carte graphique renvoient une couleur differente que celle de ta variable, et t'es dans les choux
C'est exactement ce que je me suis dit. Je me suis aussi d'y que la résolution ecran et affichage pouvaient peut-être faire en sorte que le pixel sélectionné ne soit pas le bon..
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 12:51
par nico
Bon ben j'attend la 0.6.5, elle arrive quand
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 16:01
par Ar-S
Dès que je peux !
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 17:44
par Ar-S
Voilà la version pour Nico.
J'ai remanié la proce en capturant les pixels (sans valeur par defaut).
Un Messagerequester apparait pour afficher les couleurs des 2 pixels et voir leur correspondance
http://stock.ldvmultimedia.com/AR-S%20Stream_Radio.rar
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 18:37
par nico
Ton lien est mort.
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 18:44
par Backup
il est en forme le Ar-s
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 19:04
par nico
Bon j'ai compris que le lien était en fait:
http://stock.ldvmultimedia.com/AR-S%20Stream_Radio.ra
et là ça fonctionne!
[EDIT]
Je viens de faire des tests plus poussés, et on se rend compte que ta procédure ne sert à rien et du coup ça peut ne pas fonctionner.
Je m'explique: si je lance ton programme et que je met une fenêtre aussitôt par dessus, la valeur de comparaison des pixels restent bonne mais ne correspondent pas à ta fenêtre mais à celle qui est au dessus, du coup pas de spectrum. Tu dois récupérer la valeur de pixel de ton écran mais aussi celle de ta fenêtre pour la comparaison.
Peux tu poster ta procédure, je vais te la modifier!
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 19:48
par nico
Je crois que le mieux serait de rester fonctionnel et de faire:
Focus = Spectrum
Perte de Focus = disparition du Spectrum
Premier Plan = Spectrum
Parce que là tu t'es embarqué dans un truc foireux.
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 20:51
par Ar-S
Pour le moment je n'ai pas trouvé de pc ou la 0.6.4 ne fonctionne pas, ça aide pas non plus
...
voilà la procédure
P.S :
Creation est une global.b
Code : Tout sélectionner
Procedure CheckRecouvre()
Static CouleurCible1.i , CouleurCible2.i
PosX = WindowX(#LDVM)
PosY = WindowY(#LDVM)
If Flag = 0
SetActiveWindow(#LDVM)
CouleurCible1.i = Pxlcolor(PosX + 14, posY + 84)
CouleurCible2.i = Pxlcolor(PosX + WindowWidth(#LDVM)-7, posY + 36)
Flag +1
EndIf
If Pxlcolor(PosX + 14, posY + 84) <> CouleurCible1 And Pxlcolor(PosX + WindowWidth(#LDVm)-7, posY + 36) <> CouleurCible2
If creation = 0
DestroyOWS() ; macro du closescreen()
Creation = 1 ; Pour ne pas refermer la fenêtre vu qu'elle est déjà fermée
EndIf
Debug "FENETRE CACHEE"
Else
If Creation = 1
CreaOWS() ; macro de l'openwindowsScreen()
CreaSPRITE() ; Macro de La creation de sprite
Creation = 0 ; Pour ne pas recréer la fenêtre et les sprites vu qu'ils sont crées
SetActiveWindow(#ldvm)
EndIf
Debug "FENETRE VISIBLE"
EndIf
ProcedureReturn Creation
EndProcedure
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 21:58
par nico
Elle est ou cette procedure: Pxlcolor
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 22:51
par Ar-S
Ooouupps
Code : Tout sélectionner
Procedure Pxlcolor(X,Y)
handle=GetDC_(GetDesktopWindow_())
couleur=GetPixel_(handle,X,Y)
ReleaseDC_(GetDesktopWindow_(),handle )
ProcedureReturn couleur
EndProcedure
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 23:20
par Backup
...
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 23:22
par nico
J'espère n'avoir rien oublié:
Code : Tout sélectionner
Procedure.l PxlcolorWindow(window.i, x.l, y.l)
Protected Color.l = -1
If StartDrawing(WindowOutput(window))
Color = Point(x, y)
StopDrawing()
EndIf
ProcedureReturn Color
EndProcedure
Procedure.l PxlcolorDesktop(x.l, y.l)
Protected Hdc.i, color.l = -1, Handle.i
Handle = GetDesktopWindow_()
If Handle <> 0
Hdc=GetDC_(Handle)
If Hdc <> 0
color=GetPixel_(Hdc, x, y)
ReleaseDC_(Handle, Hdc)
EndIf
EndIf
ProcedureReturn color
EndProcedure
Procedure CheckRecouvre()
Protected PosX.l, PosY.l, CouleurDesktop1.l , CouleurDesktop2.l
Static CouleurWindow1.l , CouleurWindow2.l
PosX = WindowX(#LDVM)
PosY = WindowY(#LDVM)
If Flag = 0
CouleurWindow1 = PxlcolorWindow(#LDVM, PosX + 14, posY + 84)
CouleurWindow2 = PxlcolorWindow(#LDVM, PosX + WindowWidth(#LDVM)-7, posY + 36)
If CouleurCible1 <> -1 And CouleurCible2 <> -1
Flag +1
EndIf
EndIf
CouleurDesktop1 = PxlcolorDesktop(PosX + 14, posY + 84)
CouleurDesktop2 = PxlcolorDesktop(PosX + WindowWidth(#LDVm)-7, posY + 36)
If CouleurDesktop1 <> CouleurWindow1 And CouleurDesktop2 <> CouleurWindow2 And CouleurDesktop1 <> -1 And CouleurDesktop2 <> -1
If creation = 0
DestroyOWS() ; macro du closescreen()
Creation = 1 ; Pour ne pas refermer la fenêtre vu qu'elle est déjà fermée
EndIf
Debug "FENETRE CACHEE"
Else
If Creation = 1
CreaOWS() ; macro de l'openwindowsScreen()
CreaSPRITE() ; Macro de La creation de sprite
Creation = 0 ; Pour ne pas recréer la fenêtre et les sprites vu qu'ils sont crées
SetActiveWindow(#ldvm)
EndIf
Debug "FENETRE VISIBLE"
EndIf
ProcedureReturn Creation
EndProcedure
Re: ~ STREAM RADIO ~ v 0.6.4
Publié : lun. 09/déc./2013 23:34
par falsam
j'espérer que la correction de Nico pourra satisfaire Ar-S.
Je propose une autre solution qui consiste à connaitre l'application qui est au premier plan et est ce que cette application recouvre totalement la radio. Cette solution utilise des API Windows
Code : Tout sélectionner
Enumeration
#Mainform
#ForeGroundApplication
EndEnumeration
Define.l Event, GEvent, TiEvent
Structure Process
ExeName.s
Left.i
Top.i
Width.i
Height.i
EndStructure
Global NewList Applications.Process()
Procedure.s ListWindows(hwnd,Param)
Protected Buffer.s
If GetWindowLong_(hwnd, #GWL_EXSTYLE) ! #WS_EX_TOOLWINDOW And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_VISIBLE
Buffer = Space(250)
GetWindowText_(hwnd, Buffer, 250)
GetWindowRect_(hWnd, rc.RECT)
If Buffer<>"" And Buffer <> "Démarrer"
AddElement(Applications())
Applications()\ExeName = Buffer
Applications()\Left = rc\left
Applications()\Top = rc\top
Applications()\Width = rc\right - rc\left
Applications()\Height = rc\bottom - rc\top
EndIf
EndIf
EndProcedure
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 465, 80, "Ar-S Radio", #PB_Window_SystemMenu)
TextGadget(#ForeGroundApplication, 10, 10, 400, 20, "")
AddWindowTimer(#Mainform, 100, 500)
EndProcedure
Open_MainForm()
Repeat
Event = WaitWindowEvent(10)
GEvent = EventGadget()
TiEvent = EventTimer()
Select Event
Case #PB_Event_Timer
Select TiEvent
Case 100
ClearList(Applications())
EnumChildWindows_(FindWindow_("ToolbarWindow32",0),@ListWindows(),0)
FirstElement(Applications())
With Applications()
SetGadgetText(#ForeGroundApplication, Str(n)+" - "+\ExeName + " Left: "+\Left + " Top: "+\Top + " Width: "+\Width + " Height: "+\Height)
If \ExeName <> "Ar-S Radio"
If WindowX(#Mainform)>=\Left And WindowX(#Mainform)<=\Left+\Width
If WindowY(#Mainform)>=\Top And WindowY(#Mainform)<=\Top+\Height
MessageRequester("Information","J'ai été recouvert par "+\ExeName)
EndIf
EndIf
EndIf
EndWith
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Lancer ce code et cliquer ensuite sur une autre application. Vous verrez que le nom de l'application active s'affiche avec ses coordonnées. Essayez ensuite de recouvrir la fenêtre de test avec l'application active. Une boite d'information vous informera que la fenêtre de test a été recouverte.