PDA

Ver la Versión Completa : Consumir DLL


ramflores
14-04-2016, 16:55:08
Buen dia Foro.

Estoy empezando con el tema de poder consumir una DLL, mas no se aun como
tengo estas indicaciones como ejemplo de esta funcion de la DLL

CLIENT_Init
initialize SDK, call before all SDK function

BOOL CLIENT_Init(
fDisConnect cbDisConnect,
LDWORD dwUser
);
Parameters
cbDisConnect
disconnect recall function, recall disconnected device of current network,do not recall actively disconnected device of ClIENT_LogOut() function which call SDK,prohibit call when set to 0
[in]dwUser
user data
CallBack function
typedef void(CALLBACK *fDisConnect)(
LLONG lLoginID,
char *pchDVRIP,
LONG nDVRPort,
LDWORD dwUser
);
CallBack function Parameters
lLoginID
login handle
pchDVRIP
device IP
nDVRPort
port
dwUser
user data,as user data input above
Return Values
successful return to TRUE,failed return to FALSE.

Remarks
call at time of application initialization.


y se que debo declarar esta funcion asi

function CLIENT_Init( cbDisConnect: fDisConnect; dwUser:LongWord): bool; stdcall; External 'dhnetsdk' name 'CLIENT_Init';

pero de ahi en delante ya no se como hacerla funcionar

Gracias de antemano por su apoyo

escafandra
14-04-2016, 17:14:24
Prueba a declararlo así:


fDisConnect = procedure(lLoginID: LONGLONG; pchDVRIP: PCHAR; nDVRPort: DWORD; dwUser: LONGLONG); stdcall;
function CLIENT_Init( cbDisConnect: fDisConnect; dwUser:LongWord): bool; stdcall; External 'dhnetsdk' name 'CLIENT_Init';



Saludos.

ramflores
14-04-2016, 18:41:16
gracias por responder.

Esa linea
fDisConnect = procedure(lLoginID: LONGLONG; pchDVRIP: PCHAR; nDVRPort: DWORD; dwUser: LONGLONG); stdcall;

la pongo ahi mismo arriba de la funcion?

y como lo consumo?

if ( CLIENT_Init( ?, ? ) then
begin
showMessage('Se inicializo con exito')
end

Perdon por tanta pregunta, es que este tema lo desconosco por completo

roman
14-04-2016, 19:31:24
Por favor, utiliza las etiquetas adecuadas para fragmentos de código.

LineComment Saludos

ramflores
14-04-2016, 22:47:47
Si claro, una disculpa, ese parrafo se me fue , existe forma de corregirlo?

escafandra
15-04-2016, 00:35:46
gracias por responder.

Esa linea
fDisConnect = procedure(lLoginID: LONGLONG; pchDVRIP: PCHAR; nDVRPort: DWORD; dwUser: LONGLONG); stdcall;

la pongo ahi mismo arriba de la funcion?

y como lo consumo?

if ( CLIENT_Init( ?, ? ) then
begin
showMessage('Se inicializo con exito')
end

Perdon por tanta pregunta, es que este tema lo desconosco por completo

Si, lo pones arriba para que el compilados sepa que es el tipo fDisConnect que es un puntero a una función calback C.

El significado y uso de los parámetros que usan es algo que tendrás que averiguar de la documentación de esa dll.

Saludos.

ramflores
15-04-2016, 01:19:16
gracias por sus respuestas, la única documentación que tengo es lo que puse al inicio del post

escafandra
16-04-2016, 00:48:50
Pero si quieres usar esa dll, sabrás para que sirve y que hace...

Saludos.

ramflores
19-04-2016, 15:19:20
Esa DLL, sirve para establecer comunicacion con un DVR de Dahua, la cual requiero extraer cierta info como fecha y hora de ultimo grabado de video

ramflores
19-04-2016, 20:13:47
Buen dia.
Ya logre la comunicacion, ahora estoy tratando de extraer la info

Como se debe declarar este dato en delphi?

#define DH_DEVSTATE_DISK 0x0004

escafandra
20-04-2016, 01:24:25
const
DH_DEVSTATE_DISK = $0004;

Saludos.

PieterVos
20-12-2016, 13:26:33
Esa DLL, sirve para establecer comunicacion con un DVR de Dahua, la cual requiero extraer cierta info como fecha y hora de ultimo grabado de video

Buenos dias

¿¿ Pudiste avanzar con esta DLL de Dahua ?? Yo necesito interrogar equipos dahua para ver si tienen alguna incidencia (fallo disco duro principalmente) y comprobar que esten online.

att

ramflores
20-12-2016, 14:55:44
buenos dias foro.

Si y pude accederlos, ahorita solo monitoreo si estan online, o si tiene alguna falla del disco duro, aun me falta monitorear si estan grabando las camaras, pero eso aun no lo logro