IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

CreateOleObject provoque une erreur sous Windows 7


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut CreateOleObject provoque une erreur sous Windows 7
    Bonjour,

    J'ai installé Delphi sur une nouvelle machine tournant sous Windows 7 64 bits.
    Quelques problèmes avec le BDE résolus grâce à des recherches sur le net.

    Par contre, je reste sans solution pour une erreur
    EOleSysError Échec de l'exécution du serveur
    provoquée par l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenOffice := CreateOleObject('com.sun.star.ServiceManager');
    Quelqu'un a-il-connu ce problème ?

    Merci de me faire part de la solution trouvée ?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    C'est que l'objet n'est pas recensé par Regsvr32 ou Regsvr64
    C'est un problème lié à l'installation de Open Office sur un OS 64 Bits et de l'utilisation de ces objets par un executable 32Bits !

    Sinon c'est un EXE, cela doit fonctionner
    Si c'est contenu dans une DLL et qu'elle est 64Bits, cela risque d'être plus compliqué (en théorie on ne peut pas utilisé une DLL 64 en 32 mais avec le COM, il y a peut être des astuces)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Regedit trouve com.sun.star.ServiceManager comme clé dans
    HKEY_CLASSES_ROOT\com.sun.star.ServiceManager
    HKEY_CLASSES_ROOT\com.sun.star.ServiceManager.1
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\com.sun.star.ServiceManager
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\com.sun.star.ServiceManager.1

    com.sun.star.ServiceManager.1 comme valeur par défaut dans HKEY_CLASSES_ROOT\com.sun.star.ServiceManager\CurVer
    com.sun.star.ServiceManager.1 comme valeur par défaut dans HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{82154420-0FBF-11d4-8313-005004526AB4}\ProgId
    com.sun.star.ServiceManager comme valeur par défaut dans HKEY_CLASSES_ROOT\Wow6432Node\CLSID\\{82154420-0FBF-11d4-8313-005004526AB4}\VersionIndependentProgId
    com.sun.star.ServiceManager.1 comme valeur par défaut dans HKEY_LOCAL_MACHINE\SOFTWARE\Classes\com.sun.star.ServiceManager\CurVer
    com.sun.star.ServiceManager.1 comme valeur par défaut dans HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{82154420-0FBF-11d4-8313-005004526AB4}\ProgId
    com.sun.star.ServiceManager comme valeur par défaut dans HKEY_LOCAL_MACHINE\Classes\Wow6432Node\CLSID\{82154420-0FBF-11d4-8313-005004526AB4}\VersionIndependentProgId
    com.sun.star.ServiceManager.1 comme valeur par défaut dans HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{82154420-0FBF-11d4-8313-005004526AB4}\ProgId
    com.sun.star.ServiceManager comme valeur par défaut dans HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{82154420-0FBF-11d4-8313-005004526AB4}\VersionIndependentProgId

    Bizarre de trouver com.sun.star.ServiceManager et com.sun.star.ServiceManager.1, non ?

    Je ne trouve pas Regsvr64 sur ma machine mais serait-il utile dans la mesure où soffice.exe est en 32 bits.

    Dans le manuel "Piloter OpenOffice avec COM Automation depuis Delphi" téléchargé sur "fr.OpenOffice.org", on peut lire
    2.2 Configuration COM pour OpenOffice
    Il est important que OpenOffice soit correctement inscrit dans la Base de Registre de MS Windows.
    Si vous avez installé plusieurs versions d’OpenOffice, une seule peut être appelée par COM. Si vous l’avez mis à jour avec une plus récente, la Base de Registre peut être incohérente, même après avoir lancé la réparation d’OpenOffice.
    Si vous constatez des problèmes avec COM vous devriez vérifier la Base de registres :
    ● ouvrez l’éditeur de Registre (regedit.exe);
    ● faites un Ctrl-F pour rechercher :
    ● valeur 82154420 (ce sont les premiers chiffres de la clé OpenOffice)
    ● cochez : Regarder dans... Clé
    ● ne cochez aucune autre case.
    Cette clé apparaît plusieurs fois.
    Dans chaque branche de la clé, ouvrez la section LocalServer32. Vérifiez que l’adresse du programme appelé est correcte, changez-la si elle ne l’est pas. Dans le cas d’OpenOffice 2.2.x on doit lire :
    C:\Program Files\OpenOffice.org 2.2\program\soffice.exe -nodefault -nologo
    A cet égard, je trouve la valeur par défaut
    "C:\Program Files (x86)\OpenOffice.org 3\program\soffice.exe -nodefault -nologo" à la sous-clé
    "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{30A2652A-DDF7-45e7-ACA6-3EAB26FC8A4E}\LocalServer32"

    Je note que le début de la clé ne correspond pas à 82154420.
    Idem aux sous-clés
    "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{4166FC2C2-0D57-4aff-AB27-AD2E12E7C273}\LocalServer32", "{}", "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{7B342DC4-139A-4a46-8A93-DB0827CCE9C}\LocalServer32", "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{7FA8AE11-B3E3-4D88-AABF-25526CD1CE8}\LocalServer32", "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{82154420-0FBF-11d4-8313-00500452AB4}\LocalServer32", "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{D0484DE6-AAEE-468a-991F-8D4B0737B57A}\LocalServer32",....

    Tout ça me parait aberrant.

    Quel est selon vous la meilleure marche à suivre pour résoudre ce problème ?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    Regsvr64 est un outil externe, il permet de trifouiller les enregistrements, Microsoft a été délirant dans sa transition 64bits, ils ont laissé tout en 32 mais c'est du 64 dedans ...

    Toujours le truc bien dégueux de déployer dans les répertoires systèmes
    64 dans \Windows\system32
    32 dans \Windows\syswow64
    Ben, oui, c'est l'inverse, délirant, je disais !

    Pour moi, il te manque un noeud, je n'ai pas encore utilisé d'OS 64Bits, justement on est en pleine problématique DCOM 32Bits sur OS 64Bits ... je jeterais un oeil à HKEY_CLASSES_ROOT

    Code registry : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_CLASSES_ROOT\Wow6432Node\com.sun.star.ServiceManager\
    Pour lire ceux noeud en Delphi 32Bits avec un TRegistry, normalement tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_CLASSES_ROOT\com.sun.star.ServiceManager\
    Avec TRegistry depuis Delphi 32Bits, lors qu'ilessaye d'ouvrir les noeud, normalement, tu ne vois pas les noeuds nommé Wow6432Node, en fait tu vois leur contenu à la place du celui en 64Bits, c'est Windows qui bidouille et filtre les valeurs !

    Pour les GUID qui ne commence pas par 82154420, ce n'est pas grave, ce qui compte c'est celui de la classe, ensuite, tu peux avoir tout plein de GUID pour les autres types interfaces utilisées en interne


    Essaye aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenOffice := CreateComObject(StringToGUID('82154420-0FBF-11d4-8313-005004526AB4'));
    Je te laisse trouver la bonne syntaxe !

    Utilise aussi l'importateur de Bibliothèques de Type, au lieu d'utiliser en LateBinding avec des variants, tu pourras utiliser des interface et dispinterface en EarlyBinding, la différence, c'est que tu utilise le GUID importé et non le nom de la classe pour créer l'objet
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Poursuivant ma recherche sur le net, j'ai trouvé la solution .

    1. Désinstaller OpenOffice
    2. Réinstaller en cochant l'option «Installation personnalisée»
    3. Opter pour l'installation de tous les ActiveX.

    Et voilà, le tour est joué .

    J'espère que cela servira à d'autres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon tag img provoque une erreur sous IE
    Par gorjette dans le forum jQuery
    Réponses: 3
    Dernier message: 05/05/2011, 22h19
  2. Provoquer volontairement une panne sous Windows 7
    Par agenceaupair dans le forum Windows 7
    Réponses: 13
    Dernier message: 26/06/2010, 15h28
  3. Réponses: 5
    Dernier message: 08/09/2005, 20h33
  4. Select Case provoque une erreur
    Par defluc dans le forum SQL
    Réponses: 6
    Dernier message: 14/08/2005, 23h59
  5. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo