![]() |
Ejecutar exe desde servicio
Hola amigüitos, estoy creando un servicio desde delphi 7 para que cuando se inserta un cd me lo detecte y ejecute un .exe que hay en el cd.
Ahora mismo pongo un timer cada X segundos que intente verificar si existe un fichero, con el fileexist nunca me dice que esta el fichero y ya ni hablar de intentar ejecutarlo, ya que dentro de un servicio dicen que solo sirve el createprocess y no me va tampoco. Aqui pongo el codigo pa detectar el exe .... codigo:
Alguna idea?!?! |
Bueno, lo primero que veo es que el programa toma como unidad de cd la unidad 'D:\', pero eso no es así en todos los ordenadores. Además, eso no detecta si se acaba de introducir un cd. Aunque por el código comentado parece que intentaste algo bueno :)
El caso es detectar cuándo se introduce un CD, y saber a qué unidad le corresponde (esto es, D, E, F, G, H....). Para eso nuestro desaparecido amigo roman hizo un componente genial. Lo tiene en su página: http://romansg.net/index.php?pg=delphi_componentes. Y ya ahí, cuando se introduzca un CD, comprobar si existe el ejecutable (o cualquier otro archivo) y hacer lo que quieras con él :D Saludos. |
Hola IxMike ...
Hola IxMike, tengo el gran programa de nuestro amigo Roman, el problema es que en todos los ordenadores que lo he probado da una unidad mas de la que le toca ... por ejemplo si mi cd esta en el d:\ el me dice el e:\, y si lo tengo en j:\ me da la k:\ .
El programa con ese componente lo tengo preparado, pero he hecho este para comprobar si un fileexist a un fichero de un cd te lo encuentra ... y no me lo encuentra. Otro problema será despues ejecutar el exe desde el servicio, ya que como he comentado ahora mismo no me va .. por que me dice que no encuentra el fichero. Un saludo. Gracias. |
Bueno, es lógico que si no encuentra el archivo no te funcione :D
para ejecutar un .exe usa WinExec o ShellExecute (mira la ayuda de Delphi si no los conoces aún). En cuanto al problema con el componente de roman, si te da ese fallo lo que tienes que hacer es restar 1 a la letra de la unidad (sí, restar). Se haría así: drive:=Chr(Ord(drive)-1); Espero que con esto ya esté todo solucionado. :) Saludos. |
Hola tio
Hola, gracias por contestar .... pero dentro de un servicio para ejecutar algo solo funciona el createprocess, los otros 2 no funcionan. Lo he leido por ahi.
Aun usando este comando no se me ejecuta lo que hay dentro del cd ya que no me lo reconoce con fileexists |
La franja horaria es GMT +2. Ahora son las 09:30:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi