modifier texte autoit via word

Pour tout ce qui touche au codage, astuces et tutoriels.
Répondre
soadjl
Messages : 1
Enregistré le : mer. 9 mai 2018 15:45

modifier texte autoit via word

Message par soadjl »

Bonjour a tous,

j'ai créé un au3 et compiler celui-ci afin de créer un pop up pour l'infirmière de mon travail avec un texte dedans mais elle souhaiterait modifier ce texte elle même quand elle en a besoin...

est ce possible d'insérer dans cet au3 le contenu d'un fichier word ? en gros, modifier le texte du GUICtrlCreateLabel

voila le code source de mon au3 :

#include <Constants.au3>
#include <windowsConstants.au3>
#include <GuiConstants.au3>
#include <file.au3>
#include <Date.au3>
#include <GUIConstantsEx.au3>

; police de caractères utilisée
$sFont = "Comic Sans MS"

; emplacement du pop up
$FenPosSizeX = @DesktopWidth - 300
$FenPosSizeY = @DesktopHeight - 200


; pop up 280X128
GUICreate("pensez-y", 280, 128,$FenPosSizeX,$FenPosSizeY)



; insertion d'image
GUICtrlCreatePic("\\w1\info\popup_santé_au_travail\stetho.jpg", 0, 0, 128, 128)

; texte qui commence à 130 sur la doite et 40 vers le bas
GUICtrlCreateLabel ("Pensez à bouger !" , 130, 40, 1000, 1000)

; police en taille 12, non gras, sans attributs, en comic sans ms
GUICtrlSetFont(-1, 12, 0, 0, $sFont)


; couleur du texte en BLEU
GUICtrlSetColor(-1, 0x1a3ba6)

; couleur de font
GUISetBkColor($COLOR_WHITE)

GUISetState(@SW_SHOW)



; pop up s'affiche pendant 10 secondes
Sleep(10000)



Merci d'avance pour vos réponses
Avatar du membre
Amesam
Administrateur du site
Messages : 422
Enregistré le : lun. 5 juin 2017 17:23

Re: modifier texte autoit via word

Message par Amesam »

Bonsoir soadjl,

Bienvenue sur notre forum et content de te voir le rejoindre.
Désolé pour ce délai de réponse, je suis parti en voyage quelques jours et pas de connexion avec moi.

Pour le code que tu donnes, il permet juste d'afficher le contenu d'un label.
Il ne manquerais pas l'include ColorConstants.au3 ?

Celle-ci :

Code : Tout sélectionner

#include <Constants.au3>
#include <windowsConstants.au3>
#include <GuiConstants.au3>
#include <file.au3>
#include <Date.au3>
#include <GUIConstantsEx.au3>


Indique bien que tu as un code bien plus complet.
Que veux-tu faire ? Extraire le contenu d'un Word en l'affichant dans un label ?

Étonnant, il ne serait pas plus simple d'avoir une zone d’édition.
Extraire le contenu du word et de l'afficher dans celle-ci et ainsi pouvoir la modifier.

Extraire du texte du fichier. doc
https://www.autoitscript.com/forum/topi ... -doc-file/

Maintenant tu peux très bien afficher le word dans le label mais cela ne sera pas si simple à exploiter.
Un label modifiable depuis l'utilisateur... Pas à ma connaissance.

Peux-tu préciser ta demande stp ?

:merci:
Avatar du membre
Amesam
Administrateur du site
Messages : 422
Enregistré le : lun. 5 juin 2017 17:23

Re: modifier texte autoit via word

Message par Amesam »

Bonsoir :hello:

En utilisant la fonction proposé sur le site US, voici un exemple.
Est-ce une piste ? :)

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compile_Both=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ColorConstants.au3>

Dim $file = FileOpenDialog("Choose .doc file", @DesktopDir, "Word doc file (*.doc)", 1)
If @error Then Exit

Dim $TxT = DOCtoTXT($file)

; police de caractères utilisée
$sFont = "Comic Sans MS"

; emplacement du pop up
$FenPosSizeX = @DesktopWidth - 300
$FenPosSizeY = @DesktopHeight - 200

; pop up 280X128
GUICreate("pensez-y", 280, 128,$FenPosSizeX,$FenPosSizeY)

; insertion d'image
GUICtrlCreatePic("\\w1\info\popup_santé_au_travail\stetho.jpg", 0, 0, 128, 128)

; texte qui commence à 130 sur la doite et 40 vers le bas
GUICtrlCreateLabel ($TxT , 130, 40, 1000, 1000)

; police en taille 12, non gras, sans attributs, en comic sans ms
GUICtrlSetFont(-1, 12, 0, 0, $sFont)

; couleur du texte en BLEU
GUICtrlSetColor(-1, 0x1a3ba6)

; couleur de font
GUISetBkColor($COLOR_WHITE)

GUISetState(@SW_SHOW)

; pop up s'affiche pendant 10 secondes
Sleep(10000)

Func DOCtoTXT($docfile)

    Local $extension = StringSplit($docfile, ".", 1)
    $extension = $extension[$extension[0]]

    Local $hwnd = FileOpen($docfile, 16)
    Local $content = FileRead($hwnd)
    FileClose($hwnd)

    Local $contentdoc = BinaryMid($content, 513, 2) ;    0xECA5 - for .doc file of our interest

    Select
        Case $extension <> "doc" And $contentdoc <> "0xECA5"
            Return SetError(1) ; not doc file or quasi doc file with wrong extension
        Case $extension <> "doc" And $contentdoc = "0xECA5"
            Return SetError(2) ; extension incorrect, header indicates doc file
        Case $extension = "doc" And $contentdoc <> "0xECA5"
            Return SetError(3) ; extension incorrect or quasi doc file (extracting code required)
    EndSelect

    Local $complex_bin = BinaryMid($content, 523, 2) ; little endian
    Local $complex
    For $a = 1 To 2
        ; little endian -> big endian
        $complex &= Hex(BinaryMid($complex_bin, 3 - $a, 1))
    Next
    $complex = Dec($complex)
    If Mod(Floor($complex / 4), 2) <> 0 Then Return SetError(4) ; complex doc file (extracting code required)

    Local $start_bin = BinaryMid($content, 537, 4) ; little endian
    Local $start
    For $i = 1 To 4
        ; little endian -> big endian
        $start &= Hex(BinaryMid($start_bin, 5 - $i, 1))
    Next
    $start = Dec($start) ; text starts here

    Local $end_bin = BinaryMid($content, 541, 4) ; little endian
    Local $end
    For $i = 1 To 4
        ; little endian -> big endian
        $end &= Hex(BinaryMid($end_bin, 5 - $i, 1))
    Next
    $end = Dec($end) ; text ends here

    If $start > $end Then Return SetError(5) ; corrupted header

    Local $content1 = BinaryMid($content, 513 + $start, $end - $start)

    Local $text

    $text = StringReplace(BinaryToString($content1), Chr(0), "")
                $text = StringRegExpReplace($text, "(?s)(\x13.+?)\x14(.*?)\x15?", "$1" & Chr(21) & "$2")
                $text = StringRegExpReplace($text, '(?s)\x13(.*?)\x15', "")
                $text = StringRegExpReplace($text, "[^[:space:]|[:print:]]", "")
                $text = StringRegExpReplace($text, "\v", @CRLF)

    Return $text

EndFunc
Bonne soirée.
Répondre