Information générale
Catégorie:
Fonctions Windows API
>>>>I am trying trying to call a DLL function. The VB code that works properly is as Follows:
>>>>
>>>>//////////////////////////
>>>>Declare Function FPInitialize% Lib "ETFAXD32.DLL" (lpdFaxHandle&)
>>>>
>>>>Private Sub Command1_Click()
>>>>
>>>> wstatus = FPInitialize(dFaxHandle)
>>>>
>>>>End Sub
>>>>/////////////////////////
>>>>
>>>>In this code, the value of dFaxHandle is properly assigned a Long Integer value, and wstatus is assigned 0, indicating success.
>>>>
>>>>I'm trying to do the samething in VFP 5.0. Here is the code for VFP:
>>>>
>>>>DECLARE INTEGER FPInitialize IN ETFAXD32 AS FpInitialize ;
>>>> Long @nFpHandle
>>>>
>>>>nStatus = FpInitialize(@nFaxHandle)
>>>>
>>>>As near as I can tell, this should return the samething, but a Long integer gets assigned to nFaxHandle(as I would expect) and a large integer gets assigned to wStatus, indicating failure.
>>>>
>>>>This seems simple enough, what am I missing here?
>>>>
>>>>Ed
>>>
>>>This is a real shot in the dark, but here are two things to try:
>>>
>>>1. Drop the AS clause in the declaration and/or;
>>>
>>>2. Change the alias being used.
>>>
>>>It could be that there's a conflict being generated by the declaration.
>>>
>>>HTH,
>>>
>>>George
>>
>>George,
>>
>>Just tryed both of your sugestions, still no good. Thanks fot your though, I'll try anything.
>>
>>Ed
>
>This is a stupid suggestion I know, but try adding the DLL extension in the declaration.
>
>You mentioned that value returned indicates that there's an error. Does the documentation give you any clue as to what the error could be?
>
>Two thoughts:
>
>1.) And this may also be farfetched, it could be that you may still have a conflict because of the function's name. There could be an internal FoxPro function named "FPInitialize". I have no way, however, of knowing for certain. If it is the case, I don't think there's a work-around in FoxPro. Which leads me to thought two.
>
>2. Since you seem to have a good knowledge of VB, you might consider trying to create an ActiveX control for the DLL. If you could do that, not only could you hide the complexity of dealing with it, but probably could use it rather than the direct call.
>
>George
George:
The purpose of the AS clause in the DECLARE statement is to work around naming conflicts, as you suggested. I renamed the alias with AS to "testing", and it still didn't work.
There is an Active-X control that is already written for this. It isn't working properly. So what I am actually trying to do is a work around for the Active-X control. I'm not versed in VB at all, I just am using their examples to try to make it work. Their sample calls the dll directly and it works great. The suggestion was made to call the functions in the Dll directly. So that is the history.
Thanks Ed
Précédent
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement