Sobre dlls

Hola que tal mi nombre es carlos
SOY FANÁTICO DE VBF6.0 Y DESEO CREAR UNA DLL
POR FAVOR SI TIENES EL DATO o mucho mejor algún
pequeño ejemplo A TU ALCANCE TE
AGRADECERÉ BASTANTE QUE ME LO EMVIARAS
SOLO NECESITO UN EJEMPLO PEQUEÑO PARA ENTENDERLO.
Gracias saludos perú-lima
[email protected]

5 Respuestas

Respuesta
1
Espero sirva:
Fox desde la versión 2.0 tiene la posibilidad de hacer librerías PLB (entorno DOS) y FLL (entorno Windows). Estas librerías te permiten realizar operaciones de más bajo nivel que de otra forma no podrías. ¿Te pongo una guía? ¿Paso a paso? para poder hacer tu primera .FLL útil.
Usaremos Visual C++ 6.0
§ Copia los ficheros PRO_EXT. H que lo tendrás dentro del directorio API de instalación de Fox en el directorio Include del directorio de instalación de VC++ .
§ Copia el difichero WinApims. Lib que lo tendrás dentro del directorio API de Fox al directorio lib de Visual C++.
§ Lanza VC++ y pulsa en File/New.
§ Selecciona dentro de la pestaña de proyectos la opción Win32 Dynamic Link Library y dejala marcada.
§ En location pon el nombre del directorio donde vas a realizar tu primera .FLL. El directorio debe ya de existir. Por ejemplo: c:\CopiaArchivos.
§ En Project name escribe CopiaArchivos.
§ ¿La opción de? ¿Create new workspace? Se debe quedar como marcada por defecto.
§ Pulsa en Aceptar y se te abre otra ventana en el que te pregunta qué tipo de DLL quieres crear.
§ Deja marcada la opción de an empty DLL project. Pulsa en Finalizar. Y dale OK a lo que te diga.
§ Escoge ahora File\new. Dentro de la pestaña de Files escoge C++ source file y pon en file name CopiaArchivos (la opción de Add to project debe estar marcada por defecto).
§ Escoge ahora Project\Settings y pulsa en la pestaña de C++ . Pon la opción de Category Code a generation.
§ La opción de Calling convention : _fastcall
§ La opción de Use runtime lib : Multithreaded DLL
§ Pulsa la pestaña de Link y pon delante de todos los Object/library modules :winapims. Lib. El resto de las opciones déjalas como están.
§ Pulsa OK y cierra el Project/Settings.
Escribe el siguiente código dentro de CopiaArchivos.cpp.
#include < windows.h >
#include < stdio.h >
#include < pro_ext.h >
char FAR *NullTerminate(Value FAR *cVal)
{
char *RetVal;
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insuficiente Memoria"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
RetVal = (char FAR *) _HandToPtr(cVal->ev_handle);
return RetVal;
}
void FAR FileOp(ParamBlk FAR *parm)
{
SHFILEOPSTRUCT ShCopyInfo;
ZeroMemory(&ShCopyInfo, sizeof (SHFILEOPSTRUCT));
char FAR *source = NullTerminate(&parm->p[0].val);
char FAR *target = NullTerminate(&parm->p[1].val);
ShCopyInfo.hwnd = GetActiveWindow();
ShCopyInfo.pFrom=source;
ShCopyInfo.pTo=target;
ShCopyInfo.wFunc=FO_COPY;
ShCopyInfo.fFlags=FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR;
int success = SHFileOperation(&ShCopyInfo);
_RetInt(success,10);
}
FoxInfo myFoxInfo[] =
{
{"FileCopyX", (FPFI) FileOp, 2, "CC"},
};
extern "C" {
FoxTable _FoxTable =
{
(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
}
· Pulsa F7 (tecla rápida para compilar)
· Vete al directorio CopiaArchivo\Debug\ y cambia la extensión de CopiaArchivo.DLL a CopiaArchivo. Fll
· En Fox escribe:
set library to C:\temp\filecopier\Debug\filecopier.fll
FileCopyX('c:\dir1\*.*','c:\dir2')
El directorio origen debe de existir. Esto te produce un sistema de copiar archivos con estilo an explorer (con animación y barra de progreso).
Ya ves que no es tan difícil. Lo que hay que saber es C++
Respuesta
1
Aquí te mando el ejemplo, solo compilalo como dll, lo registrar con RegSvr32 y ya lo puedes usar
DEFINE CLASS MTSFilesProc As SESSION OLEPUBLIC
*** Aqui se pone OlePublic, para que sirva como Dll
*** Aqui se Declaran las propiedades de la clase
PArchivo_Actual = 0
PTotal_Archivos = 0
PVersion = "1.2.0004" && Fecha 02/07/2003
*****************************************************************
** Procedimiento init *******************************************
*****************************************************************
Procedure Init
**** Aqui se ponen los sets
Set Date To DMY
EndProc
Enddefine
MUCHAS GRACIAS AMIGO EXPERTO BUEN DATO NO QUIERO ABUZAR PERO QUISIERA QUE ME EXPLIQUES UN POCO MÁS SOBRE ESTA LINEA "lo registrar con RegSvr32"
SALUDOS [email protected] PERÚ-LIMA
Respuesta
1
Como estas, revisa
http://www.foxynet.net/Articulos/59.aspx
Respuesta
1
La verdad es que se poco del tema, te sugiero que mires estos sites:
www.davphantom.net (se que hay un ejemplo del tema)
www.fpress.com
www.portalfox.com
Respuesta
1
Mil disculpas no poder ayudarte pero este no lo he realizado nunca...
Sorry por la demora en la respuesta igual por cuanto he estado muy ocupado y no he utilizado el internet

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas