La forma de cargar la dll puede ser estática o dinámica. Escafandra te propone la forma estática, que es igual de válida, la diferencia principal es que en modo estático la dll debe estar presente siempre para poder ejecutar tu aplicación.
Respecto a la asignación del App handle la forma correcta debería de ser:
Código Delphi
[-]procedure ShowForm (AppHandle : THandle);
begin
OldAppHandle := Application.Handle;
try
Application.Handle := AppHandle;
........
finally
Application.Handle := OldAppHandle;
end;
end;
El Application.Handle no tiene porque ser el mismo el de la librería que el de la aplicación host.