Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF.dll - demandes ou suggestions de modifications ou ajouts | |
|
+7papydall Oscaribout Marc Pedro Minibug pascal10000 Klaus 11 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 10:15 | |
| Merci ! Je vais continuer... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 10:48 | |
| La locution en el año de gracia n'existe pas dans le texte proposé. Ni aucune des locutions, d'ailleurs.
Pour le texte proposé, et pour les locutions proposés, peux-tu me dire où il faudrait trouver quoi et quel devrait être le résultat ? La, je nage...
D'ailleurs, ton texte comprend des guillemets. On ne peut pas le charger tel quel dans une combo. Qu'est-ce qu'il faut faire avec les gullemets ? Tu sais bien que Panoramic a un problème avec ça. Et, faut-il séparer le texte en lignes individuelles ? Faut-il retourner, outre que la partie droite d'une locution éventuellement trouvée, une indication de la ligne dans laquelle elle a été trouvée ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 11:18 | |
| Avec un combo, les guillemets posent problème. Mais il paraît qu'on peut le charger dans un mémo. Cela te conviendrait-il ? Et, vraiment, faut-il séparer les phrases en ligne, ou fait-il considérer le texte donné comme une seule chaîne de caractères ? Car dans ce cas, pourquoi avoir proposé une combo en entrée, pour le texte ? Une seule chaîne suffirait, alors, comme je l'avais imaginé au début... | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Sam 16 Déc 2017 - 15:24 | |
| Bonjour. @Klaus. En réponse à ta question, le texte de départ est contenu dans une unique variable. Exemplea$="Mirando al cielo desde cualquiera de los hemisferios, se pueden ver sin telescopio unas 4.500 estrellas. Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen. Las estrellas más abundantes, tres de cada cuatro en la Vía Láctea, son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista. Ni siquiera la más cercana de ellas, Proxima Centauri, a solo 4,5 años luz, es visible en el cielo nocturno. Sin embargo, es en torno a esos astros donde se empieza a plantear que, por probabilidad, será más fácil encontrar mundos habitables. Precisamente en esa estrella vecina, los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos, bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia." Il faut donc passer en paramètre l'adresse de cette variable, et ne pas décomposer a$ en plusieurs lignes. - Code:
-
sin embargo , los diputados de la duma y el fiscal general tenían otra idea en mente : se expandió el alcance del registro , y el candidato más probable para supervisor es ahora roskomnadzor ( la agencia federal de supervisión para las telecomunicaciones y los medios de comunicación ) . ;locut; les députés de la douma et le procureur général , quoi qu ' il en soit , avaient d ' autres projets : la liste a été augmentée , et le candidat le plus probable à sa supervision est désormais roskomnadzor ( l ' agence fédérale de supervision pour les technologies de l ' information et les communications ) . ; locut; sin embargo a alex tang le alivia ( ing ) que el problema de exceso de estudiantes de medicina sea reconocido , aunque siente que es demasiado tarde . ;locut; alex tang , toutefois , est soulagé que le problème du surnombre des étudiants en médecine ait été reconnu , mais il pense qu ' il est trop tard . ; locut; sin embargo acumular bienes es peligroso en jaci . ;locut; cependant , accumuler de la richesse à jaci est très dangereux . ; locut; sin embargo ahora ha cambiado de parecer : ;locut; cependant , il a désormais changé d ' avis : ; locut; sin embargo ahora , con la reinauguración del ferrocarril del hijaz , hay un tren que conecta la ciudad de zarqa ' a con amman . ;locut; cependant , avec la réouverture de la ligne de hijaz railway , il existe un train qui relie la ville de zarqa ' a à amman . ; locut; On recherche donc, dans la variable a$, la sous-chaîne suivante: (1er item de la combo contenant les locutions) - Code:
-
sin embargo , los diputados de la duma y el fiscal general tenían otra idea en mente : se expandió el alcance del registro , y el candidato más probable para supervisor es ahora roskomnadzor ( la agencia federal de supervisión para las telecomunicaciones y los medios de comunicación ) . Si la sous-chaîne ci-dessus est trouvée dans a$, on enregistre dans le second objet combo la ligne complète du 1er item indiqué, soit la partie gauche ci-dessus et sa partie droite. On continué ensuite avec les autres items, sans vider évidemment le 2è combo. Suis-je clair ? | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Sam 16 Déc 2017 - 15:33 | |
| Bonjour. @Klaus. Voici un exemple plus court. a$="aquí estoy !" Liste des locutions contenues dans un fichier et non plus dans un objet combo: - Code:
-
aquí está ! ;locut; voilà ! ; locut; aquí estoy ! ;locut; me voici ! ; locut; aquí estoy ! ;locut; me voilà ! ; locut; On recherche dans a$ la partie gauche de chacune des lignes du fichier. Le séparateur étant ici ;locut;Soit ici - Code:
-
aquí está ! aquí estoy ! aquí estoy ! On trouve donc 2 occurences dans a$. - Code:
-
aquí estoy ! aquí estoy ! Le second combo devra enregistrer les 2 lignes entières correspondantes, soit: - Code:
-
aquí estoy ! ;locut; me voici ! ; locut; aquí estoy ! ;locut; me voilà ! ; locut; | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 17:41 | |
| Merci, Pédro. Là, c'est parfaitement clair. Je vais m'y mettre... ce ne sera pas long. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 18:24 | |
| Tu peux charger KGF.dll et essayer la fonction suivante: - Code:
-
res% = dll_call4("FindMultipleStringsInString",adr(InString$),adr(Separator$),handle(SearchCombo%),handle(ResultCombo)) InString$ = chaîne de caractères contenant le texte à analyser Sepoarator = chaîne de caractères contenant le séparateur des critères de recherche SearchCombo% = numéro d'un objet Combo Panoramic contenant la liste des critères à chercher ResultCombo% = numéro d'un objet Combo Panoramic recevant toutes les lignes dont la partie gauche est dans le texte à analyser De façon interne, aussi bien le texte à analyser que les critères sont transformés en minuscules. Chez moi, ça marche avec le petit exemple. ¨Pour l'exemple plus long, il y a un problème: le texte proprement-dit parle d'astronomie, alors que les locutions parlent de politique, et on ne trouve aucune correspondance. Mais il y a des chances que ça marche chez toi, dans ton contexte. | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Sam 16 Déc 2017 - 18:45 | |
| Bonsoir. @Klaus. Voici le test que je viens de réaliser. Le fichier des locutions est téléchargeable à l'adresse indiquée dans le code. - Code:
-
' https://mon-partage.fr/f/KDwYj4Ga/
dll_on "kgf"
dim a$, Separator$ a$="Mirando al cielo desde cualquiera de los hemisferios, se pueden ver sin telescopio unas 4.500 estrellas. Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen. Las estrellas más abundantes, tres de cada cuatro en la Vía Láctea, son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista. Ni siquiera la más cercana de ellas, Proxima Centauri, a solo 4,5 años luz, es visible en el cielo nocturno. Sin embargo, es en torno a esos astros donde se empieza a plantear que, por probabilidad, será más fácil encontrar mundos habitables. Precisamente en esa estrella vecina, los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos, bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia."
Separator$=";locut;"
combo 1 left 1,-200 file_load 1,"fichiers\locutions_espagnol_français.txt" combo 2 width 2,600
res%=dll_call4("FindMultipleStringsInString",adr(a$),adr(Separator$),handle(1),handle(2)) Je n'obtiens malheureusement aucun résultat, ou alors le temps de traitement est excessivement long. D'ailleurs, la 2è combo n'apparaît même pas. Pourrais-tu tester le code de ton côté ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 20:05 | |
| Le problème vient de ton fichier qui est beaucoup trop grand pour pouvoir être chargé dans une ComboBox. Même 1000 enregistrements posent problème. Alors, ne parlons pas de ton fichier...
J'ai testé mon objet StringList de KGF.dll, et là, le chargement se fait, allez, disons 3 secondes maxi.
Je suis donc en train d'adapter cette fonction pour pouvoir utiliser un StringList de KGF.dll au lieu d'une Combo.
Patience... | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Sam 16 Déc 2017 - 20:24 | |
| Bonsoir. @Klaus. Merci d'avoir pris le temps de tester. Oui, en effet, je pense que l'utilisation d'un objet StringList à la place d'une combo serait bénéfique. J'entrevois une solution encore plus rapide. - Code:
-
dim d$, e$, f$, ftf%, i%, k%, tampon$, posact%, res%, t$, te$, taille%, x% dim tab$(1000)
t$="Mirando al cielo desde cualquiera de los hemisferios , se pueden ver sin telescopio unas 4.500 estrellas . Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen . Las estrellas más abundantes , tres de cada cuatro en la Vía Láctea , son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista . Ni siquiera la más cercana de ellas , Proxima Centauri , a solo 4,5 años luz , es visible en el cielo nocturno . Sin embargo , es en torno a esos astros donde se empieza a plantear que, por probabilidad , será más fácil encontrar mundos habitables . Precisamente en esa estrella vecina , los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos , bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia ." t$=lower$(t$)
k%=0 while 0=0 x%=instr(t$," ") if x%=0 then exit_while k%=k%+1 tab$(k%)=left$(t$,x%-1) t$=right_pos$(t$,x%+1) end_while taille%=k% . On commence par décomposer la chaîne de départ en mots individuels, que l'on place dans un tableau. On considère ensuite les mots par groupe de deux. . (A) On recherche, dans le fichier des locutions, la 1ère ligne qui commence par le groupe de mots. . Si aucune occurrence n'est trouvée, on retourne en (A). . (B) Si au moins une occurrence est trouvée, on lit chaque ligne du fichier des locutions, à partir de la ligne trouvée. . Si le début de la ligne lue commence par les deux mots, on enregistre cette ligne dans la combo, puis on retourne en (B). . Si non, retour en (A). Qu'en penses-tu ? On devrait obtenir un gain de vitesse spectaculaire ! | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Sam 16 Déc 2017 - 20:45 | |
| Bonsoir. @Klaus. J'ai créé un petit code qui montre ce que devrait réaliser la commande. Le temps d'exécution est encore beaucoup trop long. - Code:
-
dim a$, b$, d$, e$, f$, i%, k%, n%, res%, sep$, t$, te$, taille%, x%, y% sep$=";locut;"
dim tab$(1000)
t$="Mirando al cielo desde cualquiera de los hemisferios , se pueden ver sin telescopio unas 4.500 estrellas . Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen . Las estrellas más abundantes , tres de cada cuatro en la Vía Láctea , son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista . Ni siquiera la más cercana de ellas , Proxima Centauri , a solo 4,5 años luz , es visible en el cielo nocturno . Sin embargo , es en torno a esos astros donde se empieza a plantear que, por probabilidad , será más fácil encontrar mundos habitables . Precisamente en esa estrella vecina , los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos , bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia ." t$=lower$(t$)
' Tableau contenant les mots individuels. k%=0 while 0=0 x%=instr(t$," ") if x%=0 then exit_while k%=k%+1 tab$(k%)=left$(t$,x%-1) t$=right_pos$(t$,x%+1) end_while taille%=k%
dll_on "kgf"
f$="fichiers\locutions_espagnol_français.txt" dlist 1 file_load 1,f$ i%=object_internal(1)
dlist 2
d$=time$
for k%=1 to taille%-1 e$=tab$(k%)+" "+tab$(k%+1)+" " te$=" " ' On recherche la présence des 2 mots dans le fichier des locutions. n%=dll_call3("SearchStringList",i%,adr(e$),adr(te$)) ' Occurrence trouvée ? if n%>0 while 0=0 ' Lecture des mots suivants. a$=item_read$(1,n%) if left$(a$,len(e$))<>e$ then exit_while
y%=instr(a$,sep$)-1 if y%>0 b$=trim$(left$(a$,y%)) if instr(t$,b$)>0 then item_add 2,a$ end_if n%=n%+1 end_while end_if next k% message d$+" : "+time$ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Sam 16 Déc 2017 - 21:46 | |
| Je crois que je tiens quelque chose: - Code:
-
' test_Pedro_Locutions.bas ' https://mon-partage.fr/f/KDwYj4Ga/
dll_on "kgf.dll"
width 0,700
dim a$, Separator$, res%, file$ a$="Mirando al cielo desde cualquiera de los hemisferios, se pueden ver sin telescopio unas 4.500 estrellas. Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen. Las estrellas más abundantes, tres de cada cuatro en la Vía Láctea, son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista. Ni siquiera la más cercana de ellas, Proxima Centauri, a solo 4,5 años luz, es visible en el cielo nocturno. Sin embargo, es en torno a esos astros donde se empieza a plantear que, por probabilidad, será más fácil encontrar mundos habitables. Precisamente en esa estrella vecina, los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos, bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia."
Separator$=";locut;"
res% = dll_call2("CreateStringList",1, 0) file$ = "locutions_espagnol_français.txt" res% = dll_call2("LoadStringList",1,adr(file$)) res% = dll_call1("StringListItemCount",1) message "Nombre de locutions: "+str$(res%)
combo 2 : top 2,300 width 2,600
' format: res% = dll_call4("FindMultipleStringsInString",adr(InString$),adr(Separator$),NSL%,handle(ResultCombo%)) res% = dll_call4("FindMultipleStringsInString",adr(a$),adr(Separator$),1,handle(2)) message "Trouvés: "+str$(res%)
res% = dll_call1("DeleteStringList",1) end
Il faut créer une StringList de KGF.dll et charger le fichier des locutions dedans. Ultra-rapide. Puis, la fonction de recherche prend le numéro de la StringList en paramètre (ici, le 1). Voici le format général de la fonction: - Code:
-
res% = dll_call4("FindMultipleStringsInString",adr(InString$),adr(Separator$),NSL%,handle(ResultCombo%)) En un instant, elle trouve 60 lignes de résultat. EDITComme tu peux voir, il y a en fait 3 étapes: 1. création et chargement de la StringList - à faire une seule fois au lancement du programme 2. la recherche pour une chaîne de caractères donnée - à répéter autant que de besoin 3. la suppression de la StringList - à faire en sortie du programme Ainsi, tu obtiendras des performances intéressantes, je pense ! | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Dim 17 Déc 2017 - 8:00 | |
| Bonjour. @Klaus. Je viens de tester ton code, et j'obtiens le message d'erreur suivant: Not correct arithmetic expression line 25.Bien qu'ayant téléchargé la version 812 de kgf sur ton site à l'instant. - Code:
-
' test_Pedro_Locutions.bas ' https://mon-partage.fr/f/KDwYj4Ga/
dll_on "kgf.dll" dim a$, Separator$, res%, file$, version%
version%=DLL_call1("KGFdllVersion",adr(version$)) message version%
width 0,700
a$="Mirando al cielo desde cualquiera de los hemisferios, se pueden ver sin telescopio unas 4.500 estrellas. Esa minúscula muestra de los innumerables soles del universo ni siquiera es representativa de los mundos que existen. Las estrellas más abundantes, tres de cada cuatro en la Vía Láctea, son las enanas rojas y tienen un brillo tan tenue que no pueden contemplarse a simple vista. Ni siquiera la más cercana de ellas, Proxima Centauri, a solo 4,5 años luz, es visible en el cielo nocturno. Sin embargo, es en torno a esos astros donde se empieza a plantear que, por probabilidad, será más fácil encontrar mundos habitables. Precisamente en esa estrella vecina, los astrónomos acaban de encontrar un nuevo planeta que puede ofrecer una idea sobre la naturaleza de los refugios de la vida en el cosmos, bastante distintos de nuestro planeta o de lo que cabría imaginar si la Tierra es nuestra referencia."
Separator$=";locut;"
res%=dll_call2("CreateStringList",1,0) file$="fichiers\locutions_espagnol_français.txt" res%=dll_call2("LoadStringList",1,adr(file$)) ' res% = dll_call1("StringListItemCount",1) ' message "Nombre de locutions: "+str$(res%)
combo 2 : top 2,300 width 2,600
res%=dll_call4("FindMultipleStringsInString",adr(a$),adr(Separator$),1,handle(2)) message "Trouvés: "+str$(res%)
res% = dll_call1("DeleteStringList",1) end | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Dim 17 Déc 2017 - 9:36 | |
| J'ai refais les transerts... ça devrait marcher. | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Dim 17 Déc 2017 - 10:00 | |
| Bonjour.
Un grand merci Klaus.
Je télécharge la nouvelle version de kgf, et te tiens au courant de la suite, après intégration de la nouvelle commande dans mon big logiciel.
Bon dimanche. | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Demande de nouvelle commande. Dim 17 Déc 2017 - 18:04 | |
| Bonsoir.
@Klaus.
J'ai finalement réussi à intégrer la nouvelle commande dans mon logiciel. Et je t'informe que tout fonctionne à merveille.
Le gain de vitesse est remarquable, les résultats étant obtenus presque instantanément.
Un grand merci pour cette avancée. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Dim 17 Déc 2017 - 18:13 | |
| Super ! Je suis content. Tu verras: j'ai publié la version et j'ai fait la doc de la fonction. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Lun 18 Déc 2017 - 22:44 | |
| bsr klaus pourrai tu communique le niveau des vumetre avec un progress_bar comme ça mon poste sera poste sera presque fini
as tu remarquer l'évolution du poste fm ? j'y ai incorporer une case de favoris a 9 boutons delà on enregistrer 9 stations pré-enregistrer
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Mar 19 Déc 2017 - 0:33 | |
| - Citation :
- pourrai tu communique le niveau des vumetre avec un progress_bar
C'est " dans les cartons"... ça viendra bientôt. Je suis en train d'étudier la possibilité d'étender l'objet AutoUpdater à d'autres objets, comme la Progess_Bar justement. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Mar 19 Déc 2017 - 0:44 | |
| ok j’attends avec impatient | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Mar 19 Déc 2017 - 3:04 | |
| Ce sera publié demain soir avec la doc: ça marche pour les 3 types de barres; Scroll_Bar, Progess_Bar et Track_Bar. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Mar 19 Déc 2017 - 11:37 | |
| C'est fait. Nouvelle version de KGF.dll avec une fonction AutoUpdateBar s'appliquant aux SCROLL_BAR, PROGRESS_BAR et TRACK_BAR. Documentation à jour.
Il est chouette, ton poste avec les touches de présélection ! | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Mar 19 Déc 2017 - 11:39 | |
| merci klaus
c'est super je le télécharge tout de suite | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: tester WindowTopMost, ChangeWindowSize SendSingleKey Dim 11 Fév 2018 - 11:16 | |
| Bonjour,
Voila, je suis en train de concevoir un programme pour une personne pas doué avec le pc, qui ne connait pas le clavier, et lui permettre de voir ses comptes avec le maximum d'automatisation et sécurité.
Je me bât depuis hier après-midi (jusqu'à 4h) avec kgf pour les fonctions citées dans le titre de ce sujet.
Il s'agit de travailler avec Firefox. Extrêmement compliqué d'avoir le handle de ce celui-ci.
J'ai utilisé plein de choses: comme WindowToMost, GetProcessWindowHandle et tout un tas d'autre que je ne me souviens plus du nom. Je me suis rendu compte avec les fonctions qui donne le nom des titres que finalement, le handle reçu venait de Panoramic_Editor, ensuite de kgf.chm, d'autre applications qui sont en arrière plan, et le pire d'un bloc-notes dans la barre de tâche qui y est depuis plusieurs jours sans servir. Finalement je m'en suis sorti en faisant une boucle, et la sortie sur le clic d'un textbox de firefox.
Ensuite j'ai du mal à placer la fenêtre en grand mais décalé de 25 pixels du haut, pour avoir une vue du programme avec un message, des boutons en haut. Cela va bien la première fois, mais ensuite avec SendSingleKey, il y a systématiquement une modification des positions de firefox, et le programme en haut est caché.
Dans les proposition de ChangeWindowSize, on a 0: plein écran 0 = maximiser la fenêtre 1 = placer la fenêtre en (gauche%,haut%) 2 = centrer la fenêtre à l'écran 3 = placer la fenêtre en (haut%,gauche%) et imposer les dimensions largeur% et hauteur% 4 = centrer la fenêtre à l'écran et imposer les dimensions largeur% et hauteur%
Moi je veux avoir plein écran mais avec le haut décalé pour voir les commandes du programme en haut, et là les essais ne sont pas optimum.
Je m'en suis sorti, mais je pense qu'il faudrait que tu jètes un œil à ces commandes. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts Dim 11 Fév 2018 - 12:01 | |
| As-tu essayé ChangeWindowSize en mode 3 = placer la fenêtre en (haut%,gauche%) et imposer les dimensions largeur% et hauteur%, avec largeur%=screen_x, hauteur%=screen_y-25, haut%=25 et gauche%=0 ? Le positionnement devrait être correct. Par contre, je n'ai aucun moyen de "contraindre" Firefox de rester dans cette position. Si, pour une raison qui m'échappe, il décide de se déplacer, je ne peux rien faire. Tu peux le faire à ton niveau, en faisant à nouveau un appel à ChangeWindowSize à des moments stratégiques, par exemple après avoir envyé une touche (suivi d'un petit délai, bien sûr). Firefox n'est pas un siimple programme. Déjà, à la base, il ouvre un process pour chaque onglet ouvert, ainsi que pour chaque fenêtre Firefox ouverte. Laquelle choisir - pas simple. Puis, le handle trouvé pour Firefox n'est pas forcément celui auquel on peut envoyer des caractères. Je n'ai pas trouvé de méthode fiable pour identifier cela. Mais tu peux essayer deux choses: 1. Capter Firefox à l'intérieur d'un objet PanoramicTu peux passer ton propre programme en full_space, placer un PANEL aux positions et dimensions comme indiquées ci-dessus, puis injecter Firefox dans ce panel. Ile y restera en ne pourra plus du tout se déplacer. Cette injection se fait par exemple par - Code:
-
res% = dll_call3("LoadBrowserToWindow",hnd%,adr(url$),mode%) Tu peux aussi tenter - Code:
-
res% = dll_call2("AttachWindowToWindow",hnd_enfant%,hnd_parent%) mais ceci impose de connaître le handle de Firefox, ce qui n'est pas le cas de la méthode LoadBrowserToWindow. 2. Créer un programme Panoramic séparé, destiné uniquement à recevoir Firefox. Tu le dimensionnes et positionnes comme tu veux, puis tu utilises une des deux méthodes ci-dessus pour placer Firefox dans la form 0. Dans les deux cas, il n'y aura plus de problème de déplacement intempestifs de Firefox. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts | |
| |
| | | | KGF.dll - demandes ou suggestions de modifications ou ajouts | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |