FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Mise à jour PANOMAND
par jean_debord Aujourd'hui à 11:33

» Pourquoi le compilateur stagne
par Jicehel Aujourd'hui à 11:13

» Immortaliser les photos de famille
par jjn4 Hier à 18:29

» Concours de Morpions
par jjn4 Hier à 18:11

» Compilateur FBPano
par jean_debord Hier à 10:12

» Tout est tranquille
par Jean Claude Ven 22 Sep 2017 - 21:41

» Texte en gif animé
par JL35 Ven 22 Sep 2017 - 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

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

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
AuteurMessage
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Sam 8 Sep 2012 - 15:32

Prends ton temps, car il faut que je m'occupe de mon programme, et ça me disperse.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Sam 8 Sep 2012 - 19:20

Le problème semble résolu.

Il y avait deux problèmes, en réalité:

1. encore (!) un bug dans mes routines d'envoi de caractères. Corrigé - on passe à la version V1.53 .

2. un malentendu concernant item_add. Cette commande laisse le curseur à la fin du texte ajouté, et non pas en début de ligne suivante. Et chaque item_add fait un RETURN implicite avant le texte à insérer. Essaie ce code: lance-le et mets immédiatement le doit sur une touche sans relâcher. Tu verras que les caractères s'insèrent jusqu'à l'arrivée d'une ligne. Celle-ci provoque le retour à la ligne, puis les caractères viennent se coller derrière, etc.
Code:
memo 1
set_focus 1
item_add 1,"aaa"
pause 2000
item_add 1,"bbb"
pause 2000
item_add 1,"ccc"
end

J'en ai tenu compte dans ton code et j'ai ajouté un chr$(13) à la ligne 24. Ton code modifié est celui-ci:
Code:

label go
dim envoi$ ,i%,s$ ,handle% , version$
width 0,800

dll_on "KGF.dll"
version$ = DLL_call1("KGFdllVersion",adr(version$))
message version$  :' reçoit 151
list 1:width 1,250
item_add 1,"panoramic@klausgunther"+chr$(9)+"panoramic123"
item_add 1,"panoramic@cosmos70"+chr$(9)+"panoramic123"
memo 2:left 2,270 : width 2,400
handle%=handle(2)
on_click 1,go
' execute "http://www.mydrive.ch/login"
end
go:
  envoi$= item_index$(1)
  caption 0, envoi$
  clipboard_string_copy envoi$
  clipboard_paste 2  : ' dans un premier temps
  wait 2000
  set_focus 2
  s$= chr$(13)+chr$(17) + "V" + chr$(17)
  i% = dll_call2("SendStringAsChars",handle%,adr(s$))
  item_add 2,"2ème envoi"  :' pourquoi pas de saut à la ligne? c'est pas habituel
  i% = dll_call2("SendString",handle%,adr(envoi$))
  item_add 2,"----------------"
return
' plusieurs choses: il ne se passe rien avec les fonctions.
' avec item_add, il n'y a pas de saut ligne suivante

et le résultat me semble ce que tu attends:


Je me suis longtemps battu, dans la nouvelle version, avec la touche ALT (qui n'est pas utilisée dans ton code mais que je voulais faire marcher quand-même), et cela semble marcher aussi maintenant.

Donc, voilà: recharge la DLL et essaie avec le code modifié. La doc est inchangée.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Sam 8 Sep 2012 - 20:46

Oui, il y a des progrets, mais je n'arrive pas à faire la même chose avec le web.
Avant de te répondre, j'ai voulu voir ce qu'il en était avec AutoIt, car je n'étais pas sûre de moi. Regarde ce que cela fait: (Je ne sais pas si il faut que le navigateur soit fermé avant ou non, vu que QtWeb, mon ordi ne l'acepte pas comme par défaut. Donc c'est un autre navigateur qui le lance .
Voir le Fichier : MyDrive.exe

Est-ce que toi, tu arrive à faire la même chose en Panoramic
En appuyant sur le bouton, on lance le Drive. Le programme en AutoIt est:
Spoiler:
 
Je n'ai pas réussi en faisant un envoi de touches sur une seule ligne, j'ai du décomposer.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Sam 8 Sep 2012 - 21:01

Eh bien, il est génial, ton programme ! Il marche parfaitement !

Pour ma part, je suis sous Firefox V15.0.1.

Un clic sur le bouton MyDrive ouvre un nouvel onglet dans lequel apparaît la page login de MyDrive.

Un clic sur une des lignes de la liste charge bien les données identifiant et mot de passe dans les zones correspondantes, et on n'a plus qu'à cliquer sur le bouton de login pour se connecter.

Simplissime et très efficace !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Sam 8 Sep 2012 - 21:46

Merci, mais ce que j'essaye de faire, c'est en Panoramic. Ainsi chacun pourra faire à sa guise.
Tu comprends mieux ce que j'essaye d'obtenir.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Sam 8 Sep 2012 - 22:52

OK, je vais essayer.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 0:47

Ca marche. J'ai ajouté quelques fonctions à la DLL pour compléter ses fonctionnalités:
Code:

V1.54  08/09/2012      ajout fonctions d'envoi decaractères à un objet
                                  GetActiveWindow, GetActiveWindowTitle, SendStringAsText

Je l'ai implémenté pour mon browser qui est Firefox.

Avec ce browser, la caption de la fenêtre principale est remplacée par le titre de la page Web qui est chargée. J'utilise donc ce titre pour vérifier que c'est bien la page login de MyDrive qui est chargée - elle débute par "login | ". Cela est fait avec une fonction qui récupère la caption de la fenêtre active.

Bien sûr, pour que le browser soit la fenêtre active, il faut cacher le programme Panoramic. Il y a donc des HIDE 0 et SHOW 0 à des endroits stratégiques.

Lorsque la page login est chargée, le curseur est positionné automatiquement dans la zone de l'identifiant qui est donc l'objet actif. Je lui envoie la chaine cliquée dans la liste. Puis l'envoi d'un TAB et on se trouve dans le mot de passe. Je lui envoie "panoramic123'. Puis 3 fois TAB et on est sur le bouton de connexion. Je lui envoie un retour charriot, et la connexion de fait automatiquement.

Voici le source:
Code:
' connexion_MyDrive.bas

label MyDrive, choix
dim s$, res%, hnd%, hnd0%, titre$

dll_on "KGF.dll"

width 0,440 : height 0,280

list 1 : height 1,200 : width 1,400
  on_click 1,choix
  item_add 1,"panoramic@cosmos70"
  item_add 1,"panoramic@klausgunther"

button 2 : top 2,210 : left 2,10
  caption 2,"MyDrive" : on_click 2,MyDrive
 
 
 
hnd0% = handle(0)

end

MyDrive:
  hide 0
  Execute "http://www.mydrive.ch/login"
  repeat
    pause 1000
    titre$ = string$(255," ")
    hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
    titre$ = trim$(titre$)
  until left$(titre$,8) = "Login | "
  show 0
  return
 
choix:
  hide 0
  titre$ = string$(255," ")
  hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
  if left$(titre$,8) <> "Login | "
    show 0
    message "Il faut d'abord cliquer sur [MyDrive] !"
    return
  end_if
  s$ = item_index$(1)
  hnd% = dll_call0("GetActiveControl")
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  s$ = chr$(9)
  res% = dll_call2("SendSingleChar",hnd%,adr(s$))
  pause 1000
  s$ = "panoramic123"
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  s$ = chr$(9)
  res% = dll_call2("SendSingleChar",hnd%,adr(s$))
  s$ = chr$(9)
  res% = dll_call2("SendSingleChar",hnd%,adr(s$))
  s$ = chr$(9)
  res% = dll_call2("SendSingleChar",hnd%,adr(s$))
  s$ = chr$(13)
  res% = dll_call2("SendSingleChar",hnd%,adr(s$))
  pause 1000
  show 0
  return

Pour d'autres browsers, il faudra peut-être adapter la reconnaissance de la présence de la bonne page.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 1:49

Je suis ennuyé, ça ne marche pas. Je ne me souvenais plus du nom du browser par défaut: Slimbrowser.

J'ouvre avec le bouton, puis Panoramic disparu. Si j'ai compris avec une de tes dll, tu caches celui-ci, mais il attend quoi, en dehors de l'onglet? J'ai vu avec RapidTaskKiller, en relancant le programme, le l'icône se montre et se cache indéfiniment. Donc il attend quelque chose, et j'ai pas le temps de décoder les noms des dll pour savoir ce qu'elles font. Donc je suis obligé de tuer Panoramic. N'ayant plus de forme, je ne peux cliquer sur le list.

Tu as vraiment du mal à te passer du handle.
Si tu as regarder mon programme en AutoIt, tu as du comprendre qu'au départ je me suis servi des touches: <ALT><TAB> pour passer du programme à la fenêtre.
J'ai oublié de mettre les commentaires sur mon programme:
ClipPut($b) je mets le contenu du list dans le presse papier
Sleep(500) un petit délai utile ou pas, je ne sais pas, mais je l'ai mis
Send("!{TAB}") envoi de <ALT><TAB>, pour changer de programme
Send("^v") envoi de <CRTL> v , pour coller le contenu du pseudo
Send("{TAB}") envoi de tab pour changer d'edit
Send("panoramic123") puis du MDP
J'ai pas cliqué sur LOGIN pour controler.
De cette façon, ça marche avec QtWeb et Slimbrowser.
Et si dans mon programme, QtWeb est ouvert sur la page Login, sans appuyé sur mon bouton pour lancer Slimbrowser, vu qu'il est en défaut sur mon système, et que je clique sur l'un des items, ça marche aussi.

Je suis désolé, qu'est ce que je suis emmerdant! Si tu arrive à faire cela, en dehors de moi, par la navigation des touches, ont peu faire plein de choses.
Mais bon, apparemment, les autres ne sont pas interessés, ou n'ont pas compris.

Je sens que je vais faire un somme!
EDIT, je viens de faire un essai rapide, ça marche aussi avec ce forum (j'ai entré l'un des noms de la liste, vu que depuis j'ai complété avec ceux que j'ai trouvé. Voila un moyen de faire des réponses automatiques.

Salut Jicehel, on se croise! Moi aujourd'hui, Firefox c'est un autre monde, j'ai plus de mémoire.

RE-EDIT, quand je dis ça marche, j'ai pas fait goffe, c'est avec mon programme.


Dernière édition par cosmos70 le Dim 9 Sep 2012 - 2:10, édité 3 fois
Revenir en haut Aller en bas
Jicehel

avatar

Nombre de messages : 5856
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 1:57

Ca marche nickel. Le programme attend la fenêtre de login pour réapparaitre et on clic sur celui que l'on veut dans la liste.
Attention il faut donc ne pas être déjà connecté, sinon faire un logout pour que cela fonctionne.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
bignono

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 9:52

Bonjour Klaus, Smile
J'ai essayé ton petit programme de connexion automatique à my drive. Il fonctionne bien, sauf que le mot de passe se retrouve collé au login, et par conséquent il ne s'ouvre pas la page voulue. J'utilise Internet explorer.
A+ Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 10:03

@Cosmos70:
Si mon programme se cache indéfiniment, il ne reconnait pas que la fenêtre de login est chargée dans le browser. Lors du clic sur le bouton MyDrive, j'appelle la routine suivante:
Code:
MyDrive:
  hide 0
  Execute "http://www.mydrive.ch/login"
  repeat
    pause 1000
    titre$ = string$(255," ")
    hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
    titre$ = trim$(titre$)
  until left$(titre$,8) = "Login | "
  show 0
  return
Explication:
1. mon programme se cache
2. je lance l'adresse URL de MyDrive
3. je fais une boucle d'attente pour surveiller la fin du chargement de la page login:
3.1. j'attends 1 seconde
3.2. je prépare une variable string
3.3. je récupère AUTOMATIQUEMENT le handle et le titre de la fenêtre active
3.4. j'élimine les espaces en trop dans le titre
3.5. et je sors de la boucle d'attente lorsque le titre de la fenêtre commence par "login | "
4. mon programme réapparaît
5. et c'est fini

Tu vois, la boucle est très simple, et le seul point où cela peut accrocher, c'est la reconnaissance du chargement de la page Web. Que dit le titre de ta fenêtre de browser lorsque la page login est chargée ? Est-ce que ce titre a changé pour notifier le titre de la page ? Si oui, il te suffit d'adapter la condition du "until" pour détecter la présence de la page web.

Si le titre de ton browser ne change pas, tu remplaces ce sous-programme par
Code:
MyDrive:
  hide 0
  Execute "http://www.mydrive.ch/login"
  pause 1000 : ' <<<<<===========  adapter la durée ici
  titre$ = string$(255," ")
  hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
  titre$ = trim$(titre$)
  show 0
  return
et tu adaptes la durée de la commande pause pour laisser le temps au chargement.

Je sais bien que lorsque la page est chargée, le curseur est placé directement dans la zone de l'identifiant. Et je lui envoie directement les données nécessaires, via le handle qui a été récupéré automatiquement. Et je le trouve, quelque soit le browser car dans tous les cas, ce sera la fenêtre active puisque mon programme se cache, justement pour cette raison. La fonction GetActiveWindowTitle retourne le titre dans le paramètre string passé par adresse, et le handle correspondant par la valeur de retour. C'est automatique. Il faut juste attendre assez longtemps pour s'assurer que la page est bien chargée.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 10:06

Bonjour.
Comme cela ne marchait pas chez moi, j'ai fait des essais.
Je vais dire que j'ai été bien surpris, car ta dll, elle tourne en boucle, et j'ai mis 10 mn avant de pouvoir la tuer.

Avec le "tueur" de tâches, je n'arrivais pas à choper et aller terminer la tâche.
J'ai rajouté dll_off après avoir envoyé le clic du pseudo, et là le message d'erreur apparaît pour dire que la dll est fermée. Normalement une fois la tâche faite, le travail est fait, et je devrais reprendre la main, et bien non, toutes les secondes environ, elle reprend.
Code:
label MyDrive, choix
dim s$, res%, hnd%, hnd0%, titre$

dll_on "KGF.dll"
left 0,screen_x -500: top 0,50: width 0,440 : height 0,280

list 1 : height 1,200 : width 1,400
  on_click 1,choix
  item_add 1,"panoramic@cosmos70"
  item_add 1,"panoramic@klausgunther"

button 2 : top 2,210 : left 2,10
  caption 2,"MyDrive" : on_click 2,MyDrive

hnd0% = handle(0)
end

MyDrive:
  Execute "http://www.mydrive.ch/login"
  wait 5000
  titre$ = string$(255," ")
  hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
  to_foreground 0
  clipboard_string_copy titre$
  ' message reçu: "SlimBrowser - Login | MyDrive - Ihr Schweizer Online-Speicher"

  s$ = chr$(17) + chr$(9) + chr$(17) + chr$(9)
  res% = dll_call2("SendSingleChar",hnd%,adr(s$))
return

choix:
  to_background 0
  s$ = item_index$(1)
  to_background 0
  wait 1000  :' le temp de voir si le curseur clignote
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  dll_off  :'  rajouté pour stoppé le processus
return

Klaus je vois ton message en même temps que je poste le mien. J'y allais progressivement pour voir. Il y a quand même un problème.

EDIT: comment tu fais pour envoyer <ctrl><tab> vu les bascules:
chr$(17)+chr$(9)+chr$(9)+chr$(17) ou chr$(17)+chr$(9)+ch$(17) ou ...
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 10:16

Je rajoute, pour le cas où tu aurais déjà regardé mon post, que la séquence que j'envoi après l'ouverture du navigateur, c'est un essai rajouté. Je l'ai fait avec et sans. Vu les problèmes rencontrés, je ne connais pas le résultat.

A propos: lorsqu'on ferme un programme, la dll peut-elle être encore active?
En cas de problème avec le programme, et qu'on le stoppe, la dll fait-elle encore quelque chose. Un problème d'une fois précédente?
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 10:56

@Cosmos70:
Il ne faut pas tuer la DLL de cette façon. Elle mémorise un certain nombre de choses (état des touches control, ...), et su tu la tues, ces informations sont perdues et la synchronisation se perd avec la suite. De plus, tu fais dll_off immédiatement après un SendStringAsText. Or, c'est périlleux: la demande d'envoi a bien été posté à Windows, avec l'adresse du début de la chaîne ainsi que sa longueur. Mais tu ne sais pas QUAND l'envoi sera terminé. Et tu lui tues l'adresse avant que le travail de soit fini... Si tu arrêtes le programme, la DLL sera libérée automatiquement. J'ai ajouté ce code dans la version postée ci-après.

Laisse le programme comme ça, et joue sur la boucle de reconnaissance de la page, tel que je te l'avais suggéré. Suite à la remarque de Bignono, j'ai fait une version légèrement modifiée du programme pour que ça passe aussi avec Internet Explorer. La différence est dans l'envoi de l'identifiant et du mot de passe, pas du tou au niveau de la reconnaissance de la page.

La DLL est inchangée.

Code:
' connexion_MyDrive.bas

label MyDrive, choix, close0
dim s$, res%, hnd%, hnd0%, titre$

dll_on "KGF.dll"

width 0,440 : height 0,280 : on_close 0,close0

list 1 : height 1,200 : width 1,400
  on_click 1,choix
  item_add 1,"panoramic@cosmos70"
  item_add 1,"panoramic@klausgunther"

button 2 : top 2,210 : left 2,10
  caption 2,"MyDrive" : on_click 2,MyDrive
 
 
 
hnd0% = handle(0)

end

close0:
  dll_off
  return

MyDrive:
  hide 0
  Execute "http://www.mydrive.ch/login"
  repeat
    pause 1000
    titre$ = string$(255," ")
    hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
    titre$ = trim$(titre$)
  until instr(titre$, "Login | " )>0
  show 0
  return
 
choix:
  hide 0
  pause 1000
  titre$ = string$(255," ")
  hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
  if instr(titre$, "Login | " )=0
    show 0
    message "Il faut d'abord cliquer sur [MyDrive] !"
    message "Le titre actuel est: ["+titre$+"]"
    return
  end_if
  s$ = item_index$(1)
  hnd% = dll_call0("GetActiveControl")
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  s$ = chr$(9)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  s$ = "panoramic123"
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  s$ = chr$(9)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  s$ = chr$(13)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  show 0
  return

Edité le 9/9/2012 à 13:22 pour remplacer left$ par instr (info de Cosmos70).


Dernière édition par Klaus le Dim 9 Sep 2012 - 14:31, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
bignono

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 11:49

Merci beaucoup Klaus, Very Happy Ça fonctionne super maintenant! Ça ouvre plein de possibilités ces nouvelles fonctions de KGF.dll!
A+ Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 11:59

Merci, Bignono ! Et je suppose que tu as silencieusement corrigé le petit oubli de "0," en ligne 0 - c'est corrigé dans le source posté ci-dessus.

Nouvelle info: ça marche aussi tel quel avec Chrome !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 12:13

Klaus, si j'ai rajouté, dll_off, c'est juste qu'avant j'ai subit ce que j'ai dit. Et pour refaire l'essai, j'ai pris la précaution de rajouter dll_off pour repredre le contrôle de mon ordi. La dll avait perdu le controle, et dans l'éditeur Panoramic, il n'arrétait pas de me rajouter le contenu du clic du list, à savoir panoramic@.... Il faudrait que tu fasses en sorte qu'au bout de x tentative de branchement (ou je ne sais pas quoi) elle annule la commande.

Je te l'ai bien dit que j'ai rajouté dll_off après.
Peut-être faudrait-il un dll_wait, ou exit ou je ne sais pas quoi. toujours est-il qu'elle me renvoyait (et avant que je ne mette dll_off) la chaine s$ je crois, vu qu'ensuite l'éditeur est parti aussi avec les programmes.

Je ne sais plus trop si je dois faire l'essai ou non, vu ce qu'il sait passé. Peut-être un commande dans la dll avec res%=(dll_quit(...)) un paramètre qui permette de reprendre le controle.

A propos, tu ne m'as pas dit comment tu vois: <ALT TAB> je remarque que j'ai employé <CTRL TAB> (si il faut doubler les deux, sinon lequel?)

Le problème est que tu insistes sur le handle, et qu'avec tout n'est pas possible. Car je ne suis pas encore certain que handle(0) s'en libère. Qu'en est-il vraiment?
Revenir en haut Aller en bas
bignono

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 12:18

Oui Klaus, j'avais vu l'oubli de "0,", ce n'était pas bien grave!
Merci encore!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5856
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 12:18

Cosmos, pour arréter, il suffit juste de ne pas appelr la DLL.

Si tu veux un nombre fini ou un moyen de quitter ajoute un exit_repeat sur un test de la touche esc dans le sous programme mydrive ou remplace le repeat par une boucle for.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 12:44

Citation :
Cosmos, pour arréter, il suffit juste de ne pas appelr la DLL.
Je programme je l'ai mis. Tu retires juste dll_off dans la ligne citée. C'est celui de Klaus allégé, pour regarder à la suite, et avant d'aller plus loin, ce qui se passe.
Donc il n'y a une fois le navigateur ouvert qu'un appel au sous programme depuis le clic sur le list.
Mais dans le gestionnaire de tâches, si j'essaye d'appuyer sur panoramic, le dit programme, on voit que toutes les lignes sont listées pour reprendre. ce qui fait que j'ai pas le temps de cliquer sur terminer le processus, que c'est un autre programme qui a le focus dans la liste.
Si tu ne veux pa que j'appelle la dll, donc il n'y a plus de programme. Je signale qu'il n'y a qu'un seul clic sur le list, mais cela fait comme si le sous-programme était revu en continu.

Mais moi j'avais juste parlé au départ pour le clavier, et je ne pensais pas que cela allait prendre tout mon temps. Je sais que cela prend aussi le temps de Klaus. Je suis toujours au même point avec mon programme, car je ne peux avancer dedans, surtout que j'y reste pas longtemps à la fois. J'ai bien des choses à faire, et ça s'accumule. Tout à l'heure je pars à Besançon, et je ne sais pas si je dois aussi aller à Dole (des villes certainement inconnues pour vous). Mes journée sont chargées.
Revenir en haut Aller en bas
Jicehel

avatar

Nombre de messages : 5856
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 12:53

Je n'ai pas dit ça cosmos, mais dans la procédure MyDrive, il y a un appel infini à la DLL jusqu'à ce que l'on obtienne le résultat. Si tu veux pouvoir sortir, soit tu modifie la boucle repeat pour prévoir une condition de sortie (par exemple un or cpt=10) et en mettant cpt à 0 au départ et un cpt=cpt+1 avant la fin de la boucle, soit tu mets un test d'appui sur echap pour pouvoir sortir de la boucle quand tu veux.
Ce que je voulais dire, c'est que ce n'est pas la DLL qui boucle mais les appels à la DLL tel que le programme est prévu. Tu peux donc modifier ces conditions d'appels assez facilement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 12:59

@Cosmos70:

J'ai installé QTWeb chez moi pour voir ce qui se passe.

Je crois que ton problème vient du fait que tu exécutes mon programme avec l'éditeur de Panoramic, et cela perturbe dans certains cas la notion de "fenêtre active".

Génère un EXE à partir de mon programme. Réduis l'éditeur. Lance mon programme en EXE. clique sur MyDrive - QTWeb devrait se lancer avec la bonne page. Et mon programme, caché pendant la phase de lancement, réapparaîtra à ce moment-là. Clique sur Cosmos... et tu te trouves dans tes dossier.

Ca marche impeccable chez moi avec QTWeb dans ces conditions. Prends le dernier programme que j'ai posté juste au-dessus - ça marche avec ça. Firefox, Internet Explorer, Chrome et QTWeb - testés, ok.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 14:10

Voila, le navigateur par défaut, comme je l'ai dit est Slimbrowser, QtWeb, Windows ne l'accepte pas ainsi (je ne sais pas pourquoi. Donc le navigateur cité, s'ouvre. Mais c'est tout. Ensuite, comme Panoramic est caché.

Je viens de faire l'essai du programme, mais en le modifiant:

Code:

label MyDrive, choix, close0
dim s$, res%, hnd%, hnd0%, titre$

dll_on "KGF.dll"

width 0,440 : height 0,280 : on_close 0,close0

list 1 : height 1,200 : width 1,400
  on_click 1,choix
  item_add 1,"panoramic@cosmos70"
  item_add 1,"panoramic@klausgunther"

button 2 : top 2,210 : left 2,10
  caption 2,"MyDrive" : on_click 2,MyDrive



hnd0% = handle(0)

end

close0:
  dll_off
  return

MyDrive:
  hide 0
  Execute "http://www.mydrive.ch/login"
  repeat
    pause 1000
    titre$ = string$(255," ")
    hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
    titre$ = trim$(titre$)
  until instr(titre$, "Login | " ) > 0
  show 0
  return
  if left$(titre$,8) <> "Login | "
    show 0
    message "Il faut d'abord cliquer sur [MyDrive] !"
    message "Le titre actuel est: ["+titre$+"]"
    return
  end_if
choix:

  hide 0
  pause 1000
  titre$ = string$(255," ")
  hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))

  s$ = item_index$(1)
  hnd% = dll_call0("GetActiveControl")
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  s$ = chr$(9)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  s$ = "panoramic123"
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  s$ = chr$(9)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  s$ = chr$(13)
  res% = dll_call2("SendStringAsText",hnd%,adr(s$))
  pause 1000
  show 0
  return

Et de cette façon ça marche. J'ai modifié, la façon de voir si le programme est ouvert avec instr(), car le titre est:
"SlimBrowser - Login | MyDrive - Ihr Schweizer Online-Speicher"

Merci pour tes efforts, maintenant je vais passer à autre chose, et on m'appelle. Peut-être un apéro! On n'y a droit non? Aller OUI

Au faite, pourquoi tune me répond pas pour tabuler sur un autre programme par <ALT><TAB>, les 2 sont en bascule? surement oui.

A propos, j'ai pas pensé à faire un exécutable, ça marché direct.
Revenir en haut Aller en bas
Jicehel

avatar

Nombre de messages : 5856
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 14:14

Bon apéro Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Dim 9 Sep 2012 - 14:23

Bonne idée, Cosmos70. J'ai remplacé left$ par instr dans le source posté à la page précédente. J'ai installé SlimBrowser - ça marche.

Firefox, Internet Explorer, Chrome, QTWeb et SlimBrowser - testés, ok.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




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

Revenir en haut Aller en bas
 
Fonctions d'envoyer de touches à un objet interne ou externe
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 6Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
 Sujets similaires
-
» Passer un objet devant les autres (ou derrière)
» Comment envoyer une détection chez avira avec Antivir 9 français - Version Classic
» Récupérer toutes les touches tapées
» Opération sur objet EDIT
» Piano à 88 touches

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: