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

Interfaçage autre langage Python Discussion :

Intégration d'un complément COM dans un script Python


Sujet :

Interfaçage autre langage Python

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Intégration d'un complément COM dans un script Python
    Bonjour,
    Je voudrais créer un script permettant d’interagir avec le logiciel PlanningPME (www.planningpme.com). C'est un soft qui tourne sur une basse Access.
    J'avais commencé à créer des classes en Python avec pypyodbc et ça marche plutôt bien. Le point négatif est le manque de documentation et le risque d'obsolescence au fil des mises à jour.
    Donc, finalement, plutôt que de recréer des classes en Python, je voudrais utiliser le complément COM fourni (https://www.planningpme.fr/modele-objet-planningpme.htm).
    Et là, je sèche un peu. Je souhaite utiliser le module pythonnet mais ça fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import sys
    assemblydir = r"C:\Program Files (x86)\Target Skills\PlanningPME"
    sys.path.append(assemblydir)
     
    import clr
    clr.AddReference('PlanningPME')
     
    import PlanningPME
    J'obtiens l'erreur "Unable to find assembly 'PlanningPME'."

    Ca fait des heures que je bataille et je ne vois pas quel est le problème.

    J'ai aussi tenté via ctypes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from ctypes import *
    ppme = WinDLL(r"C:\Program Files (x86)\Target Skills\PlanningPME\PlanningPME.dll")
    ppme.Task.count()
    Ca me dit function not found

    Quelqu'un me t-il me filer un coupe de main, svp ??

    Je met la dll en pièce jointe si besoin

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Si c'est une bibliothèque COM, il faut l'attaquer via l'interface COM (disponible avec pywin32).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ton retour
    J'ai installé le module Pywin32. C'est pas super clair la doc.

    J'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import win32.win32api as win32api
     
    dll = win32api.LoadLibrary(r"C:\Program Files (x86)\Target Skills\PlanningPME\PlanningPME.dll")
    Comment je récupère mes fonctions ?
    Y'a t-il un moyen de les lister ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    win32 est un vaste domaine, à priori, vous voulez plutôt utiliser win32com.client et vous avez des tas d'exemples sur Internet car EXCEL, WORD,... sont "programmables" depuis cette interface COM.
    Mais si le programmeur utilisant des outils Windows le faira sans trop se poser de question, le programmeur Python va devoir ouvrir le capot pour comprendre comment fonctionne tout çà pour y arriver.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Pour obtenir la valeur d'une constante, après le Dispatch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur_constante = client.constants.[nom_constante]

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par hg64dar Voir le message
    Je sais récupérer les classes. Comment je fais pour les enums ?
    Cherchez un peu sur Internet, il y a plein de solutions mais il faut choisir la plus adaptée (ce que je ne peux pas faire pour vous).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Cherchez un peu sur Internet, il y a plein de solutions mais il faut choisir la plus adaptée (ce que je ne peux pas faire pour vous).

    - W
    Si vous n'avez pas la réponse. Ce n'est pas grave. Inutile de faire la classique réponse : "Chercher sur internet". Tout le monde n'a pas la science infuse, sinon ce forum n'aurait pas lieu d'être.
    Abstenez vous juste de répondre dans ce cas et laissez les autres intervenir.
    Merci

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par hg64dar Voir le message
    Si vous n'avez pas la réponse. Ce n'est pas grave. Inutile de faire la classique réponse : "Chercher sur internet". Tout le monde n'a pas la science infuse, sinon ce forum n'aurait pas lieu d'être.
    Abstenez vous juste de répondre dans ce cas et laissez les autres intervenir.
    C'est une opération que j'ai eu l'occasion de faire plusieurs fois.
    Donc je connais des solutions, et je sais qu'il y en a plusieurs exploitables.
    Elles sont toutes documentées dans Python Programming on Win32 de Mark Hammon, que j'ai eu la chance de revoir avant sa publication en 2000.
    C'est l'avantage et l'inconvénient d'avoir des dizaines d'années d'expérience.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    voici un exemple qui utilise l'objet COM vbscript.regexp. Cela n'offre pas d'intérêt pour Python car celui-ci possède déjà un module d'expressions régulières mais cela permet de voir comment on définit et utilise un object COM windows. A noter que win32com.client fait partie de pywin32.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import win32com.client as win32
    vbsregexp = win32.gencache.EnsureDispatch('vbscript.regexp')
    vbsregexp.Pattern = '(.+\d{1}){3}'
    expression = 'az1er2ty3'
    print('test ' + expression +  ' : ' + str(vbsregexp.Test(expression)))
    expression = 'az1erty3'
    print('test ' + expression +  ' : ' + str(vbsregexp.Test(expression)))
    expression = 'az123erty'
    print('test ' + expression +  ' : ' + str(vbsregexp.Test(expression)))
    L'expression régulière teste si l'expression contient 3 chiffres séparés.
    Pour utiliser un objet COM comme dans l'exemple, il faut que celui-ci soit "enregistré" dans le système.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci pour ces infos.
    J'en suis arrivé à la même conclusion.

    Par contre, je ne parviens pas avoir l'auto-complétion sous VS Code ou PyCharm avec win32com.
    J'ai trouvé des solutions pour avoir la liste des commandes (via Visual Studio ou via la commande dir)
    J'ai également essayé Pythonwin qui permet de les afficher (en partie).
    Mais ces solutions sont pas super pratique.
    Auriez-vous une astuce un peu plus efficace pour y parvenir ?
    Merci

Discussions similaires

  1. Intégration d'une fonction utilisateur dans un script
    Par Rony Rauzduel dans le forum Langage
    Réponses: 0
    Dernier message: 18/10/2012, 15h11
  2. Utilisation de C++ dans un script python.
    Par Ekinoks dans le forum Interfaçage autre langage
    Réponses: 8
    Dernier message: 18/01/2007, 19h03
  3. import dans les script python (objet zope)
    Par cronos6 dans le forum Zope
    Réponses: 5
    Dernier message: 10/09/2006, 14h47
  4. Radio boutton dans un script python
    Par Abla23 dans le forum Zope
    Réponses: 17
    Dernier message: 12/07/2006, 17h12
  5. Réponses: 3
    Dernier message: 05/04/2005, 14h26

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