PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 24 → Utilisation classe cword
Utilisation classe cword
Débuté par Marie-Cécile, 02 juil. 2012 12:44 - 4 réponses
Posté le 02 juillet 2012 - 12:44
Bonjour,


extrait de la classe:
nVersion = :nVersionOffice("Word")

SI nVersion = 0 ALORS
FinProgramme("Word n'a pas été installé sur cette machine, vous ne pouvez pas utiliser cette classe !",Faux)
RETOUR
FIN

avec un PC wous Windows 7 en 64 bits et Word 2010, nversion est systématiquement à 0.

comment reconnaître que Office 2010 est bien installé?
Membre enregistré
1 461 messages
Popularité : +9 (9 votes)
Posté le 02 juillet 2012 - 13:19
Bonjour,

Je suis en 32 bits.
Peux-tu vérifier le contenu de la base de registre :

PROCEDURE cWord::nVersionOffice(sProgramme)

// on teste la présence d'Office
sCle = RegistrePremièreSousClé("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\")

Si le registre est bon, ce peut être un problème de droit de lecture du registre (UAC) ?

J'espère que ces pistes t'aideront.
Jean-Pierre
Posté le 02 juillet 2012 - 13:43
Pour ma part aucun problème

Voici mon code mais attention si c'est une application 32 Bits Bien faire
attention que Office 2010 ... soit celui en 32 BIts
Microsoft est formel..; Une application 32 Bits ... pour Office 32 Bits Une
application 64 bits pour Office 64 Bits

Voici mon code et cela marche

clword est un objet cWord(Vrai)
SI clword:nVersionOffice("Word") >= 12 ALORS

Bien à toi et Bon Windev

"Marie-Cécile" a écrit dans le message de groupe de discussion :
1e5a5cb42aa491167a76c8c782345234@news.pcsoft...


Bonjour,


extrait de la classe:
nVersion = :nVersionOffice("Word")

SI nVersion = 0 ALORS
FinProgramme("Word n'a pas été installé sur cette machine, vous ne pouvez
pas utiliser cette classe !",Faux)
RETOUR
FIN

avec un PC wous Windows 7 en 64 bits et Word 2010, nversion est
systématiquement à 0.

comment reconnaître que Office 2010 est bien installé?
Posté le 02 juillet 2012 - 18:28
Attention, pour invoquer word par OLE, l'installation doit être physique et non virtuelle.

Le problème se pose souvent sur des postes pré-installés par des constructeurs :
office est installé en mode virtuel.
Posté le 13 septembre 2012 - 19:42
Bonjour,

Je viens d'avoir un problème similaire et j'ai fini par comprendre ce qui se passe, donc pour les prochains.

Si vous avez un Word 64 bits sur votre poste et que votre application Windev est en 32 bits, vous allez avoir le problème, car il lira pas le bon emplacement dans la base de registre (malgré ce qu'on voit dans le code).

En office 2010 64 bits avec un programme 32 bits , le programme essai de trouver la clef Word dans "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\"
au lieu de "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\" <-là où est vraiment la clef "Word"

Vérifier dans votre base de registre et en en regardant dans "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0" vous comprendrez que "Word" n'existe pas

Voir dans l'aide :

Application 32 bits fonctionnant sur un système 64 bits

Sur un système 64 bits, les applications 32 bits écrivent dans la base de registres à partir de la branche suivante :
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

Mais comprendre que c'est valable pour l'écriture, mais aussi pour la LECTURE.

Et on ne peut rien faire, le soutien vient de me répondre que c'est le fonctionnement de WINDOWS

Donc, les solutions sont :
Solution 1 : Passer votre application en 64 bits
Solution 2 : Enlever la vérification dans la classe et si Word n'est pas installé, ça va cracher
Solution 3 : Trafiquer manuellement la base de registre et ajouter manuellement deux entrées "\Word\Bidon\" dans la base de registre dans les cas problèmes, afin d'avoir :
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Word\Bidon\ (14.0 pour Office 2010) --> cela peut devenir assez chiant en maintenance, mais cela peut dépanner pour une urgence et temporairement.

Je n'ai pas d'autres idées pour le moment.

Corinne Bonhomme
Montréal, Canada

Marie-Cécile wrote in news message <1e5a5cb42aa491167a76c8c782345234@news.pcsoft>:
Bonjour,


extrait de la classe:
nVersion = :nVersionOffice("Word")

SI nVersion = 0 ALORS
FinProgramme("Word n'a pas été installé sur cette machine, vous ne pouvez pas utiliser cette classe !",Faux)
RETOUR
FIN

avec un PC wous Windows 7 en 64 bits et Word 2010, nversion est systématiquement à 0.

comment reconnaître que Office 2010 est bien installé?