
Happiness is just a Flaming Moe's away [?]
Añademe a tus favoritos!
Contacto
Post al azar
RSS
BUSCAR
Mapa de la web
el 2001-01-01 00:00:00 - Secciones: - Enlace permanente: 445library EjemploDLL;
uses
SysUtils,
Classes,
dialogs;
procedure Hola; stdcall; export;
begin
ShowMessage('Holaaaaaaaa');
end;
exports Hola;
end.
Este es un ejemplo de DLL muy simple, que solo contiene el procedimiento Hola. Como podeis ver hay al menos tres diferencias con un programa normal:
1/ library EjemploDLL; ---> Para indicar al compilador que es una libreria
2/ procedure Hola; stdcall; export; ---> Con esas dos palabras indicamos que ese procedimiento se puede usar por otro programa.
3/ exports Hola; ---> Dejamos claro que es lo que queremos exportar.
Luego, para usarla solo tenemos que hacer: (haz un programa con dos botones para el ejemplo)
procedure Hola; external 'EjemploDLL.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
Hola;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
hMod : THandle;
HelloWorld : procedure;
begin
hMod := LoadLibrary('EjemploDLL.dll');
if (hMod = 0) then Exit;
@Hola := GetProcAddress(hMod, 'Hola');
if @Hola nil then Hola;
FreeLibrary(hMod);
end;
El segundo metodo es bastante mas complicadillo, pero permite mucho mas control en plan dar un error si el DLL no se encuentra y cosas asi.
Por cierto, los DLL se pueden ejecutar (lease, 'el windows los encuentra') cuando estan en:
1/ El mismo directorio que el ejecutable
2/ En el directorio de windows (C:\windows normalmente)
3/ En el directorio de sistema de windows (C:\windows\system normalmente)
4/ En los directorios señalados por la variable de sistema PATH
Deberia haber una tercera forma para llamar a las funciones de un dll, en realidad es una variante de la segunda, que es guardar el dll dentro de los resources del ejecutable y luego leerlo en tiempo de ejecucion, pero no consigo hacerlo sin pasar por el disco (en el momento en que el dll se escribiese en el disco estariamos haciendo la version dos de la llamada)... esto que puede parecer un rollo tiene su utilidad, con esto podrias hacer programas que practicamente no dieran problemas de pantallazos azules.
|
Te escribo porque se me hace interesante el tema, ya que por mucho tiempo he estado interesado en aprender como hacer librerías DLL, pero de momento lo que me interesa es hacer una que sea capaz de manejar el puerto paralelo, para comunicarse con una interfaz, ya he visto algunas hechas, pero quisiera elaborar una con ciertas caracteristícas que me interesan, no se si esto se pueda hacer en delphy, porque solo lo he visto con "C", o si es que se pueden hacer con Visual Basic. Saludos y gracias por anticipado. Disculpa las faltas, es solo que no manejo muy bien el Español, apenas llevo 6 años usandolo, hasta luego |
Saiyine recommends the easiest way to earn money with your web: get paid just by having some links! Click this button to check it out.
