Sign in to follow this  
Followers 0
tschallb

DLLCall Issue

3 posts in this topic

Hi Folks,

Thanks for all those who answer questions here in the forums, they are a wealth of information for AutoIT newbies like me.

I have been struggling with a DLLCall issue for the last couple of days as this is the first time I have ever called a DLL...

Here the API Definition for the call:

PRC_API_Open

Method name: PRC_API_Open

Format:

PRCAPI_RESULT PRC_API_Open (PRC_HANDLE* phRc)

Inputs

PRC_HANDLE* phRc : Pointer to a Handle for later use in communicating thru PRC. Will be set by the API.

Outputs

PRCAPI_RESULT indicating success or failure. See the return codes section for more details.

Description

Opens the communication path and sets a handle to use for issuing commands back and forth to thru the API. When you are finished with the handle you must call PRC_API_Close() on it.

Here is my simple code that so far is not working:

$dll = DllOpen("PRCApiCli.dll")

$p = DllStructCreate ("dword")

$result = DllCall($dll, "int", "PRC_API_Open", "ptr", DllStructGetPtr ($p,1))

$data = DllStructGetData($p, 1)

msgbox(0, "", $dll) ;Display DLL Open result

msgbox(0, "", $p); Display the Dll StructCreate

msgbox(0, "", $data) ;Display PRC_HANDLE

msgbox(0, "", $result[0]) ;Display PRC_API_Open result

DllClose($dll)

Results are:

$dll=1

$p=nothing

$data=0

$result[0]=Error subscript used with non-Array Variable

Is my DllCall line correct? Is there anything else that appears to be wrong?

Thanks,

Tim

Share this post


Link to post
Share on other sites



try...

$dll = DllOpen("PRCApiCli.dll")

$result = DllCall($dll, "int", "PRC_API_Open", "int*",0)

MsgBox(0,"",$result[1])

or

$dll = DllOpen("PRCApiCli.dll")

$result = DllCall($dll, "int:cdecl", "PRC_API_Open", "int*",0)

MsgBox(0,"",$result[1])


f_mrcleansmalm_77ce002.jpgAutoIt has helped make me wealthy

Share this post


Link to post
Share on other sites

try...

$dll = DllOpen("PRCApiCli.dll")

$result = DllCall($dll, "int", "PRC_API_Open", "int*",0)

MsgBox(0,"",$result[1])

or

$dll = DllOpen("PRCApiCli.dll")

$result = DllCall($dll, "int:cdecl", "PRC_API_Open", "int*",0)

MsgBox(0,"",$result[1])

Hi Larry,

Thanks for the help. Unfortunately, I receive the following error for both:

C:\Documents and Settings\Test Machine\My Documents\DllCall_Test.au3 (17) : ==> Subscript used with non-Array variable.:

MsgBox(0,"",$result[1])

MsgBox(0,"",$result^ ERROR

Any other ideas?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0