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
» Logiciel de planétarium.
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-25%
Le deal à ne pas rater :
PC Portable Gamer 16,1” HP Victus 16 – 16 Go /512 Go
749.99 € 999.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
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 14: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

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 18: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:
Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Aa121

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
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 19: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

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 20: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
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 20: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

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 21:52

OK, je vais essayer.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptySam 8 Sep 2012 - 23: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
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 0: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 - 1:10, édité 3 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 0: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
bignono

bignono


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 8: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
Klaus

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 9: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
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 9: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é




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 9: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

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 9: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 - 13:31, édité 3 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 10: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
Klaus

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 10: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
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 11: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

bignono


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 11:18

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

Jicehel


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 11: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
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 11: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

Jicehel


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 11: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
Klaus

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 11: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
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 13: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

Jicehel


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 13:14

Bon apéro Smile
Revenir en haut Aller en bas
Klaus

Klaus


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

Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 Empty
MessageSujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe   Fonctions d'envoyer de touches à un objet interne ou externe - Page 2 EmptyDim 9 Sep 2012 - 13: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
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Fonctions d'envoyer de touches à un objet interne ou externe
Revenir en haut 
Page 2 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: