Foros del Web » Programando para Internet » ASP Clásico »

Llamando Dll, pasando valor desde ASP

Estas en el tema de Llamando Dll, pasando valor desde ASP en el foro de ASP Clásico en Foros del Web. Hola Comuneros espero encuentre una alternativa. Estoy haciendo una DLL en donde estoy utilizando "ShellExecute" con la finalidad de que abra un docuemento cualquiera en ...
  #1 (permalink)  
Antiguo 05/08/2004, 17:53
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Exclamación Llamando Dll, pasando valor desde ASP

Hola Comuneros espero encuentre una alternativa.

Estoy haciendo una DLL en donde estoy utilizando "ShellExecute" con la finalidad de que abra un docuemento cualquiera en su respectivo software o por defecto definido.

Desde ASP llamo la dll pasando el valor del archivo que necesito abrir, pero en me genera un error de la clase (Cadena clase no valida) no encuentro donde ta error.

Les envió los datos para que vean:

Datos que contiene la DLL:

Proyecto nombre: apr.vbp
Clase nombre: apropen.cls
Funcion definida: aprabre()

este es el code de VB:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Public Function aprabre(ByVal doc As String) As Variant
ShellExecute 0, "open", doc, vbNullString, vbNullString, 2
End Function

datos "doc" deberia ser el valor pasado desde ASP.

En la pagina ASP esta esto:

Set oClass = Server.CreateObject("apr.apropen")
Vrecord = oClass.aprabre("ArcView", "C:\1.apr")

esos son los datos..pero no pasa nada...

cualquier ayudita agradecido...

salu2
  #2 (permalink)  
Antiguo 05/08/2004, 18:37
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Ya está registrada ?

regsvr32 c:\windows\system32\tudll.dll
  #3 (permalink)  
Antiguo 05/08/2004, 21:33
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Si man gracias!

pero ya lo encontré lo que fallaba era la llamada a la clase, pero ya lo solucioné ahora.

Ahora cabros tengo DLL para llamar cualquier formato y abrirlo con el respectivo programa relacuionado...


Cuando pueda lo pongo al aire. para la comunidad,...

Salu2
  #4 (permalink)  
Antiguo 06/08/2004, 10:21
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
shia... no me funca no abre nada a través de la DLL en un proyecto EXE no hay problema pero desde ASP no puedo llamar el EXE y ejecutarlo pasando un valor..

Buuu necesito esto o quizás a través de JAVA no sé si alguien conoce o ha visto algo así me pueda ayudar..



Otra pregunta yo no puedo insertar cósdigo VB6 en ASP asi como la programación de VB. o en el script o algo...

salu2
  #5 (permalink)  
Antiguo 06/08/2004, 11:55
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 21 años
Puntos: 0
hola

No puedes llamar directamente una dll en una asp, lo que puedes hacer es lo siguiente:

Tienes que crear un componente en visual c++. Busca en internet como hacerlo aunque no es dificil, pero hay que entenderle. Bueno te puede apoyar en algo.

1. Crea un componente.
2. Crea una interfaz que mande llamar a la funcion de tu dll. Por ejemplo:
STDMETHODIMP Prueba::Ejecutar(BSTR *a)
{
CString b;
tu_funcion(char *b);
a=::SysAlloc(b);
}
3. Ya en tu asp, manda llamar tu componente y veras que funciona.

Pero te recomiendo que busques mas detalles, pues como veras no soy bueno para explicar.

P.D. Yo estoy haciendo lo mismo que tu.
  #6 (permalink)  
Antiguo 06/08/2004, 12:35
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
No puedes llamar directamente una dll en una asp, lo que puedes hacer es lo siguiente:

Imaginate si esto fuera realidad

1.- Si puedes llamar dll's desde ASP, de hecho cuando una maneja el FSO, en realidad es una dll que tiene muchas clases y una de ellas es el FSO.

En cuanto a la dll lo que pides claro que es posible, no he examinado tu código todavía, te pongo un ejemplo, desde la dll manipulo el registro, abro aplicaciones y todo bien

Function wreadinregestry_class2() As Variant
Set ws = CreateObject("wscript.shell")
clave = ws.RegRead("HKEY_CURRENT_USER\Software\Microsoft\W indows NT\CurrentVersion\set up\Value 3")
wreadinregestry_class2 = clave
End Function

El proyecto se llama registro la clase security y lo mando a llamar..

set instancia=createobject("registro.security")

' el método...

instancia.wreadinregestry_class2()

Posiblemente al llamar está mal hecho.
  #7 (permalink)  
Antiguo 06/08/2004, 13:20
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
no esta mal el llamar la DLL comuneros, solo que no me permite ejecutar ShellExecute esa instrucción.

Lo que pasa no me da error solo que no abre el archivo que paso como valor. y esta bien pasado...

SI SE PUEDE LLAMAR UNA DLL DESDE ASP MAN... AHORA SABES:.

;)
  #8 (permalink)  
Antiguo 06/08/2004, 13:51
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
1.- Quieres abrir "x" documento en el servidor con su programa asociado en el servidor ???

2.- Raro, pero no te ahogues en un vaso de agua usa el shell de wscript, el método es Run.
  #9 (permalink)  
Antiguo 06/08/2004, 13:53
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
2.- Raro, pero no te ahogues en un vaso de agua usa el shell de wscript, el método es Run


esa me gustó.... un aire a mi ahogo plis...voy a buscar mal no estaría si compartieras... tus conocidas...de eso..

grax.. man
salu2
  #10 (permalink)  
Antiguo 06/08/2004, 13:58
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Set ws = CreateObject("wscript.shell")
ws.run "rutaynombredelarchivo.extensión"

Suerte!
  #11 (permalink)  
Antiguo 06/08/2004, 14:08
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Set WshShell = Server.CreateObject("WScript.Shell")
Cualquier_Cosa = WshShell.Run("C:\txt.txt", 1, TRUE)

lo probé asi y como me has dicho, pero no me aparece nada DE ESTA FORMA QUEDA CARGANDO INFINITAMENTE.

El archivo que deseo abrir originialmente son APR de ARcView.

Y la que me mencioneastes tu anteriormente no aparece nada.. como que carga pero nada...

ESO HAY QUE DEGISTRAR ALGO UNA DLL???
  #12 (permalink)  
Antiguo 06/08/2004, 14:17
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
tengo el bloqueo de script desactivado de mi ANTVrs.
  #13 (permalink)  
Antiguo 06/08/2004, 14:31
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Atendiendo a tu question, lo que realmente quieres es hacer una instancia de un determinado archivo, el hecho de abrirlo como una aplicacióndesde el servidor no es factible.

para abrir aplicaciones lo puedes hacer desde la máquina cliente, si no hay algún objeto que nos permita manejarlo internamente.
  #14 (permalink)  
Antiguo 06/08/2004, 14:32
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
si es un archivo de texto, porque no lo manipulas con FSO ????
  #15 (permalink)  
Antiguo 06/08/2004, 14:41
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
no es de texto es por eso necesito abrir archivos APR de arcView y por eso traté de hacerlo con una DLL ActiveX pero eso no me funcionó, o sea no me funciona de la forma de llamarlo en una DLL pero como un Proyecto VB EXE si funciona.

Pero bueno le dare un par de vueltas más para conocer..

Eso del Server.CreateObject("WScript.Shell") me abre cualquier tipo de docmuento a través de su respectivo software?????????


salu2
  #16 (permalink)  
Antiguo 06/08/2004, 14:42
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
No, no és un archivo de texto, es un projecto de ArcView. Bahh, en realidad si es un archivo de texto plano, pero contiene información que dicho soft debe leer para desplegar la información georeferenciada.

Una pregunta, Skatomundo, si le das doble click al archivo .APR... éste se abre normalmente o te manda un cartelito que dice "The project Documents could not be opened". Es que por ejemplo a mi, para abrir apr's, no puedo hacerlo de esa manera sino que debo abrir el ArcView y levantarlo desde allí (es decir "File -> Open project"). De lo contrario, me manda el error que te digo más arriba.
__________________
...___...
  #17 (permalink)  
Antiguo 06/08/2004, 14:43
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Private Sub Form_Load()
ShellExecute 0, "open", "C:\1.apr", vbNullString, vbNullString, 2
Unload Me
End Sub



De esa forma llamo y abro cualquier archivo con su soft. relacionado pero esto corresponde a un proyrcto VB EXE
  #18 (permalink)  
Antiguo 06/08/2004, 14:46
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
DaZu... Lo abre al hacer Click...
mm..
  #19 (permalink)  
Antiguo 06/08/2004, 14:48
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Tienes razón Skatomundo te abre cualquier aplicación es como la opcion ejecutar del botón de inicio, el problema es que necesitas a fuerzas un objeto que te permita manipularlos internamente, por ejemplo el word.application, el cual lo puedes manejar internamente, ya sea visiblemente o no.
  #20 (permalink)  
Antiguo 06/08/2004, 14:53
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por skatomundo
DaZu... Lo abre al hacer Click...
mm..
Aquí lo tengo instalado en W2000, XP y 98 y en todos los casos no se puede abrir de ninguna otra manera que no sea mediante "file -> open proyect". Tal vez sea un problema de la versión 3.2.. qué versión tenés?
__________________
...___...
  #21 (permalink)  
Antiguo 06/08/2004, 14:53
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Estoy viendo ahora eso de WSH.EXE Windows Script 5.6 for Windows 2000 and XP, esto tiene que ver con lo antes comentado??

ojalá encuentre salida.... porque será otro dia mas...
  #22 (permalink)  
Antiguo 06/08/2004, 15:45
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 21 años
Puntos: 0
Pregunta, para que quieres abrir ese archivo, no podrias explicar la finalidad, por que realmente no se que quieres hacer. Por eso tanta confusion.
  #23 (permalink)  
Antiguo 06/08/2004, 15:50
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
desde el principio.:
http://www.forosdelweb.com/showthrea...3&page=1&pp=15

danke
  #24 (permalink)  
Antiguo 06/08/2004, 16:29
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 21 años
Puntos: 0
Lo que entiendo es que con tu dll quieres abrir diversos tipos de archivos por el lado del servidor, mas no del cliente? de ahi me pregunta?
  #25 (permalink)  
Antiguo 06/08/2004, 16:59
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
sip..
http://www.aspfacil.com/articulos/componente.asp
  #26 (permalink)  
Antiguo 06/08/2004, 17:26
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Me da un ERROR cuando trato de ejecutarlo desde VB6 mi DLL:
Tipo de error:
Objeto Server, ASP 0178 (0x80070005)
Error en la llamada a Server.CreateObject al comprobar permisos. Se ha denegado el acceso a este objeto.
/plop/holamundo.asp, línea 13





<%

Dim oEjemplo
set oEjemplo = Server.CreateObject("Ejemplo.HolaMundo") 'linea 13
oEjemplo.DiHola
set oEjemplo = nothing
%>

en fin a que correspondería esto en todo caso cuando compilo y registro la dll no me arroja nada en el caso le coloque un msg y si se ve pero no abre el documento con el Shell..


Que sera que no se puede llamar el ShellExecute a través de una DLL..
ah?? kien me respondera con un SI o NO..?????????????

helpppppp
salu2
  #27 (permalink)  
Antiguo 07/08/2004, 11:59
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años, 10 meses
Puntos: 125
Sr. MODERADOR Quiero dar por cerrado el tema, no estoy vencido pero esto tendra que esperar ya que pasaron como varios dias sin resultado final, pero feliz de haber tenido tan buena concurrencia de comuneros interesados.

Gracias a todos y cualquier ratito dejo un ejemplo de DLL llamada desde ASP, pasando valores..

Lo encuentro interesante.

Salu2

PD: Cierre el tema..
  #28 (permalink)  
Antiguo 10/11/2009, 06:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Llamando Dll, pasando valor desde ASP

Hola Skatomundo, soy Miguel ¿Te acuerdas?

Respecto de as DLLs ActiveX el principal problema que tienen para acceder a los archivos es que en el entorno de IIS no tienen los permisos totales. Para solucionar esto se debe dar los permisos explícitamente, con ello vas a poder hacer lo que quieras... lo que se te ocurra. Para eso debes hacerlo desde Herramientas Administrativas, Abrir Servicio de componentes, crear una aplicacion COM vacía, luego dentro de ella crear un nuevo componente (ahí selecionas tu DLL). Debes fijarte que las propiedades del objeto COM, en la pestaña de seguridad no esté seleccionada Exigir comprobacion de accesos para esta plicacion. Pruebas y me cuentas como te va.
  #29 (permalink)  
Antiguo 10/11/2009, 07:58
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Llamando Dll, pasando valor desde ASP

Si después de 5 años no ha resulto ese problema, debería de cambiarse de profesión

Muy tarde tu consejo, por lo pronto este mensaje se cierra

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:07.