[RESOLU] Equivalent clavier Ctrl + F5

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

[RESOLU] Equivalent clavier Ctrl + F5

Message par PhM »

Bonjour,
Après avoir ouvert par le programme une page html, j'aimerai la mettre à jour régulièrement par l'équivalent programme des touches Ctrl + F5 pour rafraichir la page déjà ouverte (sans ouvrir un nouvel onglet dans le navigateur).
Avez-vous la solution pour cela ???
Dernière modification par PhM le mar. 07/déc./2021 11:24, modifié 2 fois.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Equivalent clavier Ctrl + F5

Message par TazNormand »

Salut,

comme ça peut-être :

Code : Tout sélectionner

  refreshdelay=5000
  If OpenWindow(0, 0, 0, 1024, 768, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    WebGadget(0, 10, 10, 1000, 700, "http://placeimg.com/640/480/any") 
    ;SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
    
    refstart.q  = ElapsedMilliseconds()
    Delay(1)
    Debug refstart

    Repeat
      reftime.q =ElapsedMilliseconds()
      If reftime % refreshdelay = 0        
        Debug "refresh after "+Str(refreshdelay)+" milliseconds"
        SetGadgetState(0,#PB_Web_Refresh)
      EndIf
      
    Until WindowEvent() = #PB_Event_CloseWindow 
  EndIf
Image
Image
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Equivalent clavier Ctrl + F5

Message par PhM »

Merci TazNormand pour ton approche.

Si j'ai bien compris, cette solution ne fonctionne que dans le cadre d'une fenêtre WebGadget().

Mon souhait serait de rafraichir une page web dans le navigateur par défaut de Windows et ta méthode ne correspond pas à ce cas.

Je pensai qu'il y avait une possibilité de simuler des touches du clavier (Ctrl F5) en commandes programmées, ce qui ne semble pas être simple...
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Equivalent clavier Ctrl + F5

Message par falsam »

Ce petit code te permet de rafraichir une page web

Principe
- Utiliser le Desktop comme handle de fenêtre.
- Créer une boucle en systray pouvant être interrompu avec la touche Escape.
-- Dans la boucle :
--- Un delay d'attente entre deux rafraichissement.
--- Envoyer/relacher la touche Controle + F5 (API Windows)
--- Tester la touche Escape pour sortir de la boucle

Code : Tout sélectionner

Define WindowID, Message.s

;Utiliser le DeskTop comme handle de fenêtre.
WindowID = GetDesktopWindow_()

;Créer un processus en Systray
SysTray = AddSysTrayIcon(#PB_Any, WindowID, LoadIcon_( 0, #IDI_EXCLAMATION ) );
SysTrayIconToolTip(SysTray, "Presser la touche Escape" +#CRLF$+ "pour interrompre le rafraichissement")

;Demander à l'utilisateur de donner le focus à un navigateur 
Message = "Fermez ce message d'information" + #CRLF$ + 
          "puis cliquez sur l'onglet de la page que vous voulez rafraichir automatiquement." + #CRLF$ +
          "Touche Escape pour terminer le rafraichissement"

MessageRequester("Information", Message)

;Lancer le processus de rafraichissement toutes les 2 secondes
Repeat 
  Delay(2000)
  res = keybd_event_(#VK_CONTROL,0,0,0)    ;Appuyer sur CTRL
  res = keybd_event_(#VK_F5,0,0,0)         ;Appuyer sur F5
  res = keybd_event_(#VK_F5,0,2,0)         ;Relacher F5
  res = keybd_event_(#VK_CONTROL,0,2,0)    ;Relacher CTRL
Until GetAsyncKeyState_(#VK_ESCAPE) & $1

;Le raffraichissment est interrompu
MessageRequester("Information", "Rafraichissement interrompu.")
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
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Equivalent clavier Ctrl + F5

Message par PhM »

Merci Falsam pour ton exemple qui fonctionne.
Néanmoins, je reste surpris qu'il n'y ait pas de méthode plus simple pour simuler l'appui de touches du clavier :!:
Mais, tu n'y est pour rien...
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Equivalent clavier Ctrl + F5

Message par falsam »

Plus simple nativement PureBasic il y a pas. Par contre le SysTray n'est pas obligatoire. Ca donnait la possibilité de créer un menu.

On peut donc faire plus simple.

Code : Tout sélectionner

Define WindowID, Message.s

;Demander à l'utilisateur de donner le focus à un navigateur 
Message = "Fermez ce message d'information" + #CRLF$ + 
          "puis cliquez sur l'onglet de la page que vous voulez rafraichir automatiquement." + #CRLF$ +
          "Touche Escape pour terminer le rafraichissement"

MessageRequester("Information", Message)

;Lancer le processus de rafraichissement toutes les 2 secondes
Repeat 
  Delay(2000)
  res = keybd_event_(#VK_CONTROL,0,0,0)    ;Appuyer sur CTRL
  res = keybd_event_(#VK_F5,0,0,0)         ;Appuyer sur F5
  res = keybd_event_(#VK_F5,0,2,0)         ;Relacher F5
  res = keybd_event_(#VK_CONTROL,0,2,0)    ;Relacher CTRL
Until GetAsyncKeyState_(#VK_ESCAPE) & $1

;Le raffraichissment est interrompu
MessageRequester("Information", "Rafraichissement interrompu.")
La seule partie importante est dans la boucle Repeat.
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: Equivalent clavier Ctrl + F5

Message par falsam »

Je viens de trouver une liste de "Virtual Key Codes" que je ne connaissais pas.
http://www.kbdedit.com/manual/low_level_vk_list.html

et on y trouve VK_BROWSER_REFRESH pour actualiser le navigateur.

Donc on peut faire encore plus court dans la boucle repeat.

Code : Tout sélectionner

Repeat 
  Delay(2000)
  res = keybd_event_(#VK_BROWSER_REFRESH,0,0,0) 
Until GetAsyncKeyState_(#VK_ESCAPE) & $1
et ca fonctionne ^.^ Yeahhhhh i'm happy.
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
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Equivalent clavier Ctrl + F5

Message par Ar-S »

Le delay n'est pas gênant dans le gestionnaire de tâche ?
Perso j'aurai mis une fen invisible et un timer de 2s
~~~~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
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Equivalent clavier Ctrl + F5

Message par PhM »

Merci Falsam,
Ton dernier message sur la base de VK_BROWSER_REFRESH est vraiment cool, je prends !
Et, ton lien est à conserver :idea:
Encore merci de t’être penché sur ce cas.
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: [RESOLU] Equivalent clavier Ctrl + F5

Message par Ekim »

Bonsoir à tous

Puisqu'on est dans le sujet Webgadget j'aimerais en profiter pour demander la méthode si l'on veux effectuer un Ctrl + A pour la sélection du
contenu du fameux gadget en cliquant sur un bouton, en espérant que cette question puisse accessoirement profiter ce topic :P
Répondre