WebGadget avancé

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

WebGadget avancé

Message par omega »

Bonjour,

J'aurais souhaité mettre au point un navigateur (comme firefox par exemple) mais à ma façon personnalisée. Après avoir effectué un premier test, je me suis trouvé devant un obstacle que je n'avais pas prévu. Les textes et images animés ne fonctionnent pas et les balises css sont ignorées... Y a t-il un moyen d'associer ces balises au webGadget pour qu'il puisse les prendre en charge?

Merci beaucoup
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WebGadget avancé

Message par Ar-S »

Tu parles de quoi quand tu dis images et textes animés ? De flash ? d'HTML5 ?
Si tu ouvres une page web avec un webgadget, il ni a aucune raison pour qu'une animation html ne s'affiche pas.

Je ne comprends pas ce que tu veux dire avec tes CSS.
Si une page web à un css, je ne vois pas pourquoi il ne serait pas pris en charge.

Exemple :
Essaye ça : (clic sur NON si tu as une alert concernant un script en https.)

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 990, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    WebGadget(0, 10, 10, 970, 780, "http://giphy.com") 
    Repeat 
    Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: WebGadget avancé

Message par falsam »

Les textes et images animés ne fonctionnent pas et les balises css sont ignorées...
L'idéal serait d'avoir un bout de code.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: WebGadget avancé

Message par omega »

Essayez ce site : www.free.fr d'abord avec Google Chrome ou firefox puis essayez le même site avec WebGadget, vous allez voir la différence.. J'ai essayé avec plusieurs sites (utilisant de l'animation) , c'est toujours le même résultat.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: WebGadget avancé

Message par falsam »

Même rendu que sous chrome ou FireFox. Pourrais tu préciser :
- Ton Systéme d'exploitation
- Version de PureBasic

A mettre dans ta signature aussi pour ne plus avoir à le redemander. Merci.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: WebGadget avancé

Message par falsam »

Aide a écrit :The WebGadget uses the Internet Explorer 4.0
Comme tu peux le voir, le WebGadget() sous windows est compatible Internet Explorer, tu vas trés vite rencontrer des difficultés pour le rendre visuellement compatible Chrome ou FireFox.

Un code pour t'aider qui va inscrire ton application dans la base de registre en associant la compatibilité Internet Explorer 11 à ce WebGadet().

Code : Tout sélectionner

;WebGadget HTML5 compatible
;
;Contributor: Sphere Users Pure Basic
;

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #URL
  #WebGadget
EndEnumeration

Global Url.s="http://free.fr/"

Declare Start()
Declare NavigationCallback(Gadget, NewUrl.s)

Declare RegConvertRegKeyToTopKeyAndKeyName(Key.s)
Declare RegSetValue(Key.s, ValueName.s, Value.s, Type, ComputerName.s)
Declare RegCreateKey(Key.s, ComputerName.s)
Declare RegCreateKeyValue(Key.s,ValueName.s,Value.s,Type,ComputerName.s)

Declare Exit()

Start()

Procedure Start()
  ;Rendre le webgadget compatible Internet Explorer 11  
  RegCreateKeyValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", GetFilePart(ProgramFilename()), "11001", #REG_DWORD, ".")
  
  OpenWindow(#MainForm, 0, 0, 1024, 768,"WebGadget HTML5 compatible",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  WebGadget(#WebGadget, 0, 0, 1024, 768, Url)   
  SetGadgetAttribute(#WebGadget, #PB_Web_NavigationCallback, @NavigationCallback())  
  
  SetGadgetAttribute(#WebGadget, #PB_Web_BlockPopups, #True)  
  SetGadgetAttribute(#WebGadget, #PB_Web_BlockPopupMenu, #True)
  
  myBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA)
  myBrowser\put_Silent(#True) ;Suppress error warnings in WebGadget
  myBrowser\put_Left(0) 
  
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  Repeat : WaitWindowEvent(5) : ForEver
EndProcedure

;Callback de navigation
Procedure NavigationCallback(Gadget, NewUrl.s) 
  Debug "Url sélectionné " + NewUrl + " - " + "Url précédent " + Url
  
  If NewUrl <> Url
    Url = NewUrl  
  EndIf
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure 

;-
;- U.T. Registry
Procedure RegConvertRegKeyToTopKeyAndKeyName(Key.s)
  Shared topKey,KeyName.s
  
  temp.s=StringField(Key,1,"\")
  temp=UCase(temp)
  Select temp
    Case "HKEY_CLASSES_ROOT"
      topKey=#HKEY_CLASSES_ROOT
    Case "HKEY_CURRENT_USER"
      topKey=#HKEY_CURRENT_USER
    Case "HKEY_LOCAL_MACHINE"
      topKey=#HKEY_LOCAL_MACHINE
    Case "HKEY_USERS"
      topKey=#HKEY_USERS 
    Case "HKEY_CURRENT_CONFIG"
      topKey=#HKEY_CURRENT_CONFIG 
  EndSelect
  
  PositionSlash=FindString(Key,"\",1)
  KeyName.s=Right(Key,(Len(Key)-PositionSlash))
  
EndProcedure

Procedure RegSetValue(Key.s, ValueName.s, Value.s, Type, ComputerName.s) ; Sets a Value
  
  ;Type can be #REG_SZ / #REG_DWORD / #REG_BINARY / #REG_EXPAND_SZ
  ;For REG_BINARY type use Hexa value as String
  ;Returns 1 if successful or 0 if it fails
  
  Shared RegWow64.l,RegEx,topKey,KeyName.s
  RegConvertRegKeyToTopKeyAndKeyName(Key)
  
  If ComputerName = "."
    If RegEx
      GetHandle = RegOpenKeyEx_(topKey,KeyName,0,#KEY_ALL_ACCESS|RegWow64,@hKey) 
    Else
      GetHandle = RegOpenKey_(topKey,KeyName,@hKey) 
    EndIf
  Else 
    lReturnCode = RegConnectRegistry_(ComputerName,topKey,@lhRemoteRegistry) 
    If RegEx
      GetHandle = RegOpenKeyEx_(lhRemoteRegistry,KeyName,0,#KEY_ALL_ACCESS|RegWow64,@hKey) 
    Else
      GetHandle = RegOpenKey_(lhRemoteRegistry,KeyName,@hKey) 
    EndIf
  EndIf 
  
  If GetHandle = #ERROR_SUCCESS 
    lpcbData = 255 
    lpData.s = Space(255) 
    
    Select Type 
        
      Case #REG_EXPAND_SZ 
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_EXPAND_SZ, @Value, Len(Value) + 1) 
        
      Case #REG_SZ 
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_SZ, @Value, Len(Value) + 1) 
        
      Case #REG_DWORD 
        lValue = Val(Value) 
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_DWORD, @lValue, 4) 
        
      Case #REG_BINARY
        LenBuffer=Len(Value)/2
        *RegBuffer=AllocateMemory(LenBuffer)
        For n=0 To LenBuffer-1
          OctetHexa.s=Mid(Value,(n*2)+1,2)
          Octet=Val("$"+OctetHexa)
          PokeB(*RegBuffer+n,Octet)
        Next
        GetHandle= RegSetValueEx_(hKey,ValueName,0,#REG_BINARY,*RegBuffer,LenBuffer) 
        FreeMemory(*RegBuffer)
        
    EndSelect 
    
    RegCloseKey_(hKey) 
    ergebnis = 1 
    ProcedureReturn ergebnis 
  Else 
    RegCloseKey_(hKey) 
    ergebnis = 0 
    ProcedureReturn ergebnis 
  EndIf 
EndProcedure 

Procedure RegCreateKey(Key.s, ComputerName.s)
  ;It create subkey if KeyPath don't exist
  ;Returns 1 if successful or 0 if it fails
  
  Shared RegWow64.l,RegEx,topKey,KeyName.s
  
  RegConvertRegKeyToTopKeyAndKeyName(Key)  
  lpSecurityAttributes.SECURITY_ATTRIBUTEs 
  
  If ComputerName = "."
    If RegEx
      GetHandle = RegCreateKeyEx_(topKey,KeyName,0,0,#REG_OPTION_NON_VOLATILE,#KEY_ALL_ACCESS|RegWow64,@lpSecurityAttributes,@hNewKey,@GetHandle)
    Else
      GetHandle = RegCreateKey_(topKey,KeyName,@hNewKey)
    EndIf
  Else 
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) 
    If RegEx
      GetHandle = RegCreateKeyEx_(lhRemoteRegistry,KeyName,0,0,#REG_OPTION_NON_VOLATILE,#KEY_ALL_ACCESS|RegWow64,@lpSecurityAttributes,@hNewKey,@GetHandle)
    Else
      GetHandle = RegCreateKey_(lhRemoteRegistry,KeyName,@hNewKey) 
    EndIf
  EndIf 
  
  If GetHandle = #ERROR_SUCCESS 
    GetHandle = RegCloseKey_(hNewKey) 
    CreateKey = #True 
  Else 
    CreateKey = #False 
  EndIf 
  ProcedureReturn CreateKey 
EndProcedure 

Procedure RegCreateKeyValue(Key.s,ValueName.s,Value.s,Type,ComputerName.s) ; Creates a Key and a Value in a Single Command
  
  ;Type can be #REG_SZ or #REG_DWORD
  ;Returns 1 if successful or 0 if it fails  
  RegCreateKey(Key,ComputerName) 
  ProcedureReturn RegSetValue(Key,ValueName,Value,Type,ComputerName) 
EndProcedure 

Procedure Exit()
  End  
EndProcedure
Le WebGadget() est associé à un callback de navigation qui te donnera le lien cliqué et le lien précédent.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: WebGadget avancé

Message par Kwai chang caine »

Il est cool ton code FALSAM, merci 8)
C'est vrai depuis l'abandon de FF par FRED, on peut pas dire que le webgadget est dernier cri :|

J'ai testé avec ça...
http://www.mon-navigateur.com/
Ca marche du feu de dieu !!! 8O

J'suis au dernier cri....IE9 :mrgreen:
A moins que ce soit toi qui pousse le dernier :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WebGadget avancé

Message par Ar-S »

Question.
IE est propriétaire. Chrome aussi. Je crois que chromium ne l'est pas (je ne sais plus) mais firefox est libre.
Pourquoi ne pas baser ce webgadget sur firefox, quitte à alourdir le gadget en natif.
En 2017, un webgadget se doit d'être à jour.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: WebGadget avancé

Message par djes »

C'est un bon débat, je pense que ça pourrait mener à une amélioration significative du langage.

En fait, certains composants pourraient être intégrés, mais cela implique un développement spécifique très coûteux en temps, en énergie, en argent même. En outre, ils ne servent pas à tout le monde, et, pour une même fonctionnalité, il y a plusieurs choix possibles.

Je me demande si la clef ne se situe pas dans une plus grande facilité d'intégration de composants (avec peut-être une lib spécifique ou de nouveaux mots-clés), avec un dossier exemple dédié à cette tâche... :?:

La bibliothèque commate remplit un peu ce rôle, mais elle est incompréhensible pour des amateurs...
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: WebGadget avancé

Message par omega »

Je me demande si la clef ne se situe pas dans une plus grande facilité d'intégration de composants (avec peut-être une lib spécifique ou de nouveaux mots-clés), avec un dossier exemple dédié à cette tâche... :?:
C'est justement ce que je pensais, il y a sûrement des lib nécessaires qui sont absentes), j'aurais voulu personnaliser WebGadget à ma façon, mais pas à ce point...
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: WebGadget avancé

Message par omega »

@Djes
Je crois que ce n'est pas un bon exemple http://www.mon-navigateur.com)
J'aurais préféré que tu choisisses une page d'accueil qui contient des images et des textes qui bougent, c'est au niveau des sites de ce type que ça coince à mon niveau....
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: WebGadget avancé

Message par djes »

omega a écrit :@Djes
Je crois que ce n'est pas un bon exemple http://www.mon-navigateur.com)
J'aurais préféré que tu choisisses une page d'accueil qui contient des images et des textes qui bougent, c'est au niveau des sites de ce type que ça coince à mon niveau....
C'est pas moi, c'est kcc
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: WebGadget avancé

Message par omega »

Euh... Pardon
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WebGadget avancé

Message par Ar-S »

djes a écrit :En fait, certains composants pourraient être intégrés, mais cela implique un développement spécifique très coûteux en temps, en énergie, en argent même. En outre, ils ne servent pas à tout le monde, et, pour une même fonctionnalité, il y a plusieurs choix possibles.
Je me demande si la clef ne se situe pas dans une plus grande facilité d'intégration de composants (avec peut-être une lib spécifique ou de nouveaux mots-clés), avec un dossier exemple dédié à cette tâche... :?:
Certes c'est surement du boulot dans l'un ou l'autre des cas mais le webgadget en l'état est de plus en plus obsolète. Vu qu'il fait partie de PB, le supprimer serait une régression donc autant lui donner une nouvelle jeunesse.
Peut être à ajouter dans la todo list de la team.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: WebGadget avancé

Message par Kwai chang caine »

Ce que j'ai du mal à comprendre c'est que Fred avait sûrement du déjà faire ce travail du temps ou l'on pouvait mettre la constante FF dans webgadget
FF a évolué mais ya du se produire quelque chose de violent pour que Fred decide d'abandonner de mettre à jour pb en rapport de FF

Comme si demain on pouvait plus utiliser certaines lib qui sont plus ou moins incluses dans pb depuis un certain temps.
Peut être qu'a cette epoque FF a entièrement changé sa structure et ça faisait trop de boulot de le suivre.
Ou alors une histoire de licence, mais je pense pas..
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre