FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 13:26

» Compilateur FBPano
par Ouf_ca_passe Aujourd'hui à 12:25

» mise a jour calculatrice
par papydall Aujourd'hui à 2:01

» double guillemets "" dans un EDIT
par Marc Hier à 23:43

» Documentation de KGF
par Klaus Lun 20 Nov 2017 - 22:52

» Zoom sur une portion d'écran
par JL35 Lun 20 Nov 2017 - 21:51

» Recherche d'une expression dans un source
par Marc Lun 20 Nov 2017 - 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 17 Nov 2017 - 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 KGF_dll - nouvelles versions

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

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 14 Nov 2014 - 16: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 23 Nov 2014 - 13:37

Nouvelle version:
KGF.dll V3.86 du 22/11/2014

Nouveautés:
nouvelle fonction:
res% = dll_call3("WBSurvey",hmemo%,fun%,act%)


Modules modifiés:
KGF.dll
KGF.chm


Les 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.free-boards.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 - 17:28, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 23 Nov 2014 - 17:27

Nouvelle version:
KGF.dll V3.87 du 22/11/2014

Nouveautés:
nouvelle fonction:
res% = dll_call1("WBSurveyFilter",adr(txt$))


Modules modifiés:
KGF.dll
KGF.chm


Les 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.free-boards.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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 4:35

Nouvelle version:
KGF.dll V3.88 du 24/11/2014

Nouveautés:
nouvelle fonction:
res% = dll_call1("WBExcludeURL",adr(txt$))


Modules modifiés:
KGF.dll
KGF.chm


Les 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.free-boards.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 - 13:16, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 12: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 Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 13:15

Bonne idée, Jicehel. Je vais regarder cela.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 13:27

Nouvelle version:
KGF.dll V3.89 du 24/11/2014

Nouveautés:
nouvelle fonction:
res% = dll_call2("WBInterceptURL",handle(memo%),adr(txt$))


Modules modifiés:
KGF.dll
KGF.chm


Les 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.nom

Et 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.free-boards.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.free-boards.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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 14:22

@Jicehel:
Quelles sont les pubs qui s'affichent sur mon site ? Je n'en vois pas...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 15: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 16: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 16: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 20:18

C'est vraiment un bel ajout Klaus. Merci à toi
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 21: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! cheers

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.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 21: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 24 Nov 2014 - 22:52

De toutes façons il y a des bonnes idées à prendre dans (presque) tous les codes sources
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: KGF_dll - nouvelles versions   Mar 25 Nov 2014 - 0: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:
 
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 25 Nov 2014 - 14: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).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Jeu 27 Nov 2014 - 2:19

Nouvelle version:
KGF.dll V3.91 du 26/11/2014

Nouveauté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.chm


Les 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.free-boards.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.free-boards.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.free-boards.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.free-boards.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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Jeu 27 Nov 2014 - 11:54

Ca l'est Klaus. Je n'ai pas encore tester, mais je le fais dans les 2 jours qui viennent.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Jeu 27 Nov 2014 - 12: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 28 Nov 2014 - 0:55

Nouvelle version:
KGF.dll V3.92 du 27/11/2014

Nouveauté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.chm


Les 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&eacute;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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 29 Nov 2014 - 0: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 29 Nov 2014 - 2: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 30 Nov 2014 - 11: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&eacute;diteur:</legend>
      Adresse mail:&nbsp;
     <input type="text" name="mail_exp_mail" style="width:150px" disabled value="">
      <a class="button" id="idb0" href="http://kgf.mail.exp.mail">...</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Compte mail:&nbsp;
      <input type="text" name="mail_exp_compte" style="width:150px" disabled value="">
      <a class="button" id="idb0" href="http://kgf.mail.exp.compte">...</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Mot de passe:&nbsp;
      <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:&nbsp;
      <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:&nbsp;
      <input type="text" name="mail_dest_sujet" style="width:870px" value=""><br>
     Texte:&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     <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...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 1 Déc 2014 - 4: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: KGF_dll - nouvelles versions   

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 4 sur 40Aller à la page : Précédent  1, 2, 3, 4, 5 ... 22 ... 40  Suivant
 Sujets similaires
-
» Nouvelles versions éditeur et firmware FR3X
» Nouvelles versions de TC et TP
» Nouvelles versions de TypViewer 4.015 et suivantes
» Deux nouvelles versions de la Porsche 911 (type 991)
» Dacia : La Success Story Continue Avec Quatre Nouvelles Versions Et Séries Limitées

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: