WebGadget compatible HTML5

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

WebGadget compatible HTML5

Message par falsam »

Un webgadget compatible HTML5. L’exécutable sera vu comme un navigateur compatible Internet explorer 11 et sera enregistré dans la base de registre.

Le numéro de version du navigateur se trouve dans la procédure Start.

Code : Tout sélectionner

Procedure Start()
  RegCreateKeyValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", GetFilePart(ProgramFilename()), "11001", #REG_DWORD, ".")
  MainFormShow()  
EndProcedure
Modifié le code 11001 par 10001 si vous souhaitez passer en version 10.

D'autres code de navigateurs sur ce lien http://msdn.microsoft.com/en-us/library ... s.85).aspx

Le code complet qui ouvre le site http://html5test.com afin de voir le résultat.

Code : Tout sélectionner

;WebGadget HTML5 compatible
;Contributor: Sphere Users Pure Basic
;
;Create 29-08-2014
;Update 29-08-2014
;

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #URL
  #WebGadget
EndEnumeration

Global Url.s="http://html5test.com/"

;-
;- 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

ProcedureDLL 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 

ProcedureDLL 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 

ProcedureDLL 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 

;-
;-Test Area
Procedure NavigationCallback(Gadget, NewUrl.s) 
  Debug "new " + NewUrl + " - " + "old " + Url
  
  If NewUrl <> Url
    SetGadgetText(Gadget, NewUrl)
    Url = NewUrl  
  EndIf
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure 

Procedure MainFormShow()
  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) 
EndProcedure

Procedure Start()
  RegCreateKeyValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", GetFilePart(ProgramFilename()), "11001", #REG_DWORD, ".")
  MainFormShow()  
EndProcedure

Start()

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WebGadget compatible HTML5

Message par Ar-S »

ça c'est trop cool :) Merci Falsam.
~~~~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 : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: WebGadget compatible HTML5

Message par Kwai chang caine »

J'ai pas tout compris, mais en tout cas merci pour le lien de test, je connaissais pas et ça va m'etre tres utile 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: WebGadget compatible HTML5

Message par nico »

Kwai chang caine a écrit :J'ai pas tout compris, mais en tout cas merci pour le lien de test, je connaissais pas et ça va m'etre tres utile 8)
T'es parti trop longtemps, ça fait plus de deux ans que le sujet à été lancé:
http://www.purebasic.fr/french/viewtopi ... =6&t=12762
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: WebGadget compatible HTML5

Message par Kwai chang caine »

Merci beaucoup NICO, cette fois ci j'ai tout compris. 8)
C'est vrai j'avais aussi remarqué la perte de firefox pour le webgadget.
Grace à ce site j'ai compris pourquoi aucun code de spider ne fonctionne sur mon vieil IE du boulot :?
ImageLe bonheur est une route...
Pas une destination

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

Re: WebGadget compatible HTML5

Message par Ar-S »

Salut KCC,
et jamais à ton boulot ils vont mettre à jour leur navigateur voir (je n'ose le dire), leur machine ? :mrgreen:
~~~~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 : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: WebGadget compatible HTML5

Message par Kwai chang caine »

Salut mon grand :D

T'as raison...si tu savais avec quoi je bosse 10h/jours :|
Encore je vais pas me plaindre ça c'est ammélioré..enfin au niveau OS on viens d'avoir W7 normal y annonce W10 ...et IE8 :mrgreen:
Ils ont changé les portables, mais pour les moins chers, du DELL, pas de lecteur CD, des prises mixtes USB et j'sais pas quoi

En fait, le pire c'est l'active directory et l'UAC (Encore plus bridé qu'un chinois en pleine action aux toilettes :? ), les proxy et les antivirus.
J'suis interdit d'installer quoi que ce soit, avant j'avais des autorisations admin sur ma machine, mais maintenant j'suis puni, à cause des alertes virus constantes ..
Apres on est interdit de WIFI, et sur tout ce qui pourrait divertir, les sites sociaux "Face de chevre", rencontre, etc...mais aussi la musique, les images...
J'te parle pas aussi .... interdiction de pas mal de sites de téléchargement comme dropbox par exemple, alors quand les copains posent quelque chose dessus, KCC y'a pas droit :cry:
J'ai aucune image presque sur le forum, j'ai des croix rouges à la place, remarque c'est comme à l'école...j'arrivais jamais à en avoir...pas assez gentil et pas mal de croix rouge sur mes carnets :roll:

Et pour finir ce put#~é^¨$^!: de NORTON qui arrete pas de m'effacer mes exe PB et les autres...tout ce qui est outil intrusif de programmation..
Tiens ça me fait penser qui me laisse mes photos de filles nues :mrgreen: remarque c'est plutot du domaine du VICERUS :oops:
C'est un combat de tout les jours de programmer au boulot, personne pour m'aider, des questions dans tous les domaines, heureusement que j'adore ça et que depuis huit courtes années à connaitre les copains et PB, j'ai un peu de quoi me remonter le moral :cry:

En fin de compte on devrait renommer la cour du batiment "tiananmen" :lol: :lol:

Pour ce qui est des vieilles machines c'est chez moi, et c'est ma faute :oops:
Juste des carcasses avec des fils qui pendent...quand il n'y a pas le disque dur ou cd, qui pend au bout :oops:
En fin de compte c'est le meilleur des antivols..à notre epoque plus grand monde a le courage de bosser avant d'utiliser ...
Et mon super XP :mrgreen:
En fait j'ai noir de machines neuves...mais elles sont dans leur carton...ou chacune dans une jolie valise, avec de la ouate......j'ai peur de les user...je les aimes trop :lol:

En fin de compte toutes ces difficultés m'entrainent à une formation de commando informatique...je serais peut etre un jour le "RAMBO du BIT", deja que je suis une "B.. de la PROG" :mrgreen:
Avec deux morceaux de silicium, un coutelas (Coucou rahan :wink:) et une pile, je serais capable d'aller sur internet :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: WebGadget compatible HTML5

Message par flaith »

Ta boite devrait installer un terminal server, ils auraient eu la meme chose a moindre coup, puisqu'il suffit juste de "terminaux" passifs se connectant au serveur :mrgreen:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: WebGadget compatible HTML5

Message par Kwai chang caine »

Avant on avait ça, des maxi IBM 3270 ou AS400 enfin des trucs que j'ai jamais vu et qui prenaient des batiments entiers.
D'ailleur une partie de notre architecture est toujours sous le format 3270 / AS400 c'est pourquoi j'utilise des emulateurs en OLE
On est passé à la micro, il y a presque 30 ans...on progresse :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre