FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Bataille terrestre
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Marc Aujourd'hui à 16:20

» item_index
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Marc Aujourd'hui à 16:13

» SineCube
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Marc Hier à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Marc Hier à 12:22

» Philharmusique
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-29%
Le deal à ne pas rater :
PC portable – MEDION 15,6″ FHD Intel i7 – 16 Go / 512Go (CDAV : ...
499.99 € 699.99 €
Voir le deal

 

 Fonctions d'envoyer de touches à un objet interne ou externe

Aller en bas 
5 participants
Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
AuteurMessage
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 21:51

Bonsoir à tout le monde, Smile
Depuis la version 0923 lorsqu'on met terminate en fin de programme à la dernière ligne, on entend quand même un affreux beep, que l'on entendait pas dans les versions précédentes. Donc moi je suis resté avec la version 0923i6. Mais depuis l'arrivée des sub end_sub avec la version 0924i1, je suis un peu embêté, car la seule manière d'éviter le beep à la fermeture d'un programme c'est d'utiliser la croix en haut à droite.
Heureusement, j'ai trouvé une solution grâce à la DLL de Klaus KGF. Vous me direz certainement que c'est un peu lourd, mais je ne vois pas comment faire autrement.
Code:
dim hnd%,res%,x%,y%,w%,h%
label fin,sauver,ouvrir
dll_on "c:\mesprog\KGF157.dll"

main_menu 1
sub_menu 2:parent 2,1:caption 2,"Fichier"
sub_menu 3:parent 3,2:caption 3,"Ouvrir":on_click 3,ouvrir
sub_menu 4:parent 4,2:caption 4,"Sauver":on_click 4,sauver
sub_menu 5:parent 5,2:caption 5,"Quitter":on_click 5,fin
end

ouvrir:
cls:print "Ouverture Fichier"
return
sauver:
cls:print "Fichier enregistré"
return

fin:
hnd%=handle(0)
res%=dll_call5("GetFormMetrics",hnd%,adr(x%),adr(y%),adr(w%),adr(h%))
x%=(x%+w%)-10:y%=y%+10
res%=dll_call2("AbsoluteMouseLeftClick",x%,y%)
A+ Wink
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 21:55

On peut bouger ou redimensionner la fenêtre sans problème. La seule chose à éviter avec cette solution, c'est d'utiliser BORDER_HIDE.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 22:11

Jolie petite astuce
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: re   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 23:19

Une colle qui n'en ait peut être pas une pour vous... Laughing

Si je prends un site comme celui de la CAF,

Selon sa situation professionnelle, il faut cocher une case
sur le formulaire d'accès.

Dans ce cas, quel caractère "Chr$()" correspond à la coche de cette case ?
Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Captur39
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 23:32

Bonsoir Ygeronimi,
Je vais peut-être dire une bêtise, mais essaye chr$(32), ça correspond à l'espace.
Je suis pas sûr que ça fonctionne
A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 23:55

@YGeronimi:
Une case à cocher, c'est comme un objet CHECK de Panoramic. En Panoramic, la saisie d'un espace bascule l'état d'un CHECK, ou un click dessus. Essaie sur le site WEB si les deux fonctionnent, mais il y a effectivement des chances pour que espace marche. Il faut que tu essaies manuellement, au clavier, sur ce site.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyLun 10 Sep 2012 - 23:58

Bonsoir. Normalement dans une fenêtre windows, pour aller d'un champ de saisie à un autre,Il faut appuyer sur la touche <TAB>. C'est également vrai pour Panoramic, un éditeur de texte, exel....
Le tout est de savoir où tu te trouve au départ, lorsque tu es dans la fenêtre. Parfois un faut un clic dans un endroit.
Si en ouvrant la page, le curseur se trouve dans une zone de saisie, comme du texte, une case à cocher, un bouton, il faut savoir si tu es sur une bonne place pour y remplir cet endroit. Ensuite par des touches <TAB> successives, tu atteinds la zone suivante.

Tu procèdes ainsi dans le cas où tu te trouves. tu notes sur du papier, où tu es., en face si il faut y faire queque chose, et des appuies sur Tab. Chaque fois qu'il y a une action a faire, tu le notes. Sur le login, et un bouton pour valider ou autre, tu envoies la touche: <ENTER>

Si c'est un check, appuie sur espace, normalement ça marche.

Je ne sais si sur ce formulaire, on est sur un edit. Il n'y a que toi qui le sait. Si c'est pas le cas, il faut faire un clic au bon endroit.

Voila voila! je ne peux rien dire de mieux pour l'instant.

On se croise Klaus. Je ne savais si j'allais annulé ou non. Tant pis, j'envoi.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 0:04

@Cosmos70:
J'ai poussé plus loin mon essai de pilotage de SlimBrowser.

Tu veux ouvrir un onglet s'il est déjà en route, ou le lancer s'il n'est pas en route ? Résolu.
Tu veux lui envoyer une URL ? Résolu.

Condition: si SlimBrowser est déjà en route, il faut qu'il soit la fenêtre active avant de lancer ce programme et de cliquer sur le bouton "Tester SlimBrowser". En particulier, il faut réduire l'éditeur, ou générer un EXE à partir de ce programme.

Voici ce que ça donne:
Code:
' test_GetProcessWindowHandle.bas

' ce programme utilise GetProcessWindowHandle récupérer le
' handle de SlimBrowser, et de lui envoyer une URL

label test

dim hnd%, res%, s$, SlimBrowser$
dim x%, y%, w%, h%

dll_on "KGF.dll"
SlimBrowser$ = "sbframe.exe"

button 1 : top 1,10 : left 1,10 : width 1,150
  caption 1,"Tester SlimBrowser" : on_click 1,test
 
end

test:
  hnd% = dll_call1("GetProcessWindowHandle",adr(SlimBrowser$))
  if hnd%=0
    execute "C:\PROGRA~1\SLIMBR~1\sbframe.exe"
    repeat
      pause 1000
      hnd% = dll_call1("GetProcessWindowHandle",adr(SlimBrowser$))
    until hnd%<>0
  else
    hide 0
    pause 1000
    ' ouvrir un nouveau TAB
    s$ = chr$(20) : ' control-T
    res% = dll_call2("SendStringAsText",hnd%,adr(s$))
    pause 1000
  end_if
 
  res% = dll_call5("GetFormMetrics",hnd%,adr(x%),adr(y%),adr(w%),adr(h%))
  x% = x% + w%/2
  y% = y% + 70
  res% = dll_call2("AbsoluteMouseLeftClick",x%,y%)
  s$ = "http://panoramic.1fr1.net/"+chr$(13)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000

  show 0
  return
 
 

Tu vois que:
1. la boucle d'attente de démarrage de SlimBrowser a été nettement simplifiée, grâce à la nouvelle fonction
2. j'ai trouvé le moyen de cliquer dans la case de l'URL, quelque soit la position ou la dimension de SlimBrowser à l'écran.

Note: le décalage vertical de 70 pixels est pour le mode dans lequel on a l'affichage du menu. En mode compact, ce décalage est en peu plus petit.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 0:05

Oui, on s'est croisé. Mais il ne faut pas annuler dans ces cas. Deux avis, même identiques, ont plus de poids qu'un seul, et chacun apporte des détails supplémentaires.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: re   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 0:12

cheers Bravo à tous, <Space> est la bonne touche !
Revenir en haut Aller en bas
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 0:17

Ygeronimo.
Désolé, je n'avais pas compris que la question concernait un check. Donc commela dit Klaus, un espace.

@Klaus!
Merci beaucoup, mais tu ne m'en voudra pas si je teste pas maintenant. Le faite de rester à côté de la dll, ma permis d'avancer un peu, et je dois tout revoir les changements qui ont étés faites, et perdus. Tu vas trop vite, je ne te suis pas, mais c'est promis, je ferais les essais bienplus tard.

Je suis venu voir le forum, juste pour souffler un peu. Je suis certain que tu es mieux organisé que moi, et vu ce qu'il m'attend ce matin, je vais voir le marchand de sable. J'espère qu'il me fera un prix! Sleep
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 0:20

Allez, fais de doux rêves !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: re   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 0:24

Bonne nuit Cosmos70 !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 10:05

@Cosmos70:
J'ai poussé plus loin le pilotage de SlimBrowser.

Il y a deux paramètres à prendre en compte:
1. est-il en mode compact ou non ? Cela joue sur la position de la barre URL.
2. demande-t-il s'il peut devenir le browser par défaut s'il ne l'est pas ? Il faut alors tenir compte de ce dialogue supplémentaire.

Pour le premier point, je n'ai pas trouvé de solution automatisable. J'ai donc mis un CHECK dans le programme pour choisir le mode compact ou non.

Le second point, par contre, est entièrement traité. Si SlimBrowser n'est pas le browser par défaut, et s'il est autorisé à poser la question, il affiche une form particulière avec des boutons Oui et Non, Oui étant le défaut. Je détecte cela par la caption de cette form, je lui envoie un TAB et un retour charriot pour choisir non, et j'assure ainsi de lancer le browser sans changer la configuration.

Ensuite, le traitement est le même:
- envoi de ctrl/T pour ouvrir un nouvel onglet
- clic dans la zone URL en fonction du mode compact ou non
- envoi de l'URL (forum Panoramic pour la démo)
- envoi de retour charriot pour charger la page

Et ça marche quelque soit sa taille ou sa position à l'écran.

Le programme marche avec la version V0.9.24, mais la procédure DeterminerLesMarges est facile à transformer en sous-programme habituel. C'est la seule particularité, le reste est absolument banal.

Code:
' test_GetProcessWindowHandle_SlimBrowser.bas

' ce programme utilise GetProcessWindowHandle récupérer le
' handle de SlimBrowser, et de lui envoyer une URL

label test

dim hnd%, hnd1%, res%, s$, SlimBrowser$, titre$
dim x%, y%, w%, h%, x2%, y2%, w2%, h2%
dim m_haut%, m_bas%, m_cote%

dll_on "KGF.dll"
SlimBrowser$ = "sbframe.exe"  : ' nom de l'exécutable pour SlimBrowser

width 0,200 : height 0,120 : caption 0,"SlimBrowser"

' déterminer les marges en haut, en bas et sur les côtés.
' on sait que SlimBrowser utilise des bordures standard, tout comme
' ce programme. On détermine alors les dimensions des bordures par
' rapport à ce programme, et on peut les appliquer à SlimBrowser.
DeterminerLesMarges(9)

button 1 : top 1,40 : left 1,10 : width 1,150
  caption 1,"Tester SlimBrowser" : on_click 1,test
check 2 : top 2,10 : left 2,10 : caption 2,"Mode compact"

end


' Cette procédure détermine les marges en haut, en bas et sur les côtés
' Ceci est fait en utilisant la différence des dimensions
'  entre la form 0 et un mémo créé en FULL_SPACE et supprimé après
' Cette procédure est conçue pour marcher sous toutes les versions de Windows,
' et avec des forms quelconques, Panoramic ou autres, et quelque soit
' leur type de bordure (normal, réduit ou absent)..
sub DeterminerLesMarges(obj%)
  memo obj% : full_space obj%
  res% = dll_call5("GetFormMetrics",handle(0),adr(x%),adr(y%),adr(w%),adr(h%))
  res% = dll_call5("GetFormMetrics",handle(9),adr(x2%),adr(y2%),adr(w2%),adr(h2%))
  m_cote% = x2%-x%
  m_haut% = y2%-y%
  m_bas% = h%-h2%-y2%+y%
  ' s$ = "Marges gauche/droite: "+str$(m_cote%)+chr$(13)+chr$(10)
  ' s$ = s$+"Marge haute: "+str$(m_haut%)+chr$(13)+chr$(10)
  ' s$ = s$+"Marge basse: "+str$(m_bas%)+chr$(13)+chr$(10)
  ' message s$
  delete obj%
end_sub

'
test:
  ' on tente de trouver le processus de SlimBRowser
  hnd% = dll_call1("GetProcessWindowHandle",adr(SlimBrowser$))
  if hnd%=0  : ' ici, SlimBrowser n'est pas encore lancé
    execute "C:\PROGRA~1\SLIMBR~1\sbframe.exe"  : ' on le lance
    repeat  : ' boucle d'attente du démarrage de SlimBrowser
      pause 1000
      hnd% = dll_call1("GetProcessWindowHandle",adr(SlimBrowser$))
    until hnd%<>0
    pause 4000
    repeat  : ' il faut attendre qu'une fenêtre significative soit ouverte
      titre$ = string$(255," ")
      hnd1% = dll_call1("GetActiveWindowTitle",adr(titre$))
      titre$ = trim$(titre$)
    until (len(titre$)>0) and (titre$<>caption$(0))
    ' si SlimBrowser n'est pas le browser par défaut,
    ' et s'ill est autorisé à poser la question,
    ' il affiche une form spéciale pour demander un choix.
    ' dans ce cas, on envoie TAB CR pour simuler un clic sur le bouton Non
    if instr(titre$,"Navigateur par défaut")>0  : ' est-ce cette demande ?
      s$ = chr$(9)+chr$(13)  : ' alors envoyer TAB CR
      res% = dll_call2("SendStringAsText",hnd1%,adr(s$))
      pause 1000
      ' et on recharge le handle et le titre de la form suivante
      hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
    end_if
  else  : ' ici, SlimBrowser est déjà lancé  - alors ouvrir un nouvel onglet
    ' forcer SlimBrowser en avant-plan (si jamais il était recouvert)
    res% = dll_call1("BringWindowToForeground",hnd%)
    pause 1000
    ' ouvrir un nouvel onglet
    s$ = chr$(20) : ' control-T
    res% = dll_call2("SendStringAsText",hnd%,adr(s$))
    pause 1000
  end_if
 
  ' traitement commun dans tous les cas:
  ' on va chercher la position et les dimensions de la fenêtre
  ' pour en déduire la position de la zone URL
  res% = dll_call5("GetFormMetrics",hnd%,adr(x%),adr(y%),adr(w%),adr(h%))
  ' la position horizontale compte tenu de la taille de la marge gauche
  x% = x% + m_cote%+376
  ' la position verticale compte tenu de la marge haute et du mode
  if checked(2)=0  : ' vérification du mode
    y% = y% + m_haut%+41 : ' mode normal
  else
    y% = y% + m_haut%+15 : ' mode compact
  end_if
  ' effectuer un clic gauche dans la zone de saisie de l'URL
  res% = dll_call2("AbsoluteMouseLeftClick",x%,y%)
  pause 100
  ' envoyer l'URL suivi d'un retour charriot ==> chargement de la page !
  s$ = "http://panoramic.1fr1.net/" +chr$(13)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000

  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 14:14

Je te choppe au passage. Merci bien, mais ce matin, j'ai téléchargé la version d'essai, qui je crois a été retiré depuis, car j'ai eu (je le dis au passé, car je ne peux pas reprendre maintenant) un bug imcompréhensible, et je voulais voir si c'était la même chose avec la dernière version. Et cela l'est.
C'est très aimable de me secourir. Le problème est que je me sers de QtWeb. SlimBrowser est seulement là en défaut, que je ne retiens pas, car il me paraissait louche un certain temps.
Mais ce que tu proposes je le faisais avec AutoIt, les clics et touches. C'est de cette façon que je fonctionnais avec Plugiciel. J'ai essayé ce matin en vitesse, en voulant y mettre QtWeb à la place. Les paramètres sont différents. C'est à revoir par la suite.

S'il te plait je reprend dmon programme (pas tout de suite, je suis de passage). Par contre dans ton programme tu mets ch$(20) pour TAB. As-tu pensé à autre chose que TAB, oo est-ce une erreur.

Maintenant ne te casses pas trop la tête, je vais peut-être changé d'ordi. (Un cadeau) Aussi je reprendrais un navigateur commun. Je regrette de ne pas avoir plus de temps.

Je quitte ce montre de Panoricien pour quelques heures.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 14:52

Tu interprètes mal, Cosmos70. Le chr$(20), ce n'est pas censé être un TAB, c'est un control-T, ce qui ouvre un nouvel onglet dans SlimBrowser.

Avec QTWeb, c'est la même chose. control-T ouvre un nouvel onglet. Après, il faut cliquer dans la zone URL pour envoyer l'URL. C'est très similaire. Si cela peut te rendre service, je pourrais étudier une légère adaptation du programme pour gérer QTWeb - ce n'est pas compliqué du tout, à partir de la version pour SlimBrowser.

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 16:32

Voici la version adaptée à QtWeb. S'il est en cours, on ouvre un nouvel onglet, sinon on le lance. Dans tous les cas, on charge la page Panoramic:
Code:
' test_GetProcessWindowHandle_QtWeb.bas

' ce programme utilise GetProcessWindowHandle récupérer le
' handle de QtWeb, et de lui envoyer une URL

label test

dim hnd%, hnd1%, res%, s$, QtWeb$, titre$
dim x%, y%, w%, h%, x2%, y2%, w2%, h2%
dim m_haut%, m_bas%, m_cote%

dll_on "KGF.dll"
QtWeb$ = "QtWeb.exe"  : ' nom de l'exécutable pour QtWeb

width 0,200 : height 0,120 : caption 0,"QtWeb"

' déterminer les marges en haut, en bas et sur les côtés.
' on sait que QtWeb utilise des bordures standard, tout comme
' ce programme. On détermine alors les dimensions des bordures par
' rapport à ce programme, et on peut les appliquer à QtWeb.
DeterminerLesMarges(9)

button 1 : top 1,40 : left 1,10 : width 1,150
  caption 1,"Tester QtWeb" : on_click 1,test
' check 2 : top 2,10 : left 2,10 : caption 2,"Mode compact"


end


' Cette procédure détermine les marges en haut, en bas et sur les côtés
' Ceci est fait en utilisant la différence des dimensions
'  entre la form 0 et un mémo créé en FULL_SPACE et supprimé après
' Cette procédure est conçue pour marcher sous toutes les versions de Windows,
' et avec des forms quelconques, Panoramic ou autres, et quelque soit
' leur type de bordure (normal, réduit ou absent)..
sub DeterminerLesMarges(obj%)
  memo obj% : full_space obj%
  res% = dll_call5("GetFormMetrics",handle(0),adr(x%),adr(y%),adr(w%),adr(h%))
  res% = dll_call5("GetFormMetrics",handle(9),adr(x2%),adr(y2%),adr(w2%),adr(h2%))
  m_cote% = x2%-x%
  m_haut% = y2%-y%
  m_bas% = h%-h2%-y2%+y%
  ' s$ = "Marges gauche/droite: "+str$(m_cote%)+chr$(13)+chr$(10)
  ' s$ = s$+"Marge haute: "+str$(m_haut%)+chr$(13)+chr$(10)
  ' s$ = s$+"Marge basse: "+str$(m_bas%)+chr$(13)+chr$(10)
  ' message s$
  delete obj%
end_sub

'
test:
  ' on tente de trouver le processus de QtWeb
  hnd% = dll_call1("GetProcessWindowHandle",adr(QtWeb$))
  if hnd%=0  : ' ici, QtWeb n'est pas encore lancé
    execute "C:\PROGRA~1\QtWeb\QtWeb.exe"  : ' on le lance
    repeat  : ' boucle d'attente du démarrage de QtWeb
      pause 1000
      hnd% = dll_call1("GetProcessWindowHandle",adr(QtWeb$))
    until hnd%<>0
    pause 4000
    repeat  : ' il faut attendre qu'une fenêtre significative soit ouverte
      titre$ = string$(255," ")
      hnd1% = dll_call1("GetActiveWindowTitle",adr(titre$))
      titre$ = trim$(titre$)
    until (len(titre$)>0) and (titre$<>caption$(0))
  else  : ' ici, QtWeb est déjà lancé  - alors ouvrir un nouvel onglet
    ' forcer QtWeb en avant-plan (si jamais il était recouvert)
    res% = dll_call1("BringWindowToForeground",hnd%)
    pause 1000
    ' ouvrir un nouvel onglet
    s$ = chr$(20) : ' control-T
    res% = dll_call2("SendStringAsText",hnd%,adr(s$))
    pause 1000
  end_if
 
  ' traitement commun dans tous les cas:
  ' on va chercher la position et les dimensions de la fenêtre
  ' pour en déduire la position de la zone URL
  res% = dll_call5("GetFormMetrics",hnd%,adr(x%),adr(y%),adr(w%),adr(h%))
  ' la position horizontale compte tenu de la taille de la marge gauche
  x% = x% + m_cote%+376
  ' la position verticale compte tenu de la marge haute
  y% = y% + m_haut%+28
  ' effectuer un clic gauche dans la zone de saisie de l'URL
  res% = dll_call2("AbsoluteMouseLeftClick",x%,y%)
  pause 100
  ' envoyer l'URL suivi d'un retour charriot ==> chargement de la page !
  s$ = "http://panoramic.1fr1.net/" +chr$(13)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000

  return
 
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 17:11

J'ajoute une conséquence intéressante:

J'utilise la fonction GetProcessWindowHandle pour déterminer si un programme quelconque est déjà lancé. Dans ce cas, la fonction retourne le handle de la fenêtre principale du processus. Si le programme n'est pas lancé, la fonction retourne la valeur 0.

Alors, on peut utiliser cette fonction pour assurer qu'un programme particulier n'est lancé qu'une seule fois ! On fait comme ceci:
Code:

dim prog$, hnd%
prog$ = "MonProgramme.exe"
...
hnd% = dll_call1("GetProcessWindowHandle",adr(prog$))
if hnd%<>0
  message "Désolé, le programme est déjà lancé !"
  terminate
end_if

Intéressant, non ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 20:48

Bon, je suis sur un nouvel ordinateur, et ça me change.
J'ai essayé cet-après midi pour QtWeb, mais je n'ai eu que des blocages. Comme je doute fort que j'utilise ce programme avec QtWeb, vu que je suis maintenant sur Chrome, je ne m'en inquiète peu.

Je regarderais tes DLL un autre jour. Il y a plein de choses intéressantes, et pour les regarder, il faut du temps devant soi.
Merci de ton aide.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMar 11 Sep 2012 - 21:32

Eh bien, voici la même chose pour Chrome - ça marche de la même manière !
Code:
' test_GetProcessWindowHandle_Chrome.bas

' ce programme utilise GetProcessWindowHandle récupérer le
' handle de QtWeb, et de lui envoyer une URL

label test

dim hnd%, hnd1%, res%, s$, Chrome$, titre$
dim x%, y%, w%, h%, x2%, y2%, w2%, h2%
dim m_haut%, m_bas%, m_cote%

dll_on "KGF.dll"
Chrome$ = "chrome.exe"  : ' nom de l'exécutable pour Chrome

width 0,200 : height 0,120 : caption 0,"Chrome"

' déterminer les marges en haut, en bas et sur les côtés.
' on sait que Chrome utilise des bordures standard, tout comme
' ce programme. On détermine alors les dimensions des bordures par
' rapport à ce programme, et on peut les appliquer à Chrome.
DeterminerLesMarges(9)

button 1 : top 1,40 : left 1,10 : width 1,150
  caption 1,"Tester Chrome" : on_click 1,test
 
s$ = string$(25," ")
res% = DLL_call1("KGFdllVersion",adr(s$))
message s$

end


' Cette procédure détermine les marges en haut, en bas et sur les côtés
' Ceci est fait en utilisant la différence des dimensions
'  entre la form 0 et un mémo créé en FULL_SPACE et supprimé après
' Cette procédure est conçue pour marcher sous toutes les versions de Windows,
' et avec des forms quelconques, Panoramic ou autres, et quelque soit
' leur type de bordure (normal, réduit ou absent)..
sub DeterminerLesMarges(obj%)
  memo obj% : full_space obj%
  res% = dll_call5("GetFormMetrics",handle(0),adr(x%),adr(y%),adr(w%),adr(h%))
  res% = dll_call5("GetFormMetrics",handle(9),adr(x2%),adr(y2%),adr(w2%),adr(h2%))
  m_cote% = x2%-x%
  m_haut% = y2%-y%
  m_bas% = h%-h2%-y2%+y%
  ' s$ = "Marges gauche/droite: "+str$(m_cote%)+chr$(13)+chr$(10)
  ' s$ = s$+"Marge haute: "+str$(m_haut%)+chr$(13)+chr$(10)
  ' s$ = s$+"Marge basse: "+str$(m_bas%)+chr$(13)+chr$(10)
  ' message s$
  delete obj%
end_sub

'
test:
  ' on tente de trouver le processus de Chrome
  hnd% = dll_call1("GetProcessWindowHandle",adr(Chrome$))
  if hnd%=0  : ' ici, Chrome n'est pas encore lancé
    execute "C:\DOCUME~1\Klaus\LOCALS~1\APPLIC~1\Google\Chrome\APPLIC~1\chrome.exe"  : ' on le lance
    repeat  : ' boucle d'attente du démarrage de Chrome
      pause 1000
      hnd% = dll_call1("GetProcessWindowHandle",adr(Chrome$))
    until hnd%<>0
    pause 4000
    repeat  : ' il faut attendre qu'une fenêtre significative soit ouverte
      titre$ = string$(255," ")
      hnd1% = dll_call1("GetActiveWindowTitle",adr(titre$))
      titre$ = trim$(titre$)
    until (len(titre$)>0) and (titre$<>caption$(0))
    hnd% = hnd1%
  else  : ' ici, Chrome est déjà lancé  - alors ouvrir un nouvel onglet
    ' forcer Chrome en avant-plan (si jamais il était recouvert)
    res% = dll_call1("BringWindowToForeground",hnd%)
    pause 1000
    ' ouvrir un nouvel onglet
    s$ = chr$(20) : ' control-T
    res% = dll_call2("SendStringAsText",hnd%,adr(s$))
    pause 1000
  end_if
 
  ' traitement commun dans tous les cas:
  ' on va chercher la position et les dimensions de la fenêtre
  ' pour en déduire la position de la zone URL
  res% = dll_call5("GetFormMetrics",hnd%,adr(x%),adr(y%),adr(w%),adr(h%))
  ' la position horizontale compte tenu de la taille de la marge gauche
  x% = x% + m_cote%+376
  ' la position verticale compte tenu de la marge haute
  y% = y% + m_haut%+15
  ' effectuer un clic gauche dans la zone de saisie de l'URL
  res% = dll_call2("AbsoluteMouseLeftClick",x%,y%)
  pause 100
  ' envoyer l'URL suivi d'un retour charriot ==> chargement de la page !
  s$ = "http://panoramic.1fr1.net/" +chr$(13)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000

  return

Tu vois, c'est facile à adapter, et rapidement fait...


Dernière édition par Klaus le Mer 12 Sep 2012 - 8:31, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMer 12 Sep 2012 - 0:05

Bon, je commence à prendre possession de cet ordi. Jai réussi a avoir l'admistration des dossiers qui étaent refusés, comme document et s... du W7.
Une bonne partie des clés usb sont installés. J'ai voulu essayé ton programme mais c'est pas encore la bonne dll. Mais déjà le handle est reconnu, et c'est un avancement par rapport aux autre browsers. Je verrais plus tard.
A propos l'ouverture de panoramic, si Nardo lis ici, à peu-près 10s.
Revenir en haut Aller en bas
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMer 12 Sep 2012 - 4:13

J'ai pas encore la maitrise, je suis à la recherche de tout, mais je viens de télécharger la dernière version, et tester ton programme avec chrome ouvert.
Il a vu que chrome est ouvert, mais il me signale une erreur à la ligne 69:
Code:
res% = dll_call1("BringWindowToForeground",hnd%)
(29) Not correct arithmetic expression: Error in function . Line: 69

Excuses moi de ne pas cherché pourquoi. Il faut que je trouve une souris. Qu'est-ce que c'est chiant ce Pad, quant on n'a pas l'habitude
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMer 12 Sep 2012 - 8:38

J'ai téléchargé KGF.dll du WebDav afin d'être certain de tester avec la version publiée. Et la version n'était pas bonne ! J'ai zappé de placer la dernière version sur MyDrive ! Je suis honteux et corrige tout de suite !

Cela doit être la Version V1.58 du 11/09/2012

J'ai modifié le programme démo pour Chrome (sur pa page précédenteà afin d'afficher la version de la DLL, au démarrage.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMer 12 Sep 2012 - 10:36

Je viens de tester, et ça fonctionne.
Une chose toute de fois: je n'avais pas vu que avais mis le chemin complet de chrome, et par rapport à toi.
Donc à partir de là, avec cette erreur qu'en on ferme en appuyant sur la croix du programme, l'éditeur Panoramic retrouve son éclair, mais la fenêtre est toujours là. Même RapidTalkkiller sur mon EEEPC ne le voit pas. Il n'y a que le gestionnaire de tâche qui tue le programme.
En tout cas on a les outils pour agir sur le reste des programmes, mais vois si il ne reste pas quelque chose à faire pour la sécurité ou le blocage. C'est vraiment un problème que j'ai eu avec mon EEEPC. C'est plus facile avec W7 pour reprendre.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 EmptyMer 12 Sep 2012 - 10:59

J'ai pris simplement le chemin qui s'affichait avec clic droit/propriétés sur l'icône de Chrome.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 5 Empty

Revenir en haut Aller en bas
 
Fonctions d'envoyer de touches à un objet interne ou externe
Revenir en haut 
Page 5 sur 6Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
 Sujets similaires
-
» Click sur un objet externe a Panoramic
» Click sur un objet externe a Panoramic
» Lecture d'un objet externe à Panoramic.
» [Résolu] Interception touches quel que soit objet Panoramic
» Détermine si oui ou non un objet est PARENT d'un autre objet

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: