Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : utilisation de DLL [ Divers / Débutant(e) ] (gregorian)

mardi 5 décembre 2006 à 16:55:53 | utilisation de DLL

gregorian

Bonjour à tous,

Je dois coer une apppli qui fait appel en grande partie à une DLL extérieure et n'ayant jamais travaillé de cette manière, je me retrouve légerement coincé.
la dll est est la suivante: C:\windows\system32\WinBooksOfficeApi.dll et elle est correctement enregistrée.

il se trouve dedans une fonction Init() qui renvoie un integer. J'ai vérifier l'ortho et les maj en passant par l'object browser
Dans mon code, je fais la chose suivante:

DECLARE integer Init IN C:\windows\system32\WinBooksOfficeApi.dll

IF Init() <> 0
        MESSAGEBOX("erreur init")
ENDIF

mais il me lance une erreur sur la ligne  IF Init() <> 0
qui est: cannot find entry point Init in the DLL

Alors que cette fonction existe bien dans la DLL.
Que se passe t'il ?

Merci de votre aide.



mardi 5 décembre 2006 à 17:31:32 | Re : utilisation de DLL

Mike Gagnon

Membre Club
Plusieurs questions se posent.
 1.Est-ce un DLL créer en C (ou C++) ou ta declaration serait possiblement bonne. Ou un DLL créer en Foxpro ou ta déclaration n'est pas bonne.
2. Normallement on ne fait pas appel à l'init d'un DLL mais à un autre fonction à l'intérieur du DLL.
3. IF Init() <> 0
        MESSAGEBOX("erreur init")
   ENDIF
Que t,attendais a voir ici?
Normallement un appel à un DLL est comme ceci.
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
= Sleep (20)
Je ne vois pas ou tu envoye un INTEGER à ton DLL.



Mike Gagnon

mercredi 6 décembre 2006 à 15:11:21 | Re : utilisation de DLL

gregorian

Bonjour,

la dll a été écrite en VB6 ou en C++

Le integer que j'ai indiqué, je l'ai mis car je croyais qu'il fallait également préciser le type de la valeur de retour.
Maintenant, cet appel touche bien une fonction de la dll qui possède une fonction qui s'appelle init.

Toi tu m'écris que pour déclarer une DLL, il faut faire comme ceci:
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds = Sleep (20)

Ca veut dire que lors de la déclaration de la fonction tu lui passe déjà les paramètres?

Coment fais tu dans le cas ou tu as besoin d'information entrée par l'utilisateur ?
Tu déclares  ta fonction DLL au moment où tu l'utilises ?

Greg.

mercredi 6 décembre 2006 à 16:21:51 | Re : utilisation de DLL

gregorian

Re,

Dans le même ordre d'idée, cette DLL comprend plusieurs classes qui ont chacune des propriétés bien distinctes. Comment puis je modifier ces propriétés? Existe t'il un moyen de "déclarer" ces propriétés? Ou via fox pro ce genre d'opération n'est pas possible.

Merci de votre aide.
Greg

Dans le cas ou ca peut aider, voici un exemple de code mais fait en VB qui fait appel à cette DLL.

Dim Wb As New WinbooksObject

Private Sub Form_Unload(Cancel As Integer)

    Wb.CloseDossier

End Sub

Private Sub Import_Click()

    'Initialisation

    Dim i As Integer   

    If Wb.Init <> 0 Then MsgBox Wb.LastErrorMessage: Exit Sub   

    'Login utilisateur

    If Wb.Login("SYSTEM", "") <> 0 Then MsgBox Wb.LastErrorMessage: Exit Sub   

    'Ouverture du dossier Parfilux, le dossier de test

    If Wb.OpenDossier("PARFILUX") <> 0 Then MsgBox Wb.LastErrorMessage: Exit Sub   

    'Pour l'année 1999

    If Wb.OpenBookYear("Ex. 1999") <> 0 Then MsgBox Wb.LastErrorMessage: Exit Sub   

    'Importation au format DBF

    If Wb.Import.FileFormat("DBF") = False Then MsgBox Wb.LastErrorMessage: Exit Sub   

    'Spécification du directory contenant les fichiers importés

    If Wb.Import.Directory(App.Path & "\ImportFiles") = False Then MsgBox Wb.LastErrorMessage: Exit Sub

    ' Spécification du format d'origine de l'importation

    wb.import.linkformat=wbWinbooks

    'Demander un backup des datas et des fichiers importés

    If Wb.Import.Backup(App.Path & "\Backup") = False Then

        MsgBox Wb.LastErrorMessage

        Exit Sub

    End If

    'On importe des factures de Décembre

    If Wb.Import.SetDefaultPeriod(Wb.Param.PeriodInternalCode("01/12/1999")) = False Then MsgBox Wb.LastErrorMessage: Exit Sub

   && ici  le set des différentes propriétés qui vont gérer le comportement de l'import

    'Traitement des erreurs

    'Compte manquant -> fiche blanche

    Wb.Import.ErrorCodes("ACC_MISS").SetResolution = wbBlankRecord

    'Memo changé : remplacer par le mémo importé

    Wb.Import.ErrorCodes("MEM_DIFF").SetResolution = wbReplace

    'Fiche modifiée : prendre le contenu de la fiche importée

    Wb.Import.ErrorCodes("ACC_MOD").SetResolution = wbReplace

    'Rupture dans la numérotation : le signaler : on laisse à WbToResolve

    Wb.Import.ErrorCodes("SEQ_RUPT").SetResolution = wbToResolve

    'Un document existe déjà dans le dossier cible : remplacer

    Wb.Import.ErrorCodes("DOC_NUM").SetResolution = wbReplace

    'Le libellé d'un code table a changé : remplacer par le libellé importé

    Wb.Import.ErrorCodes("TAB_MOD").SetResolution = wbReplace

    'Il y a un taux de change différent pour cette devise : prendre le taux importé

    Wb.Import.ErrorCodes("CUR_ERR").SetResolution = wbReplace

    'Le fichier d'importation contient des écritures rigoureusement identiques au dossier cible : continuer

    Wb.Import.ErrorCodes("SAM_FIL").SetResolution = wbAccept

    'écriture avec date hors-période : accepter

    Wb.Import.ErrorCodes("OUT_DAT").SetResolution = wbAccept   

    'On lance la procédure de test

    If Wb.Import.test = False Then MsgBox "Erreur au cours de la procédure de test": Exit Sub

    For i = 1 To Wb.Import.Warnings.Count

        If Wb.Import.Warnings(i).GetResolution = 0 Then

            MsgBox "Tous les warnings ne sont pas corrigés (" & Wb.Import.Warnings(i).Code & ")"

        End If

    Next i

    Wb.Import.ErrorCodes("SEQ_RUPT").SetResolution = wbAccept   

    If Wb.Import.FatalErrors.Count > 0 Then MsgBox "Erreurs fatales dans les fichiers d'importation. Impossible de poursuivre !": Exit Sub 

    If Wb.Import.Warnings.Count > 0 Then MsgBox "Erreurs de type warning dans les fichiers d'importation" 

    If Wb.Import.Execute = 0 Then

        MsgBox "Importation réalisée avec succès"

    Else

        MsgBox Wb.LastErrorMessage

    End If       

    Wb.CloseDossier                                                                                                                            

End Sub

 
voila.

Greg.

mercredi 6 décembre 2006 à 21:35:36 | Re : utilisation de DLL

Mike Gagnon

Membre Club
Non, pas exactement

DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
= Sleep (20)

Sur deux ligne. En fait un declaration peut etre fait dans ton main program, et l'appel est simplement
= Sleep (20)


Mike Gagnon



Cette discussion est classé dans : windows, dll, utilisation, init, suivante


Répondre à ce message

Sujets en rapport avec ce message

probleme dll sous windows 98 [ par ducker88 ] Bonjour à tous,Voila mon probleme, je developpe une appli en VFP9 qui dois pouvoir tourner sur les systemes d'exploitation de 98 à XPle probleme est q Héritage depuis une dll [ par elvom ] Bonjour,Je travaille sur un projet VFP9.0 (nommé GTI) qui utilise une dll d'un autre projet VFP9.0 (nommé RFE)Je n'arrive pas à créer une classe fille Forcer Utilisation d'un index dans une requete en VB [ par paperino ] Bonjour,J'ai cherché sur le forum comment faire pour forcer l'utilisation d'un index.je m'explique, je vais chercher un numéro de serie (en utilisant Message d'erreur mémoire insuffisante sous Foxpro 8.0 [ par sebfox69 ] Bonjour,J'ai developpé une application sous Visual Foxpro 8.0 et j'ai un problème lié à la mémoire .A l'intérieur de mes programmes, j'ai des requêtes API windows [ par captainstf ] Salut à tous!Je travaille actuelle sur l'api windows et je gallère pas mal :1- Je cherche à mettre une application au premier plan, j'utilise :showwin créer une dll a partir de vfp6.0 [ par aumeric ] Bonjour Je voudrais faire une dll qui contient une fonctionexfunction donneheure()return time()Dans mon programme je voudrais appeler cette fonction Foxpro 3 et XP [ par Psy06 ] Bonjour Dans certains cas lors du lancement d'une application développée avec Visual foxpro 3.0 sous window XP je reçois des messages : "c:\windows\sy Utilisation de dlls vb en foxpro [ par jee0404 ] Bonjour,              Est-ce que je peut utiliser facilement les dll en visual basic dans mesprogrammes en foxpro ? Partage avec DLL [ par delphifox ] Je voudrais structurer mon projet VFP entre un EXE et plusieurs DLL.L'EXE est en VFP et les DLL aussi. La DLL doit afficher un écran de saisieAu nivea Probleme de DWORD dans le registre Windows [ par CyberPunk2020 ] Bonjour,Donc pour résumé, j'essaye via un prg dans Fox de modifier une entrée du registre qui est un Dword et que Fox ne semble pas vouloir ouvrir com


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.