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 - nouvelles versions | |
|
+13The Gamer Nardo26 silverman Minibug Pedro mindstorm pascal10000 Jicehel papydall Jean Claude JL35 Yannick Klaus 17 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 14 Nov 2014 - 14:55 | |
| Nouvelle version: KGF.dll V3.85 du 14/11/2014
Nouveautés: modification des fonctions d'interception des clics de souris. La valeur retournée dans l'objet EDIT contient maintenant plus d'informations, et on peut plus facilement faire cohabiter l'interception des clics gauches et droits ainsi que les double-clics.
Modules modifiés: KGF.dll
Les sources et la doc sont à jour.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 23 Nov 2014 - 11:37 | |
| Nouvelle version: KGF.dll V3.86 du 22/11/2014Nouveautés: nouvelle fonction: res% = dll_call3("WBSurvey",hmemo%,fun%,act%)Modules modifiés: KGF.dll KGF.chmLes sources et la doc sont à jour. Cette fonction permet d'activer et de désactiver la surveillance du WebBrowser. On récupère dans un mémo, des informations sur l'élément HTML survolé par la souris et/ou cliqué par un clic gauche. Les paramètres sont les suivants: - Citation :
- hmemo% = handle du mémo recevant les informations
fun% = code fonction à exécuter 1 = activer la surveillance 0 = désactiver la surveillance act% = action à activer (si fun%=1) 1 = surveillance de OnMouseOver (survol) 2 = surveillance de OnClick (clic gauche) la valeur à passer est la somme des actions souhaitées La version WB_Survey (multi-browser) n'est pas encore implémentée. Il y aura prochainement un moyen de filtrer les éléments HTML à prendre en considération... Et voici un programme de démo: - Code:
-
label survey_on, survey_off
dim res%, url$, hnd%
dll_on "KGF.dll"
button 1 : top 1,320 : left 1,10 : caption 1,"Survey ON" on_click 1,survey_on button 2 : top 2,350 : left 2,10 : caption 2,"Survey OFF" on_click 2,survey_off memo 10 : top 10,320 : left 10,120 : ' on_change 10,xxx
res% = dll_call1("WBCreate",handle(0)) res% = dll_call4("WBLocate",0,0,400,300) url$ = "http://panoramic.1fr1.net/" res% = dll_call1("WBUrl",adr(url$))
end
survey_on: res% = dll_call3("WBSurvey",handle(10),1,3) return
survey_off: res% = dll_call3("WBSurvey",handle(10),0,0) return
Lancez-le. Baladez le curseur sur le browser ==> rien ne se passe. Cliquez sur "Survey ON". Baladez le curseur sur le browser ==> le contenu du mémo montre ce qui est sous le curseur. Cliquez n'importe où ==> le contenu du curseur montre ce qui est cliqué (même une zone non cliquable) Cliquez sur "Survey OFF". Et la surveillance est arrêtée
Dernière édition par Klaus le Dim 23 Nov 2014 - 15:28, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 23 Nov 2014 - 15:27 | |
| Nouvelle version: KGF.dll V3.87 du 22/11/2014Nouveautés: nouvelle fonction: res% = dll_call1("WBSurveyFilter",adr(txt$))Modules modifiés: KGF.dll KGF.chmLes sources et la doc sont à jour. Cette fonction spécifie la liste des éléments HTML (en majuscules) à prendre en compte. Si cette liste est vide, tous les éléments seront utilisés. C'est le cas par défaut. Voici le programme de démo, avec une liste (à compléter) des éléments HTML: - Code:
-
label survey_on, survey_off, filtre, finhtml
dim res%, url$, hnd%, s$, t$, i%
data "Tout","DIV","IMG","A"
dll_on "KGF.dll"
button 1 : top 1,320 : left 1,10 : caption 1,"Survey ON" on_click 1,survey_on button 2 : top 2,350 : left 2,10 : caption 2,"Survey OFF" on_click 2,survey_off alpha 3 : top 3,320 : left 3,340 : caption 3,"Filtrer:" memo 4 : top 4,320 : left 4,380 : font_name 4,"Courier" bar_both 4 on_error_goto finhtml repeat read s$ item_add 4," "+s$ until s$="" finhtml: off_error_goto button 5 : top 5,410 : left 5,380 : caption 5,"Appliquer" on_click 5,filtre alpha 6 : top 6,305 : left 6,340 : caption 6,"Marquer les éléments avec *" memo 10 : top 10,320 : left 10,120 : ' on_change 10,xxx
res% = dll_call1("WBCreate",handle(0)) res% = dll_call4("WBLocate",0,0,580,300) url$ = "http://panoramic.1fr1.net/" res% = dll_call1("WBUrl",adr(url$)) end
survey_on: res% = dll_call3("WBSurvey",handle(10),1,3) return
survey_off: res% = dll_call3("WBSurvey",handle(10),0,0) return
filtre: t$ = "" if count(4)>0 for i%=1 to count(4) s$ = trim$(item_read$(4,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBSurveyFilter",adr(t$)) if res%>0 message str$(res%)+" éléments HTML sont pris en charge" else message "Tous les éléments HTML sont reconnus" end_if return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 2:35 | |
| Nouvelle version: KGF.dll V3.88 du 24/11/2014Nouveautés: nouvelle fonction: res% = dll_call1("WBExcludeURL",adr(txt$))Modules modifiés: KGF.dll KGF.chmLes sources et la doc sont à jour. Cette fonction permet de définir un ou plusieurs segments d'URLs qui sont à bloquer. Cela peut servir à créer un filtre anti-pub ou un filtre parental. Voici le programme de démo adatpé à cela, avec le filtre prédéfni pour un forum Panoramic sans pub. Pour cela, cliquez sur "Tout" sous le mémo en bas à droite, puis sur "Appliquer", puis cliquez sur "Accueil" du forum. Plus de pubs... - Code:
-
label survey_on, survey_off, filtre_EL, filtre_URL, filtre_URL_tous
dim res%, url$, hnd%, s$, t$, i%
data "Tout","DIV","IMG","A","./." data "doubleclick","about:blank","//ib.","weborama","./."
width 0,1200
dll_on "KGF.dll"
button 1 : top 1,320 : left 1,10 : caption 1,"Survey ON" on_click 1,survey_on button 2 : top 2,350 : left 2,10 : caption 2,"Survey OFF" on_click 2,survey_off alpha 3 : top 3,320 : left 3,340 : caption 3,"Filtrer:" memo 4 : top 4,320 : left 4,380 : font_name 4,"Courier" bar_both 4 read s$ while s$<>"./." item_add 4," "+s$ read s$ end_while button 5 : top 5,410 : left 5,380 : caption 5,"Appliquer" on_click 5,filtre_EL alpha 6 : top 6,305 : left 6,340 : caption 6,"Marquer les éléments avec *" alpha 13 : top 13,320 : left 13,600 : caption 13,"Fragments:" memo 14 : top 14,320 : left 14,660 : font_name 14,"Courier" bar_both 14 read s$ while s$<>"./." item_add 14," "+s$ read s$ end_while button 15 : top 15,410 : left 15,660 : caption 15,"Appliquer" on_click 15,filtre_URL alpha 16 : top 16,305 : left 16,660 : caption 16,"Marquer les sections d'URLs à exclure avec *" button 17 : top 17,410 : left 17,760 : caption 17,"Tous" on_click 17,filtre_URL_tous
memo 10 : top 10,320 : left 10,120 : ' on_change 10,xxx
res% = dll_call1("WBCreate",handle(0)) res% = dll_call4("WBLocate",0,0,1100,300) url$ = "http://panoramic.1fr1.net/" res% = dll_call1("WBUrl",adr(url$)) end
survey_on: res% = dll_call3("WBSurvey",handle(10),1,3) return
survey_off: res% = dll_call3("WBSurvey",handle(10),0,0) return
filtre_EL: t$ = "" if count(4)>0 for i%=1 to count(4) s$ = trim$(item_read$(4,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBSurveyFilter",adr(t$)) if res%>0 message str$(res%)+" éléments HTML sont reconnus" else message "Tous les éléments HTML sont reconnus" end_if return filtre_URL: t$ = "" if count(14)>0 for i%=1 to count(14) s$ = trim$(item_read$(14,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBExcludeURL",adr(t$)) if res%>0 message str$(res%)+" fragments URL sont pris en charge" else message "Aucun fragment URL n'est pris en charge" end_if return filtre_URL_tous: if count(14)=0 then return for i%=1 to count(14) s$ = trim$(item_read$(14,i%)) if left$(s$,1)<>"*" item_delete 14,i% item_insert 14,i%,"* "+s$ end_if next i% message "Tous les fragments URL sont pris en charge" return
Dernière édition par Klaus le Lun 24 Nov 2014 - 11:16, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 10:41 | |
| Cool ça Klaus. Si tu t'amuses à faire une liste de sites à filtrer, tu pourras mettre sur ton webdav ton fichier à inclure pour exlure tous les sites de pub qu'on ne veut pas ? Et comme je n'ai pas trop regarder, l'opération inverse est elle possible dans ton objet: bloquer tout sauf certaines racines de sites autorisés ? Je pense à ça pour mes gamins qui jouent sur internet. Plutôt que d'utiliser un freeware pour gérer la protection, je pourrais comme ça leur faire un browser avec juste les boutons pour les jeux auxquels ils jouent régulièrement qui bloquerait tous les autres sites et notamment les liens à la con. La dernière fois, il y avait une pub pour un site de c...l sur leur site de jeu pour enfants ... Vu que tu travailles apparamment le sujet, je demande directement à la source | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 11:15 | |
| Bonne idée, Jicehel. Je vais regarder cela. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 11:27 | |
| Nouvelle version: KGF.dll V3.89 du 24/11/2014Nouveautés: nouvelle fonction: res% = dll_call2("WBInterceptURL",handle(memo%),adr(txt$))Modules modifiés: KGF.dll KGF.chmLes sources et la doc sont à jour. Cette fonction permet de récupérer dans le mémo indiqué, un texte du format suivant: - Citation :
- INTERCEPT=HandleDuBrowser:URL
La variable txt$ contient la liste des URLs à intercepter, séparées par des virgules. Le browser ne fait rien, et surtout ne va pas charger cette URL. Il incombe au programme appelant de prendre les actions qui s'imposent, en répondant à l'évènement ON_CHANGE du mémo: naviguer vers une autre URL, afficher un message, ignorer tout simplement, déclencher une action dans l'application... Mais, de façon plus importante, ceci est le début de la réalisations des applications en Panoramic avec une page HTML comme interface utilisateur !
En effet, il est maintenant possible de créer une page HTML et la déposer dans un fichier *.html sur disque et charger cette page dans le browser. Et dans cette page, on déclare les boutons avec des pseudo-liens du type: - Citation :
- X://id.param
X, id et param sont des chaînes de caractères choisies librement, pour permettre l'identification de l'action à exécuter. Exemple: CONTACT://create.nomEt ainsi, on pourra faire une interface complètement en HTML... Voici le programme de démo, adapté à cela: - Code:
-
label survey_on, survey_off, filtre_EL, filtre_EL_tous label filtre_URL, filtre_URL_tous label intercept_URL, intercept_URL_tous
dim res%, url$, hnd%, s$, t$, i%
data "DIV","IMG","A","IFRAME","./." data "doubleclick","about:blank","//ib.","weborama","./." data "http://panoramic.1fr1.net/register","./."
width 0,1200
dll_on "KGF.dll"
button 1 : top 1,320 : left 1,10 : caption 1,"Survey ON" on_click 1,survey_on button 2 : top 2,350 : left 2,10 : caption 2,"Survey OFF" on_click 2,survey_off alpha 3 : top 3,320 : left 3,340 : caption 3,"Filtrer:" memo 4 : top 4,320 : left 4,380 : font_name 4,"Courier" bar_both 4 read s$ while s$<>"./." item_add 4," "+s$ read s$ end_while button 5 : top 5,410 : left 5,380 : caption 5,"Appliquer" on_click 5,filtre_EL alpha 6 : top 6,305 : left 6,340 : caption 6,"Marquer les éléments avec *" button 7 : top 7,410 : left 7,480 : caption 7,"Tous" on_click 7,filtre_EL_tous
alpha 13 : top 13,320 : left 13,600 : caption 13,"Fragments:" memo 14 : top 14,320 : left 14,660 : font_name 14,"Courier" bar_both 14 read s$ while s$<>"./." item_add 14," "+s$ read s$ end_while button 15 : top 15,410 : left 15,660 : caption 15,"Appliquer" on_click 15,filtre_URL alpha 16 : top 16,305 : left 16,600 : caption 16,"Marquer les sections d'URLs à exclure avec *" button 17 : top 17,410 : left 17,760 : caption 17,"Tous" on_click 17,filtre_URL_tous
alpha 23 : top 23,320 : left 23,880 : caption 23,"URLs:" memo 24 : top 24,320 : left 24,920 : font_name 24,"Courier" bar_both 24 read s$ while s$<>"./." item_add 24," "+s$ read s$ end_while button 25 : top 25,410 : left 25,920 : caption 25,"Appliquer" on_click 25,intercept_URL alpha 26 : top 26,305 : left 26,880 : caption 26,"Marquer les sections d'URLs à intercepter avec *" button 27 : top 27,410 : left 27,1020 : caption 27,"Tous" on_click 27,intercept_URL_tous
memo 10 : top 10,320 : left 10,120 : ' on_change 10,xxx
res% = dll_call1("WBCreate",handle(0)) res% = dll_call4("WBLocate",0,0,1100,300) url$ = "http://panoramic.1fr1.net/" ' url$ = "http://klauspanoramic.comxa.com/index.html" ' res% = dll_call1("DebugKGF",1) res% = dll_call1("WBUrl",adr(url$)) end
survey_on: res% = dll_call3("WBSurvey",handle(10),1,3) return
survey_off: res% = dll_call3("WBSurvey",handle(10),0,0) return
filtre_EL: t$ = "" if count(4)>0 for i%=1 to count(4) s$ = trim$(item_read$(4,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBSurveyFilter",adr(t$)) if res%>0 message str$(res%)+" éléments HTML sont reconnus" else message "Tous les éléments HTML sont reconnus" end_if return filtre_EL_tous: if count(4)=0 then return for i%=1 to count(4) s$ = trim$(item_read$(4,i%)) if left$(s$,1)<>"*" item_delete 4,i% item_insert 4,i%,"* "+s$ end_if next i% message "Tous les éléments HTML sont pris en charge" return
filtre_URL: t$ = "" if count(14)>0 for i%=1 to count(14) s$ = trim$(item_read$(14,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBExcludeURL",adr(t$)) if res%>0 message str$(res%)+" fragments URL sont pris en charge" else message "Aucun fragment URL n'est pris en charge" end_if return filtre_URL_tous: if count(14)=0 then return for i%=1 to count(14) s$ = trim$(item_read$(14,i%)) if left$(s$,1)<>"*" item_delete 14,i% item_insert 14,i%,"* "+s$ end_if next i% message "Tous les fragments URL sont pris en charge" return
intercept_URL: t$ = "" if count(24)>0 for i%=1 to count(24) s$ = trim$(item_read$(24,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call2("WBInterceptURL",handle(10),adr(t$)) if res%>0 message str$(res%-1)+" URLs sont interceptées" else message "Aucune URL n'est interceptée" end_if return
intercept_URL_tous: if count(24)=0 then return for i%=1 to count(24) s$ = trim$(item_read$(24,i%)) if left$(s$,1)<>"*" item_delete 24,i% item_insert 24,i%,"* "+s$ end_if next i% message "Toutes les URLs sont interceptées" return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 12:22 | |
| @Jicehel: Quelles sont les pubs qui s'affichent sur mon site ? Je n'en vois pas... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 13:18 | |
| Nouvelle version: KGF.dll V3.90 du 24/11/2014
Nouveautés: nouvelle fonction: res% = dll_call1("WBAllowURL",adr(txt$))
Modules modifiés: KGF.dll KGF.chm
Les sources et la doc sont à jour.
Cette fonction permet de spécifier des fragments d'URL qui doivent obligatoirement figurer dans une URL pour qu'elle puisse être accédée. C'est une sorte de liste blanche. On peut y mettre des racines d'adresses URL, ou des morceaux quelconques. Une adresse URL n'est acceptée en navigation que si au moins un des fragments spécifiés est trouvé dans l'URL. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 14:29 | |
| @Klaus, ce n'était pas sur ton site Klaus. Ils jouaient sur IE sur des sites de jeux pour enfants quand ils ont vu ces pubs inappropriés.
Merci pour cette nouvelle fonction. C'est super. Je vais devoir programmer un petit bidule, mais avec tes sources, ça devrait faire un programme clair en quelques lignes et totalement sécurisé. Je créerait un fichier batch avec un icône sur le bureau pour le lancer par panoramic.exe. Après, je ne laisse qu'ie et je masque les icônes et le tour est jouer. Moi, si besoin, je pourrais toujours le lancer par iexplore.exe. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 14:43 | |
| Ca me semble une bonne idée. Petite info supplémentaire: si tu utilises - Code:
-
res% = dll_call1("KGFdebug",1) à partir de ce moment, chaque navigation vers une URL quelconque affiche un message à l'écran avec l'URL concernée, avant d'y aller. C'est ainsi que j'ai relevé ce qu'il faut bloquer pour enlever les pubs sur le forum Panoramic. Il suffit de supprimer cet appel (ou le faire avec le paramètre 0) pour retrouver le fonctionnement normal. Tu peux ainsi te faire une liste similaire à celle que j'ai mise dans le programme de démo, pour bloquer les pubs ou autres nuisances sur le ou les sites que tu veux. La longueur de cette liste n'est pas limitée. Cette possibilité, combinée avec la nouvelle fonction WBAllowURL, permet de faire un filtrage très puissant ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 18:18 | |
| C'est vraiment un bel ajout Klaus. Merci à toi | |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 19:17 | |
| - Klaus a écrit:
- Mais, de façon plus importante, ceci est le début de la réalisations des applications en Panoramic avec une page HTML comme interface utilisateur !
Bravo! Personnellement cela fait bien 2 mois que je suis sur HVIEWER, avec interactions entre cet objet et ceux de Panoramic. Il n'est pas fini, car il y a beaucoup de choses à faire, et peut de temps. Trouver le moyen de surmonter les problèmes pour l'interaction. - un exemple::
Les listes et les tableaux peuvent être programmées depuis le programme. Le changement de page sur une ancre est intercepté, et c'est 100% Panoramic. C'est sur que cela fout le mien en l'air, mais c'est le jeu, et c'est le plus fort qui gagne. Quant il sera fini, j'aurai donc pas la nécessité de le présenter. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 19:53 | |
| Pas d'accord, Cosmos70 ! Tu es en train de réaliser quelque chose de super, en entièrement en Panoramic. Alors que mon projet utilise lourdement KGF.dll. Il y a à l'évidence des besoins pour des solutions autonomes, sans dll. Et c'est pourquoi je pense que nos deux projets sont complémentaires, pas redondants ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 20:52 | |
| De toutes façons il y a des bonnes idées à prendre dans (presque) tous les codes sources | |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Lun 24 Nov 2014 - 22:44 | |
| Je vais faire une réponse limitée, ce n'est pas le bon endroit. - Citation :
- Alors que mon projet utilise lourdement KGF.dll
- Spoiler:
Même si le but est d'avoir un appel par #include, pour l'instant mon programme fait dans les 2100 lignes, dont une bonne partie est serrées. J'utilise actuellement je crois 106 objets panoramic. C'est pas du gâteau. Et comme on se sert presque tout le temps de kgf, on verra la suite ce qui en restera. J'ajoute que l'objet HVIEWER n'est pas un navigateur. La seule instruction qu'il utilise est file_load en dehors de color. On ne peut pas naviguer sur internet, ni naviguer sur le disque avec file:///xxx (quelque chose comme cela). On ne peut qu'avoir des balises html, et pas les plus ressentes. Pas de CSS, ni de java-script et php, rien que du html!
|
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 25 Nov 2014 - 12:24 | |
| Info d'étape: Je suis en train de refondre complètement la gestion des WebBrowsers, car je suis tombé sur une limitation technique qui me gênait. Donc, tout reste en état pour le moment (ce qui est distribué et documenté est en état de fonctionnement, pas de problème de ce côté). Et lorsque ce sera fini, la partie "surveillance", interception et filtrage des URLs fonctionnera également en mode multi-browser (avec les fonctions WB_xxx). Il n'y aura pas de changement apparent sur les fonctions existantes, ni dans la doc (sauf compléments pour les versions multi-browser). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Nov 2014 - 0:19 | |
| Nouvelle version: KGF.dll V3.91 du 26/11/2014Nouveautés: 1. toutes les fonctions WBxxx et WB_xxx ont été réécrites de façon plus rigoureuse 2. les fonctions WB_xxx (multi-browser) sont limitées à 10 browser simultanés maxi 3. la fonction WB_Create retourne une valeur 1...10 pour donner le numéro du browser créé 4. les fonctions WBxxx utilisent de façon interne le browser numéro 0 5. le browser créé par WBCreate et jusqu'à 10 browsers créés par WB_Create peuvent être utilisés simultanément 6. les nouvelles fonctions WB_Survey, WB_SurveyFilter, WB_Exclude et WB_Allow sont fonctionnels 7. nouvelle fonction: res% = dll_call2("WBInterceptURL",handle(memo%),adr(txt$)) et bien sûr: res% = dll_call3("WB_InterceptURL",WB%,handle(memo%),adr(txt$))Modules modifiés: KGF.dll KGF.chmLes sources et la doc sont à jour. La nouvelle fonction WBInterceptURL ou WB_InterceptURL informe le programme appelant qu'une des URLs paramétrées doit êrte accédée. La navigation est annulée et le programme peut prendre les actions qui s'imposent: 1. autorisant la navigation (désactiver l'interception, utiliser WBUrl ou WB_URL pour forcer la navigation, puis réactiver l'interception) 2. remplacer l'URL par une autre et lancer la navigation par WBUrl ou WB_URL (ceci est une redirection) 3. ignorer simplement la demande (équivalant à WBExcludeURL ou WB_ExcludeURL) 4. prendre une action dans le programme Panoramic (en utilisant la page HTML comme interface graphique à l'application) Voici la démo des fonctions WBxxx (mono-browser) avec l'interception de certaines URLs: - Code:
-
label survey_on, survey_off, filtre_EL, filtre_EL_tous label filtre_URL, filtre_URL_tous label intercept_URL, intercept_URL_tous
dim res%, url$, hnd%, s$, t$, i%
data "DIV","IMG","A","IFRAME","./." data "doubleclick","about:blank","//ib.","weborama","./." data "http://panoramic.1fr1.net/register","./."
width 0,1200
dll_on "KGF.dll"
button 1 : top 1,320 : left 1,10 : caption 1,"Survey ON" on_click 1,survey_on button 2 : top 2,350 : left 2,10 : caption 2,"Survey OFF" on_click 2,survey_off alpha 3 : top 3,320 : left 3,340 : caption 3,"Filtrer:" memo 4 : top 4,320 : left 4,380 : font_name 4,"Courier" bar_both 4 read s$ while s$<>"./." item_add 4," "+s$ read s$ end_while button 5 : top 5,410 : left 5,380 : caption 5,"Appliquer" on_click 5,filtre_EL alpha 6 : top 6,305 : left 6,340 : caption 6,"Marquer les éléments avec *" button 7 : top 7,410 : left 7,480 : caption 7,"Tous" on_click 7,filtre_EL_tous
alpha 13 : top 13,320 : left 13,600 : caption 13,"Fragments:" memo 14 : top 14,320 : left 14,660 : font_name 14,"Courier" bar_both 14 read s$ while s$<>"./." item_add 14," "+s$ read s$ end_while button 15 : top 15,410 : left 15,660 : caption 15,"Appliquer" on_click 15,filtre_URL alpha 16 : top 16,305 : left 16,600 : caption 16,"Marquer les sections d'URLs à exclure avec *" button 17 : top 17,410 : left 17,760 : caption 17,"Tous" on_click 17,filtre_URL_tous
alpha 23 : top 23,320 : left 23,880 : caption 23,"URLs:" memo 24 : top 24,320 : left 24,920 : font_name 24,"Courier" bar_both 24 read s$ while s$<>"./." item_add 24," "+s$ read s$ end_while button 25 : top 25,410 : left 25,920 : caption 25,"Appliquer" on_click 25,intercept_URL alpha 26 : top 26,305 : left 26,880 : caption 26,"Marquer les sections d'URLs à intercepter avec *" button 27 : top 27,410 : left 27,1020 : caption 27,"Tous" on_click 27,intercept_URL_tous
memo 10 : top 10,320 : left 10,120 : ' on_change 10,xxx
res% = dll_call1("WBCreate",handle(0)) res% = dll_call4("WBLocate",0,0,1100,300) url$ = "http://panoramic.1fr1.net/" ' res% = dll_call1("DebugKGF",1) res% = dll_call1("WBUrl",adr(url$)) end
survey_on: res% = dll_call3("WBSurvey",handle(10),1,3) return
survey_off: res% = dll_call3("WBSurvey",handle(10),0,0) return
filtre_EL: t$ = "" if count(4)>0 for i%=1 to count(4) s$ = trim$(item_read$(4,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBSurveyFilter",adr(t$)) if res%>0 message str$(res%)+" éléments HTML sont reconnus" else message "Tous les éléments HTML sont reconnus" end_if return filtre_EL_tous: if count(4)=0 then return for i%=1 to count(4) s$ = trim$(item_read$(4,i%)) if left$(s$,1)<>"*" item_delete 4,i% item_insert 4,i%,"* "+s$ end_if next i% message "Tous les éléments HTML sont pris en charge" return
filtre_URL: t$ = "" if count(14)>0 for i%=1 to count(14) s$ = trim$(item_read$(14,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call1("WBExcludeURL",adr(t$)) if res%>0 message str$(res%)+" fragments URL sont pris en charge" else message "Aucun fragment URL n'est pris en charge" end_if return filtre_URL_tous: if count(14)=0 then return for i%=1 to count(14) s$ = trim$(item_read$(14,i%)) if left$(s$,1)<>"*" item_delete 14,i% item_insert 14,i%,"* "+s$ end_if next i% message "Tous les fragments URL sont pris en charge" return
intercept_URL: t$ = "" if count(24)>0 for i%=1 to count(24) s$ = trim$(item_read$(24,i%)) if left$(s$,1)="*" if len(t$)>0 then t$ = t$ + "," t$ = t$ + trim$(mid$(s$,2,len(s$))) end_if next i% end_if res% = dll_call2("WBInterceptURL",handle(10),adr(t$)) if res%>0 message str$(res%-1)+" URLs sont interceptées" else message "Aucune URL n'est interceptée" end_if return
intercept_URL_tous: if count(24)=0 then return for i%=1 to count(24) s$ = trim$(item_read$(24,i%)) if left$(s$,1)<>"*" item_delete 24,i% item_insert 24,i%,"* "+s$ end_if next i% message "Toutes les URLs sont interceptées" return
Et voici une démo des fonctions WB_xxx avec deux browsers simultanés, avec survey automatique separément par browser: - Code:
-
label create1, delete1 label create2, delete2
dim res%, WB1%, WB2%, url$
full_space 0
dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"Créer 1" on_click 1,create1 button 2 : top 2,40 : left 2,10 : caption 2,"Supprimer 1" on_click 2,delete1
button 11 : top 11,10 : left 11,110 : caption 11,"Créer 2" on_click 11,create2 button 12 : top 12,40 : left 12,110 : caption 12,"Supprimer 2" on_click 12,delete2 memo 91 : top 91,400 : left 91,10 : width 91,400 : bar_both 91 memo 92 : top 92,400 : left 92,420 : width 92,400 : bar_both 92
end
create1: WB1% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB1%,10,70,400,300) url$ = "http://panoramic.1fr1.net/" res% = dll_call2("WB_Url",WB1%,adr(url$)) res% = dll_call4("WB_Survey",WB1%,handle(91),1,1) return delete1: res% = dll_call1("WB_Delete",WB1%) return
create2: WB2% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB2%,420,70,400,300) url$ = "http://panoramic.1fr1.net/" res% = dll_call2("WB_Url",WB2%,adr(url$)) res% = dll_call4("WB_Survey",WB2%,handle(92),1,1) return
delete2: res% = dll_call1("WB_Delete",WB2%) return
Là, cela me semble représente un ensemble assez cohérent et puissant ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Nov 2014 - 9:54 | |
| Ca l'est Klaus. Je n'ai pas encore tester, mais je le fais dans les 2 jours qui viennent. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Nov 2014 - 10:38 | |
| Je suis en train de mettre au point un programme d'envoi de mails, avec un GUI en HTML? Juste pour le "proof of concept". La reconnaissance des boutons marche bien. Je m'occupe maintenant de la mise en place des données. Voici une image d'écran: " /> La capture montre la reconnaissance du bouton "Envoyer". Voici le code Panoramic: - Code:
-
' Test_Mail.bas ' ' Ce programme utilise Test_Mail.html pour tester une GUI HTML
label bouton_mail
width 0,1050 : height 0,720
dim html$ : html$ = "C:\Test_Mail\Test_Mail.html" dim boutons$ : boutons$ = "http://kgf.mail."
dim WB1%, res%, s$
dll_on "KGF.dll"
edit 10 : on_change 10,bouton_mail : hide 10
Cre_Page()
end
bouton_mail: ' s$ = item_read$(10,1) s$ = text$(10) if instr(s$,"http://kgf.mail")>0 if instr(s$,".raz")>0 then message "Effacer" if instr(s$,".ok")>0 then message "Envoyer" if instr(s$,".dest")>0 then message "Destinataire" if instr(s$,".exp")>0 then message "Expéditeur" end_if return
sub Cre_Page() WB1% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB1%,10,10,1000,630) res% = dll_call2("WB_Url",WB1%,adr(html$)) res% = dll_call3("WB_InterceptURL",WB1%,handle(10),adr(boutons$)) end_sub
La page HTML est générée par mon outil de création de site Web, puis légèrement allégée. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Nov 2014 - 22:55 | |
| Nouvelle version: KGF.dll V3.92 du 27/11/2014Nouveautés: nouvelles fonctions res% = dll_call2("WBGetInnerHTMLofElementByName",adr(nom$),adr(s$)) res% = dll_call3("WB_GetInnerHTMLofElementByName(WB%,adr(nom$),adr(s$)) res% = dll_call2("WBSetInnerHTMLofElementByName(adr(nom$),adr(s$)) res% = dll_call3("WB_SetInnerHTMLofElementByName(WB%,adr(nom$),adr(s$))
Modules modifiés: KGF.dll KGF.chmLes sources et la doc sont à jour. Ces fonctions permettent de récupérer le contenu de certains objets HTML ou de remplacer leur contenu. Les objets sont sélectionnés par leur nom (et non par leur tag !). Ceci signifie que ce n'est appliquable que pour des objets ayant un nom et qui ont donc spécialement été créés pour cela. Avec les fonctions de la version précédente (la V3.91), on a maintenant un ensemble cohérent pour utiliser localement une page HTML colle GUI pour une application Panoramic. Toujours à l'aide de le petite demo de mail du message précédent, voici un programme complet qui fonctionne pour envoyer un mail. Notez que: - la gestion de l'envoi des mails est faite par les fonctions de gestion de mails de KGF.dll. Elles sont déjç anciennes, mais parfaitement opérationnelles. - le programme exige de saisir une adresse mail pour le destinataire et pour l'expéditeur. L'adresse de l'expéditeur sera utilisée pour en déduire le nom du compte de messagerie (en prenant la partie à gauche du signe @). Le mot de passe devra être imposé en dur dans le code (je n'ai pas fait la saisie du mot de passe dans la page HTML bien que ça ne pose pas de problème non plus). Le mot de passe est fié en ligne 86. Voici le code Panoramic: - Code:
-
' Test_Mail.bas ' ' Ce programme utilise Test_Mail.html pour tester une GUI HTML
label bouton_mail
width 0,1050 : height 0,720
dim html$ : html$ = "C:\Test_Mail\Test_Mail.html" dim boutons$ : boutons$ = "http://kgf.mail."
dim WB1%, res%, s$, ele$ dim nom$, adr$, pwd$, dst$, obj$, txt$
dll_on "KGF.dll"
edit 10 : on_change 10,bouton_mail : hide 10
Cre_Page()
end
bouton_mail: ' s$ = item_read$(10,1) s$ = text$(10) if instr(s$,"http://kgf.mail")>0 if instr(s$,".raz")>0 then effacer_zones() if instr(s$,".ok")>0 then envoyer_mail() if instr(s$,".dest")>0 then choisir_dest() if instr(s$,".exp")>0 then choisir_exp() end_if return
sub Cre_Page() WB1% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB1%,10,10,1000,630) res% = dll_call2("WB_Url",WB1%,adr(html$)) res% = dll_call3("WB_InterceptURL",WB1%,handle(10),adr(boutons$)) end_sub
sub envoyer_mail() s$ = string$(2000," ") ele$ = "mail_dest" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le destinataire manque" exit_sub end_if dst$ = s$ : ' <========= mémoriser l'adresse mail du destinataire ' message "Destinataire:"+chr$(13)+chr$(10)+s$ s$ = string$(2000," ") ele$ = "mail_exp" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "L'expéditeur manque" exit_sub end_if adr$ = s$ : ' <========= mémoriser l'adresse mail de l'expéditeur ' message "Expéditeur:"+chr$(13)+chr$(10)+s$ s$ = string$(2000," ") ele$ = "mail_sujet" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le sujet manque" exit_sub end_if obj$ = s$ : ' <========= mémoriser l'objet ' message "Sujet:"+chr$(13)+chr$(10)+s$ s$ = string$(2000," ") ele$ = "mail_text" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le texte est vide" exit_sub end_if txt$ = s$ : ' <========= mémoriser le texte ' message "Envoi du texte:"+chr$(13)+chr$(10)+s$
res% = dll_call0("CreateMail") nom$ = left$(adr$,instr(adr$,"@")-1) : ' en supposant que le nom du compte mail est ce qui précède le @... pwd$ = "xxxxxxxx" : ' <<<========= il faut le mot de passe du fournisseur mail ! res% = dll_call3("SetMailSender",adr(nom$),adr(adr$),adr(pwd$)) res% = dll_call1("SetMailObject",adr(obj$)) res% = dll_call1("AddMailRecipient",adr(dst$)) res% = dll_call1("AddMailBodyLine",adr(txt$)) res% = dll_call0("SendMail") res% = dll_call0("DeleteMail") end_sub
sub effacer_zones() s$ = "" ele$ = "mail_dest" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_exp" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_sujet" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_text" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_sub
sub choisir_dest() s$ = message_input$("Saisissez le destinataire","Adresse mail:","") if s$<>"" ele$ = "mail_dest" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_if end_sub
sub choisir_exp() s$ = message_input$("Saisissez l'expéditeur","Adresse mail:","") if s$<>"" ele$ = "mail_exp" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_if end_sub
Et voici le code HTML: - Code:
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="FR"> <!--Page generated by XWebDesignor--> <head> <title>Programmes et modules autour de Panoramic</title> <meta http-equiv="content-language" content="FR"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta name="viewport" content="width=device-width"> <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.1)"> <meta http-equiv="imagetoolbar" content="no"> <meta name="author" content="Klaus Fischer"> <meta name="keywords" content="panoramic,basic"> <meta name="description" content="GUI HTML pour envoi de mails"> <meta name="category" content="Informatique"> <meta name="uid" content="{26055DFE-EC44-486C-8217-4243419B1280}"> <meta name="DC.Title" CONTENT="Programmes et modules autour de Panoramic"> <meta name="DC.Creator" CONTENT="Klaus Fischer"> <meta name="DC.Description" CONTENT="Dette page offre l'interface HTML visuelle pour l'envoi de mails."> <link href="./Test_Mail.css" rel="stylesheet" type="text/css"> </head> <body> <div id="container"> <img id="obj0" src="./Test_Mail_Images/p82s0.gif" alt="Cadre_Message" title="" class="xwd0"> <div id="obj1" class="xwd1"> <h1 class="xwd2"><span class="xwd3">Destinataire:</span></h1> </div> <div id="obj2" class="xwd4"> <h1 class="xwd2"><span class="xwd3">Expéditeur:</span></h1> </div> <div id="obj3" class="xwd5"> <h1 class="xwd2"><span class="xwd3">Titre:</span></h1> </div> <div id="obj4" class="xwd6"> <h1 class="xwd2"><span class="xwd3">Message:</span></h1> </div> <div id="obj9" class="xwd7"><a href="http://kgf.mail.raz"><img src="./Test_Mail_Images/p82b9Up.gif" border="0" alt="" title="" onMouseOver="this.src='./Test_Mail_Images/p82b9Ov.gif'" onMouseOut="this.src='./Test_Mail_Images/p82b9Up.gif'"></a></div> <div id="obj10" class="xwd8"><a href="http://kgf.mail.ok"><img src="./Test_Mail_Images/p82b10Up.gif" border="0" alt="" title="" onMouseOver="this.src='./Test_Mail_Images/p82b10Ov.gif'" onMouseOut="this.src='./Test_Mail_Images/p82b10Up.gif'"></a></div> <div id="obj11" class="xwd9"><a href="http://kgf.mail.dest"><img src="./Test_Mail_Images/p82b11Up.gif" border="0" alt="" title="" onMouseOver="this.src='./Test_Mail_Images/p82b11Ov.gif'" onMouseOut="this.src='./Test_Mail_Images/p82b11Up.gif'"></a></div> <div id="obj12" class="xwd10"><a href="http://kgf.mail.exp"><img src="./Test_Mail_Images/p82b12Up.gif" border="0" alt="" title="" onMouseOver="this.src='./Test_Mail_Images/p82b12Ov.gif'" onMouseOut="this.src='./Test_Mail_Images/p82b12Up.gif'"></a></div> <script type="text/javascript"> if (navigator.appName=="Netscape") document.write('<div class="xwd11">'); </script> <form id="wfrm" action="#"> <input type="hidden" id="wh0"> <input type="hidden" id="wh1"> <input type="hidden" id="wh2"> <input type="hidden" id="wh3"> <input type="hidden" id="wh4"> <input type="hidden" id="wh5"> <input type="hidden" id="wh6"> <input type="text" name="Mail_Dest" class="xwd12" value=""> <input type="text" name="Mail_Exp" class="xwd13" value=""> <input type="text" name="Mail_Sujet" class="xwd14" value=""> <textarea cols="0" rows="0" name="Mail_Text" class="xwd15" ></textarea> </form> <script type="text/javascript"> if (navigator.appName=="Netscape") document.write('<'+'/div>'); </script> </div> </body> </html>
Notes que cette page HTML a besoin de fichiers CSS et d'images. J'ai posé l'ensemble sur le WebDav, dans le dossier test_mail. Cependant, ces éléments ont été générés par mon outil de création de sites XWebDesignor, puis a été légèrement modifié par un éditeur de texte. Si vous voulez faire un essai chez vous, en-dehors de cet ensemble simple, il vaut mieux produire vos propres pages HTML, soit par un éditeur de texte, soit par n'importe quel éditeur HTML ou créateur de sites Web. Mais ceci étant dit, le programme ci-dessus est parfaitement fonctionnel ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 28 Nov 2014 - 22:13 | |
| KGF.dll a été corrigée (sans changement de version) pour pouvoir déclencher un évènement ON_CHANGE sur un objet MEMO. Du coup, le programme de démo de mail du post précédent devient ceci: - Code:
-
' Test_Mail.bas ' ' Ce programme utilise Test_Mail.html pour tester une GUI HTML
label bouton_mail
width 0,1050 : height 0,720
dim html$ : html$ = "C:\Test_Mail\Test_Mail.html" dim boutons$ : boutons$ = "http://kgf.mail."
dim WB1%, res%, s$, ele$ dim nom$, adr$, pwd$, dst$, obj$, txt$
dll_on "KGF.dll"
memo 10 : on_change 10,bouton_mail : bar_both 10 : hide 10 ' on_change 10,change_10 on_change 10,bouton_mail
Cre_Page()
end
bouton_mail: ' s$ = item_read$(10,1) s$ = text$(10) if instr(s$,"http://kgf.mail")>0 if instr(s$,".raz")>0 then effacer_zones() if instr(s$,".ok")>0 then envoyer_mail() if instr(s$,".dest")>0 then choisir_dest() if instr(s$,".exp")>0 then choisir_exp() end_if return
sub Cre_Page() WB1% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB1%,10,10,1000,630) res% = dll_call2("WB_Url",WB1%,adr(html$)) res% = dll_call3("WB_InterceptURL",WB1%,handle(10),adr(boutons$)) end_sub
sub envoyer_mail() s$ = string$(2000," ") ele$ = "mail_dest" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le destinataire manque" exit_sub end_if dst$ = s$ : ' <========= mémoriser l'adresse mail du destinataire ' message "Destinataire:"+chr$(13)+chr$(10)+s$ s$ = string$(2000," ") ele$ = "mail_exp" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "L'expéditeur manque" exit_sub end_if adr$ = s$ : ' <========= mémoriser l'adresse mail de l'expéditeur ' message "Expéditeur:"+chr$(13)+chr$(10)+s$ s$ = string$(2000," ") ele$ = "mail_sujet" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le sujet manque" exit_sub end_if obj$ = s$ : ' <========= mémoriser l'objet ' message "Sujet:"+chr$(13)+chr$(10)+s$ s$ = string$(2000," ") ele$ = "mail_text" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le texte est vide" exit_sub end_if txt$ = s$ : ' <========= mémoriser le texte ' message "Envoi du texte:"+chr$(13)+chr$(10)+s$
res% = dll_call0("CreateMail") nom$ = left$(adr$,instr(adr$,"@")-1) : ' en supposant que le nom du compte mail est ce qui précède le @... pwd$ = "xxxxxxxx" : ' <<<========= il faut le mot de passe du fournisseur mail ! res% = dll_call3("SetMailSender",adr(nom$),adr(adr$),adr(pwd$)) res% = dll_call1("SetMailObject",adr(obj$)) res% = dll_call1("AddMailRecipient",adr(dst$)) res% = dll_call1("AddMailBodyLine",adr(txt$)) res% = dll_call0("SendMail") res% = dll_call0("DeleteMail") end_sub
sub effacer_zones() s$ = "" ele$ = "mail_dest" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_exp" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_sujet" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_text" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_sub
sub choisir_dest() s$ = message_input$("Saisissez le destinataire","Adresse mail:","") if s$<>"" ele$ = "mail_dest" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_if end_sub
sub choisir_exp() s$ = message_input$("Saisissez l'expéditeur","Adresse mail:","") if s$<>"" ele$ = "mail_exp" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_if end_sub
Les évènements créés par un clic sur un des boutons HTML sont interceptés par l'évènement ON_CHANGE du MEMO 10. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 29 Nov 2014 - 0:06 | |
| Nouvelle version: KGF.dll V3.93 du 28/11/2014
Nouveautés: Synedit: ajustement de la taille des numéros de ligne dans la marge gauche pour correspondre à la taille de la police du texte, choisie dans les "Options de la Page". Synedit_Editor a été regénéré avec cette version de la DLL.
Modules modifiés: KGF.dll
Les sources sont à jour. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 30 Nov 2014 - 9:39 | |
| Voici une nouvelle version d'un programme Panoramic avec GUI en HTML. C'est toujours le programme d'envoi de mails présenté ci-dessus, mais avec quelques modifications importantes. Au lieu d'utiliser un fichier HTML issu d'un générateur de sites Web, j'ai écrit le HTML entièrement dans un simple éditeur de texte. Et les points importants sont les suivants: - HTML 5/CSS pur - pas je JavaScript - pas d'images ni autres fichiers ou dossiers externes - pas de variables Panoramic à modifier. Tout est saisi dans la page HTML.4 Le tout se présente sous forme de 2 fichiers: - Send_Mail.bas pour la partie Panoramic (traitement) - Send_Mail.bas pour la partie HTML (interface visuel) Les zones à saisir sont les suivantes: - adresse mail expéditeur. La saisie remplit automatiquement la zone "compte mail" - compte mail. Si le remplissage automatique à partir de l'adresse mail ne suffit pas, on peut le modifier. - mot de passe du compte mail (non affiché en clair dans la page HTML) - l'adresse mail du destinataire - sujet du mail - texte du mail Les 4 premières zones ne peuvent pas être saisies directement dans la page HTML. Un bouton "..." fait apparaître un dialogue de saisie pour chacune dfe ces zones. Le sujet et le texte sont saisis directement dans la page HTML. Un bouton "Envoyer" envoie le mail, sans passer par le client de messagerie installé sur l'ordinateur, mais en utilisant les fonctiions mail de KGF.dll. Un bouton "Effacer" efface l'ensemble des zones HTML. L'ensemble se trouve sur mon WebDav, dossier Test_Mail\. Voici Send_Mail.bas: - Code:
-
' Send_Mail.bas ' ' Ce programme utilise Send_Mail.bas.html pour tester une GUI HTML
label bouton_mail
width 0,1100 : height 0,720
dim html$ : html$ = "C:\Test_Mail\Send_Mail.html" dim boutons$ : boutons$ = "http://kgf.mail."
dim WB1%, res%, s$, ele$, err% dim exp$, cpt$, pwd$, dst$, obj$, txt$
dll_on "KGF.dll"
memo 10 : on_change 10,bouton_mail : bar_both 10 : hide 10 top 10,10 : left 10,1100
Cre_Page()
end
bouton_mail: s$ = item_read$(10,1) if instr(s$,"http://kgf.mail")>0 if instr(s$,".raz")>0 then effacer_zones() if instr(s$,".ok")>0 then envoyer_mail() if instr(s$,".dest.mail")>0 then choisir_dest() if instr(s$,".exp.mail")>0 then choisir_exp() if instr(s$,".exp.compte")>0 then choisir_cpt() if instr(s$,".exp.pwd")>0 then choisir_pwd() end_if return
sub Cre_Page() ' res% = dll_call1("DebugKGF",1) WB1% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB1%,10,10,1050,630) res% = dll_call2("WB_Url",WB1%,adr(html$)) res% = dll_call3("WB_InterceptURL",WB1%,handle(10),adr(boutons$)) end_sub
sub envoyer_mail()
s$ = string$(2000," ") ele$ = "mail_exp_mail" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "L'adresse mail de l'expéditeur manque" exit_sub end_if exp$ = s$ : ' <========= mémoriser l'adresse mail de l'expéditeur ' message "Expéditeur:"+chr$(13)+chr$(10)+s$
s$ = string$(2000," ") ele$ = "mail_exp_compte" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le compte de messagerie de l'expéditeur manque" exit_sub end_if cpt$ = s$ : ' <========= mémoriser le compte de messagerie de l'expéditeur ' message "Compte de messagerie:"+chr$(13)+chr$(10)+s$
s$ = string$(2000," ") ele$ = "mail_exp_pwd" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le mot de passe de l'expéditeur manque" exit_sub end_if pwd$ = s$ : ' <========= mémoriser le mot de passe de l'expéditeur ' message "Mot de passe:"+chr$(13)+chr$(10)+s$
s$ = string$(2000," ") ele$ = "mail_dest_mail" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "L'adresse mail du destinataire manque" exit_sub end_if dst$ = s$ : ' <========= mémoriser l'adresse mail du destinataire ' message "Destinataire:"+chr$(13)+chr$(10)+s$
s$ = string$(2000," ") ele$ = "mail_dest_sujet" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le sujet manque" exit_sub end_if obj$ = s$ : ' <========= mémoriser l'objet ' message "Sujet:"+chr$(13)+chr$(10)+s$
s$ = string$(2000," ") ele$ = "mail_dest_text" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) s$ = trim$(s$) if s$="" message "Le texte est vide" exit_sub end_if txt$ = s$ : ' <========= mémoriser le texte ' message "Envoi du texte:"+chr$(13)+chr$(10)+s$
valider_adresse_mail(exp$,"de l'expéditeur") if err%>0 then exit_sub valider_adresse_mail(dst$,"du destinataire") if err%>0 then exit_sub
res% = dll_call0("CreateMail") res% = dll_call3("SetMailSender",adr(cpt$),adr(exp$),adr(pwd$)) res% = dll_call1("SetMailObject",adr(obj$)) res% = dll_call1("AddMailRecipient",adr(dst$)) res% = dll_call1("AddMailBodyLine",adr(txt$)) res% = dll_call0("SendMail") res% = dll_call0("DeleteMail") end_sub
sub effacer_zones() s$ = "" ele$ = "mail_exp_mail" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_exp_compte" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_exp_pwd" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_dest_mail" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_dest_sujet" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) ele$ = "mail_dest_text" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_sub
sub choisir_exp() dim_local i%, sold$, ele$ sold$ = string$(2000," ") ele$ = "mail_exp_mail" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(sold$)) sold$ = trim$(sold$) s$ = message_input$("Saisissez l'expéditeur","Adresse mail:",sold$) if s$<>sold$ res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) i% = instr(s$,"@") if i%>0 then s$ = left$(s$,i%-1) ele$ = "mail_exp_compte" res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_if end_sub
sub choisir_cpt() dim_local sold$, ele$ sold$ = string$(2000," ") ele$ = "mail_exp_compte" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(sold$)) sold$ = trim$(sold$) s$ = message_input$("Saisissez l'expéditeur","Compte messagerie:",sold$) if s$<>sold$ then res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_sub
sub choisir_pwd() dim_local sold$, ele$ sold$ = string$(2000," ") ele$ = "mail_exp_pwd" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(sold$)) sold$ = trim$(sold$) s$ = message_input$("Saisissez l'expéditeur","Mot de passe:",sold$) if s$<>sold$ then res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_sub
sub choisir_dest() dim_local sold$, ele$ sold$ = string$(2000," ") ele$ = "mail_dest_mail" res% = dll_call3("WB_GetInnerHTMLofElementByName",WB1%,adr(ele$),adr(sold$)) sold$ = trim$(sold$) s$ = message_input$("Saisissez le destinataire","Adresse mail:",sold$) if s$<>sold$ then res% = dll_call3("WB_SetInnerHTMLofElementByName",WB1%,adr(ele$),adr(s$)) end_sub
sub valider_adresse_mail(a$,t$) dim_local i%, s$ err% = 1 : ' supposer "erreur" i% = instr(a$,"@") if i%>0 if len(a$)>i% s$ = mid$(a$,i%+1,len(a$)) if instr(s$,".")>0 err% = 0 : ' ici, tout est ok end_if end_if end_if if err%>0 then message "L'adresse mail "+t$+" est invalide: "+a$ end_sub
Et voici Send_Mail.html: - Code:
-
<!DOCTYPE html> <!-- Cette page HTML est construite manuellement. Elle est destinée à être exploité sans un objet WebBrowser; piloté par un programme Panoramic utilisant KGF.dll. On utilise du code CSS, mais il est contenu dans le fichier HTML. Il n'y a pas de JavaScript. --> <html lang="FR"> <meta http-equiv="X-UA-Compatible" content="IE=9" /> <head> <style> #idb0 { color: 0; border: none; padding: 1px; position:relative; left:1px; width: 30px; border: 1px solid black; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; background: rgb(232, 232, 232); text-align: center; box-shadow: 3px 3px 5px #888888; } #idb1 { color: rgb(0, 0, 0); font-size: 16px; padding: 10px; position:relative; left:10px; border: 1px solid black; -moz-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; background: rgb(255, 255, 0); text-align: center; box-shadow: 3px 3px 5px #888888; } #idb2 { color: rgb(0, 0, 0); font-size: 16px; padding: 10px; position:relative; left:800px; border: 1px solid black; -moz-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 25px; background: rgb(127, 127, 255); text-align: center; box-shadow: 3px 3px 5px #888888; } </style> </head>
<body> <h1 style="text-align:center"> Envoi de courriel</h1> <!-- Expéditeur --> <fieldset style="border:solid 1px black; padding:20px; width:930px"> <legend>Expéditeur:</legend> Adresse mail: <input type="text" name="mail_exp_mail" style="width:150px" disabled value=""> <a class="button" id="idb0" href="http://kgf.mail.exp.mail">...</a> Compte mail: <input type="text" name="mail_exp_compte" style="width:150px" disabled value=""> <a class="button" id="idb0" href="http://kgf.mail.exp.compte">...</a> Mot de passe: <input type="password" name="mail_exp_pwd" style="width:150px" disabled value=""> <a class="button" id="idb0" href="http://kgf.mail.exp.pwd">...</a> </fieldset> <!-- Destinataire --> <fieldset style="border:solid 1px black; padding:20px; width:280px"> <legend>Destinataire:</legend> Adresse mail: <input type="text" name="mail_dest_mail" style="width:150" disabled value=""> <a class="button" id="idb0" href="http://kgf.mail.dest.mail">...</a> </fieldset>
<!-- Message --> <fieldset style="border:solid 1px black; padding:20px; width:930px"> <legend>Message:</legend> Sujet: <input type="text" name="mail_dest_sujet" style="width:870px" value=""><br> Texte: <br> <textarea name="mail_dest_text" rows="10" style="width:870px" value=""></textarea> </fieldset><br><br>
<!-- Validations --> <a class="button" id="idb1" href="http://kgf.mail.raz">Effacer</a> <a class="button" id="idb2" href="http://kgf.mail.ok">Valider</a> </body>
</html> (J'espère que ce code passe sur le forum. Mais de toutes façons, il est sur le WebDav...) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Déc 2014 - 2:41 | |
| Nouvelle version: KGF.dll V3.94 du 01/12/2014
Nouveautés: Synedit: nouveau code 27 pour SyneditFunction: imprimer le contenu de la page active
Modules modifiés: KGF.dll
Les sources sont à jour. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |