Como Definir un Procedimiento
Publicado por Fernando (18 intervenciones) el 02/04/2009 23:03:47
Hola a todos, encontre en un sitio un código para leer el serial del disco, pero no se como definir el procedimiento, sigo los pasos pero me tira error. Si alguien me puede dar una mano, desde ya mil gracias.
Este es el código:
Primero tienes que declarar esta variables en Global Properties, en Global
Data embed:
DireccionProcedimiento LONG,AUTO,NAME('ObtenerSerieDD')
y en InsideGlobalMap
MODULE('SerieDiscoDuro')
ObtenerSerieDD(LONG),C,RAW,PROC,DLL(1),NAME('ObtenerSerieDD')
FreeLibrary(LONG),BOOL,RAW,PASCAL,NAME('FreeLibrary')
GetProcAddr(LONG,LONG),LONG,RAW,PASCAL,NAME('GetProcAddress')
LoadLibrary(*CSTRING),LONG,RAW,PASCAL,NAME('LoadLibraryA')
END
Luego generas un nuevo un procedimiento Source que tenga en Local data lo
siguiente:
(Yo lo llamo ObtenerSerieDiscoDuro)
Serie PSTRING(256),AUTO
DLLNombre CSTRING('HddSerial.dll')
DLLProcedimientoNombre CSTRING('GetHDDSerial')
Apuntador LONG,AUTO
Y en Processed Code:
Apuntador=LoadLibrary(DllNombre)
DireccionProcedimiento=GetProcAddr(Apuntador,ADDRESS(DLLProcedimientoNombre))
ObtenerSerieDD(ADDRESS(Serie))
FreeLibrary(Apuntador)
RETURN(Serie)
Y despues en donde quieras que se obtenga el disco duro, asocias este source
en los procedimientos y lo mandas llamarde la siguiente manera:
NumeroSerie=ObtenerSerieDiscoDuro()
No he generado el template, ya que lo hagas template, me lo mandas, jeje...
Nota: Debes tener el archivo DLL, en el mismo directorio donde funcione la
aplicacion....
Este es el código:
Primero tienes que declarar esta variables en Global Properties, en Global
Data embed:
DireccionProcedimiento LONG,AUTO,NAME('ObtenerSerieDD')
y en InsideGlobalMap
MODULE('SerieDiscoDuro')
ObtenerSerieDD(LONG),C,RAW,PROC,DLL(1),NAME('ObtenerSerieDD')
FreeLibrary(LONG),BOOL,RAW,PASCAL,NAME('FreeLibrary')
GetProcAddr(LONG,LONG),LONG,RAW,PASCAL,NAME('GetProcAddress')
LoadLibrary(*CSTRING),LONG,RAW,PASCAL,NAME('LoadLibraryA')
END
Luego generas un nuevo un procedimiento Source que tenga en Local data lo
siguiente:
(Yo lo llamo ObtenerSerieDiscoDuro)
Serie PSTRING(256),AUTO
DLLNombre CSTRING('HddSerial.dll')
DLLProcedimientoNombre CSTRING('GetHDDSerial')
Apuntador LONG,AUTO
Y en Processed Code:
Apuntador=LoadLibrary(DllNombre)
DireccionProcedimiento=GetProcAddr(Apuntador,ADDRESS(DLLProcedimientoNombre))
ObtenerSerieDD(ADDRESS(Serie))
FreeLibrary(Apuntador)
RETURN(Serie)
Y despues en donde quieras que se obtenga el disco duro, asocias este source
en los procedimientos y lo mandas llamarde la siguiente manera:
NumeroSerie=ObtenerSerieDiscoDuro()
No he generado el template, ya que lo hagas template, me lo mandas, jeje...
Nota: Debes tener el archivo DLL, en el mismo directorio donde funcione la
aplicacion....
Valora esta pregunta


0