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 pascal10000 Aujourd'hui à 13:15

» Casse-tête : Echanger les positions des cavaliers
par jean_debord Aujourd'hui à 10:21

» demande pour recuperer un text speciale
par silverman Hier à 23:00

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

» Déterminer le Handle de l’objet ayant le focus
par papydall Dim 16 Juil 2017 - 3:15

» Déterminer le HANDLE du Bureau
par papydall Dim 16 Juil 2017 - 1:59

» Généralisation de a fonction OBJECT_INTERNAL
par Klaus Dim 16 Juil 2017 - 1:10

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 Mise à jour des modules Klaus

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5890
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 11:47

Pardon Klaus si j'interviens ici, mais ayant eu quelques difficultés avec la fonction 'officielle' de mise à jour (en fait ça ne veut pas marcher chez moi), j'ai adopté une approche un peu différente, que voici:
Code:
' Mise à jour de KGF.dll et autres modules
LABEL Fin, GUI, Clic2, Clic, Dlf, Valide, Version, Datpdf, Datfich
DIM url$, urll$(20), fi$(20), Nbfich, a$, b$, p$, nurl%, i%, j%, k%, t%, f$, tl$
DIM ver$, fv$, nf%, n%, res%, dat$, al1, al2, al3, bt1, bt2, e1, e2, e3
p$ = "C:\PANORAMIC\KLAUS\DLLs\": ' répertoire d'utilisation des modules
tl$ = "C:\TELECHAR\": ' répertoire des téléchargements
DATA "http://klaus.panoramic.voila.net/versions/KGF.dll"
DATA "http://klaus.panoramic.voila.net/versions/KGF.pdf"
DATA "http://klaus.panoramic.voila.net/versions/KGF.chm"
DATA "http://klaus.panoramic.voila.net/versions/KGF.doc"
DATA "http://klaus.panoramic.voila.net/versions/BDR.dll"
DATA "http://klaus.panoramic.voila.net/versions/KGF_SUB.bas"
DATA "http://klaus.panoramic.voila.net/versions/BDR_SUB.chm"
DATA "http://klaus.panoramic.voila.net/versions/BDR_SUB.doc"
DATA "http://klaus.panoramic.voila.net/versions/BDR_SUB.pdf"
DATA "F"
nurl% = 0: READ a$
WHILE a$ <> "F"
    nurl% = nurl%+1: urll$(nurl%) = a$
    FOR k% = LEN(a$) TO 1 STEP -1
        IF MID$(a$, k%, 1) = "/" THEN EXIT_FOR
    NEXT k%
    fi$(nurl%) = MID$(a$, k%+1, 20): ' fichier à charger
    READ a$
END_WHILE

DLL_ON p$+"KGF.dll"
GOSUB GUI
END
' ==============================================================================
Fin:
TERMINATE
' ==============================================================================
GUI:
HEIGHT 0, nurl%*25+120: WIDTH 0,340: CAPTION 0,"KGF UPDATE": BORDER_SMALL 0
FONT_NAME 0,"Arial": COLOR 0,190,255,255
al1 = 201
ALPHA al1: LEFT al1,15: TOP al1,6: FONT_COLOR al1,0,0,255: FONT_BOLD al1
CAPTION al1,"Choisir les fichiers à mettre à jour:"
al2 = 202
ALPHA al2: LEFT al2,120: TOP al2,25: FONT_COLOR al2,0,0,255
CAPTION al2, "Version actuelle:      Version téléchargée:"

t% = 15
FOR i% = 1 TO nurl%
    t% = t%+25: CHECK i%: TOP i%,t%: LEFT i%,10: WIDTH i%,280
    ON_CLICK i%, Clic2: CURSOR_POINT i%
    e1 = i%*10+1: EDIT e1: TOP e1,TOP(i%): LEFT e1,LEFT(i%)+20: WIDTH e1,80: ' Nom
    e2 = e1+1: EDIT e2: TOP e2,TOP(i%): LEFT e2,LEFT(e1)+WIDTH(e1)+5: WIDTH e2,100: ' Version act
    e3 = e2+1: EDIT e3: TOP e3,TOP(i%): LEFT e3,LEFT(e2)+WIDTH(e2)+5: WIDTH e3,100: ' Version nouv
    f$ = fi$(i%): fv$ = p$ + f$
    TEXT e1, f$
    IF f$ = "KGF.dll" OR f$ = "BDR.dll"
        GOSUB Version
        TEXT e2, MID$(ver$, 9, 20)
    ELSE
        IF RIGHT$(f$, 4) = ".pdf"
            GOSUB Datpdf
        ELSE
            GOSUB Datfich
        END_IF
        TEXT e2, dat$
    END_IF
NEXT i%
bt1 = 204
BUTTON bt1: TOP bt1,HEIGHT(0)-60: LEFT bt1,220: CAPTION bt1,"OK"
ON_CLICK bt1, Clic
al3 = 203
ALPHA al3: TOP al3,HEIGHT(0)-80: LEFT al3,10
bt2 = 205
BUTTON bt2: TOP bt2,TOP(bt1): LEFT bt2,100: CAPTION bt2,"Valider": HIDE bt2
ON_CLICK bt2, Valide
RETURN
' ==============================================================================
Clic2:
' Click sur un check
FOR i% = 1 TO nurl%
    IF CLICKED(i%) = 1
        IF CHECKED(i%) = 1
            Nbfich = Nbfich + 1
        ELSE
            Nbfich = Nbfich - 1
        END_IF
    END_IF
NEXT i%
RETURN
' ==============================================================================
Clic:
CAPTION al3, "Chargement des fichiers..."
nf% = 0
FOR n% = 1 TO nurl%
    IF CHECKED(n%) = 1
        nf% = nf% + 1
        url$ = urll$(n%): f$ = fi$(n%): ' fichier à charger
        GOSUB Dlf: ' téléchargement du fichier
        fv$ = a$: ' chemin du fichier téléchargé
        e3 = n%*10 + 3
        IF f$ = "KGF.dll" OR f$ = "BDR.dll"
            GOSUB Version : ' version du nouveau fichier téléchargé
            b$ = MID$(ver$, 9, 20)
            TEXT e3, b$
            ' CAPTION n%, CAPTION$(n%)+"  ->  "+b$
        ELSE
            IF RIGHT$(f$, 4) = ".pdf"
                GOSUB Datpdf
            ELSE
                GOSUB Datfich
            END_IF
            TEXT e3, dat$
        END_IF
    END_IF
NEXT n%
IF nf% = 0 THEN CAPTION al3, "": RETURN: ' pas de fichier coché
CAPTION bt1,"Quitter": ON_CLICK bt1, Fin
CAPTION al3,"Terminé, valider ? (décocher les modules à ne pas actualiser)"
SHOW bt2
RETURN
' ==============================================================================
Dlf:
' Connexion à l'url donnée et téléchargement du fichier f$
a$ = tl$ + f$
IF FILE_EXISTS(a$) = 1 THEN FILE_DELETE a$
EXECUTE_WAIT url$
WHILE FILE_EXISTS(a$) = 0: WAIT 1000: END_WHILE
' ici, fichier téléchargé dans le répertoire tl$
RETURN
' ==============================================================================
Valide:
' Recopie des fichiers  téléchargés dans leur répertoire d'utilisation
FOR i% = 1 TO nurl%
    IF CHECKED(i%) = 1
        a$ = fi$(i%): ' fichier
        IF FILE_EXISTS(tl$+a$) = 1: ' fichier téléchargé
            ' IF FILE_EXISTS(p$+a$) = 1 THEN FILE_DELETE p$+a$
            ' FILE_COPY tl$+a$,p$+a$
            EXECUTE_WAIT "CMD.exe /C COPY " + tl$+a$ + " " + p$+a$ + " /Y"
            FILE_DELETE tl$+a$
        END_IF
    END_IF
NEXT i%
RETURN
' ==============================================================================
Version:
' rechercher la version de KGF.dll ou BDR.dll, fv$ = chemin complet
f$ = FILE_EXTRACT_NAME$(fv$)
FILEBIN_OPEN_READ 9, fv$: a$ = STRING$(FILEBIN_SIZE(9)," "): FILEBIN_CLOSE 9
res% = DLL_CALL2("ReadBinaryFileToString",ADR(fv$),ADR(a$))
b$ = CHR$(25)+CHR$(0)+CHR$(0)+CHR$(0)+f$+" V": ' séquence cherchée (empirique)
k% = INSTR(a$, b$): ver$ = f$
IF k% > 0 THEN ver$ = MID$(a$, k%+4, 25)
RETURN
' ==============================================================================
Datpdf:
' Date de création d'un fichier pdf
dat$ = "(non trouvé)"
IF FILE_EXISTS(fv$) = 1
    FILEBIN_OPEN_READ 9, fv$: a$ = STRING$(FILEBIN_SIZE(9)," "): FILEBIN_CLOSE 9
    res% = DLL_CALL2("ReadBinaryFileToString",ADR(fv$),ADR(a$))
    b$ = "/CreationDate <": ' séquence cherchée
    k% = INSTR(a$, b$)
    dat$ = "": b$ = ""
    IF k% > 0
        a$ = MID$(a$, k%+19,24): ' Creation Date
        FOR k% = 2 TO LEN(a$) STEP 2
            b$ = b$ + STR$(VAL(MID$(a$, k%, 1)))
        NEXT k%
        dat$ = MID$(b$,7,2)+"/"+MID$(b$,5,2)+"/"+LEFT$(b$,4)+" "
        dat$ = dat$ + MID$(b$,9,2)+":"+MID$(b$,11,2)
    END_IF
END_iF
RETURN
' ==============================================================================
Datfich:
' Date de création d'un fichier quelconque
' -> date d'écriture sur le disque, après téléchargement... sans intérêt
dat$ = "(non trouvé)"
IF FILE_EXISTS(fv$) = 1
    dat$ = STRING$(255," ")
    res% = DLL_CALL2("GetFileDate",ADR(fv$),ADR(dat$))
    dat$ = LEFT$(dat$,16): ' sans les secondes
END_IF
RETURN
' ==============================================================================
SUB Exprog(prog$)
    ' Exécution d'un programme externe sans la fenêtre noire Ms-DOS
    ' - exemple: Exprog("Cmd.exe /c DIR C:\UTIL >C:\TEMP\Dir.txt")
    DIM_LOCAL scr$, bat$, qu$
    scr$ = "C:\TEMP\Vbscript.vbs"
    bat$ = "C:\TEMP\Bat.bat"
    qu$ = CHR$(34)
    ' ===== Création du fichier .bat
    FILE_OPEN_WRITE 9, bat$: FILE_WRITELN 9, prog$: FILE_CLOSE 9
    ' ===== Création du script .vbs
    FILE_OPEN_WRITE 9, scr$
    FILE_WRITELN 9, "CreateObject("+qu$+"Wscript.Shell"+qu$+").Run "+qu$+bat$+qu$+",0,True"
    FILE_CLOSE 9
    ' ===== Exécution du script
    EXECUTE_WAIT "WSCRIPT.exe "+scr$
    FILE_DELETE bat$: FILE_DELETE scr$
END_SUB
' ==============================================================================

Remarques:
- Il faut adapter les variables p$ et tl$.
- je n'utilise donc pas la fonction DownloadFile, mais une connexion directe sur le téléchargement du fichier.
- les téléchargements se font dans le répertoire implicite de téléchargements du navigateur.
- il s'affiche la date ou la version actuelle (en service) des fichiers, puis, après téléchargement, la date ou la version des fichiers téléchargés, le transfert dans le répertoire d'utilisation ne se faisant qu'à l'appui sur un bouton (avec suppression dans le répertoire de téléchargement).

Les date/version de KGF.dll et BDR.dll sont lues dans le fichier lui-même, ainsi que les dates de création des fichiers pdf,
Il faut noter que la date fichier donnée par la fonction GetFileDate est la date d'écriture sur le disque au moment du chargement, et non la date de création, donc sans intérêt pour comparer les versions.

PS Je ne me lasse pas de la fonction ReadFileToString qui est irremplaçable par sa facilité pour analyser un fichier binaire, les fonction natives Panoramic étant bien trop limitées pour un fichier un peu long.


Dernière édition par JL35 le Ven 17 Mai 2013 - 14:31, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 13:53

Belle réalisation !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 17 Mai 2013 - 13:56

Beau Travail !

Attention, ne fonctionne pas avec chrome en navigateur par défaut.
Chrome demande une autorisation pour charger les dlls,
ce qui bloque le programme.

Edit : Une idée comme çà... Laughing Peut être est ce mozilla qui bloque le chargement avec l'autre méthode... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5890
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 14:25

Je viens de corriger une omission dans le s/p Clic: prise en compte de la date de création des pdf téléchargés...

@ygeronimi
bizarre que chrome bloque les dll et pas les autres... ce n'est pas un paramètre à changer ?
En tout cas pour moi je ne sais pas ce qui bloque la fonction, le code erreur n'est pas très explicite !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 17 Mai 2013 - 14:32

Chrome me demande une autorisation pour toutes les extensions système.
*.exe , *.dll , ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5890
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 15:00

Je sais que ça existe pour les exe, et c'est aussi logique pour les dll, pareil pour les ouvrir en pièces jointes dans les emails, mais firefox ne me demande rien...
Peut-être que je les ai autorisés définitivement quelque part...

Je précise au passage (toujours dans mon système ci-dessus) qu'en ce qui concerne le téléchargement des pdf, c'est la 1ère page qui est présentée, il faut cliquer sur l'icône en haut à droite pour se voir proposer le téléchargement:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Mise à jour des modules Klaus   

Revenir en haut Aller en bas
 
Mise à jour des modules Klaus
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise à jour des modules Klaus
» antivir périmé, mise à jour KO
» Bug suite à la mise à jour 10.0.45.2 du player flash résolu
» mise à jour eanim fx [résolu]
» mise a jour des pilotes, comment proceder?

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: