FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Sobre la función StartService y sus parámetros
Hola,
Existe en la unidad "WinSvc" una función de nombre "StartService". De la documentación en la ayuda de Win32: Código:
BOOL StartService( SC_HANDLE hService, // handle of service DWORD dwNumServiceArgs, // number of arguments LPCTSTR *lpServiceArgVectors // address of array of argument string pointers );
Ahora bien, suponiendo que un determinado Servicio requiera de algún parámetro... ¿cómo se los haríamos llegar? O sea, no entiendo cómo trabajar con el parámetro de tipo "lpServiceArgVectors" en la función "StartService". Entiendo que es un "puntero" lo que hay que pasar a la función, y de hecho podemos hacer algo así:
O como mucho se me ocurre esto:
Que acaso sea algo más acercado que lo anterior, porque al menos aquí indicamos que se le envía un parámetro al Servicio... pero, haciendo esto no podemos enviar más de un parámetro al Servicio (si es que funciona siquiera el que intentamos enviar, porque aunque "compila" no he podido probarlo de veras), y además de no poder enviar más parámetros en realidad es que estamos obviando el tipo "lpServiceArgVectors"... ¿Qué se os ocurre? ¿Alguien utilizó alguna vez el tipo "lpServiceArgVectors"? Disculpad el royo... se ve que la síntesis (de cualquier tipo) no es lo mío... ¡y gracias de antemano pataliebres! |
#2
|
||||
|
||||
El argumento lpServiceArgVectors no es mas que un array de PChar. Así que no tenemos mas que declarar un array y pasarlo como parámetro. Para esto supongo que podremos declarar un array fijo, uno dinámico, o por las malas utilizando punteros
Esta es la función que aparece en los trucos, pero modificada para admitir parámetros:
Ahora si alguien se anima, que lo implemente con arrays dinámicos Última edición por seoane fecha: 01-02-2007 a las 17:24:13. |
#3
|
||||
|
||||
Hola,
Flipante. Sin palabras. Muchas gracias Seoane. |
#4
|
||||
|
||||
Hola,
Seoane, seguro que estoy haciendo algo mal, porque en la línea:
Me "dice" el compilador que no son compatibles ambos tipos... Por otro lado, ¿esto otro funcionaría? Porque compilar compila y un Servicio sin argumentos lo inicia bien, pero, no he probado si funcionaría como se espera en un Servicio con parámetros...
¿O es una burrada? EDITO: Je, je, je... bueno... no puedo probarlo "realmente", pero, sí puedo incluir un par de parámetros "a ver qué pasa"... y lo que pasa es que empiezan a salir ventanas de error a diestro y siniestro... una detrás de otra y sin parar... "Access violation"... Última edición por dec fecha: 01-02-2007 a las 17:59:24. |
#5
|
||||
|
||||
Prueba algo así:
La variable para el parámetro
Rellenar los parámetros, la llamada y liberar
Un saludo. EDITO: Tarde, tarde, tarde,... pasé tres horas con el mensaje abierto y ya veo que lo tenéis encarrilado...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
Hola,
Vale... error mío... el código que pusiste es correcto Seoane, compila perfectamente, lo que ocurre es que estaba declarando las variables tal que así:
Cuando tú lo indicaste correctamente:
Todo correcto, pues. No puedo probar que funcionan los parámetros realmente, pero, sí puedo pasar parámetros "a ver qué pasa" sin que ahora se caiga el programa... ¡gracias otra vez, pues! |
#7
|
||||
|
||||
Neftali, ¿no se puede declarar lpServiceArgVectors como PStrArray en lugar de PChar para evitar el moldeo en cada asignación y hacerlo sólo al pasarlo a la función?
// Saludos |
#8
|
||||
|
||||
Cita:
Compila e instala el servicio. Ahora te preguntaras como puedes ver el resultado, para eso utiliza este programa de Mark Russinovich. Cuando ejecutes el servicio, en el DebugView aparecerán los parámetros con que lo has iniciado. |
#9
|
||||
|
||||
Hola,
Cita:
Je, je, je... pero, fuera de bromas... tal vez lo que digas queda más curioso... si bien es cierto que a mí al menos me lo tendrías que traducir un poquitín por lo menos. |
#10
|
||||
|
||||
Hola,
Cita:
Pero, como digo, ya está bien, leñe, que a lo mejor no es para tanto... de hecho todo empezó para un programilla que uso personalmente para controlar los Servicios de Apache y MySQL. PD. Adjunto la clase (o lo que sea), aunque no la considere terminada (ni lo estará nunca) y acaso en lugar de "TServicio" debería llamarse "TServicioWin32" o algo así... como poco. Última edición por dec fecha: 02-02-2007 a las 15:46:07. |
#11
|
||||
|
||||
Cita:
No hace mucho que estoy por este club, pero veo que no es un tema que se toque mucho. Y se me ocurren muchas cosas de que hablar: el control de un servicio en una maquina remota, la comunicación de un servicio con una aplicación de usuario, interactuar con el usuario actual, es decir con su desktop, teniendo en cuenta que los servicios interactivos se acabaron con el nuevo Vista, etc ... Si señor, hay mucho de que hablar sobre el tema. |
#12
|
||||
|
||||
Hola,
No, si eso es lo malo, precisamente, que habría que dedicarle a ello un tiempo considerable, además de un esfuerzo, una voluntad y demás... pero soy perfectamente consciente de ello. Bueno. Un poco. Cuando dije que no era para tanto me estaba refiriendo a mis necesidades únicamente. Es decir, en el Monitor de los Servicios de Apache y MySQL que programé para mi uso precisaba de una serie de funciones típicas para controlar un determinado Servicio. Me dio fuerte y conseguí escribir siguiendo la ayuda y no pocos ejemplos las funciones que necesitaba. Hace poco he retomado el Monitor de marras y he tratado de mejorarlo en algunos aspectos. Y lo he conseguido... pero ya empieza a ser demás, es decir, por ejemplo, la clase "TServicio" hace ya mucho más (independientemente ahora de si lo hace mejor o peor) de lo que necesita el programa Monitor. Y como por otro lado no es algo que me apasione (como a ti, que me parece estupendo) el tema de los Servicios.... pues por eso decía que no era para tanto, pero no porque el tema de los Servicios no de para mucho... todo lo contrario. |
#13
|
||||
|
||||
Cita:
No lo he probado, pero debe funcionar ¿no?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#14
|
||||
|
||||
Cita:
(SysInternals, como no... )
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#15
|
||||
|
||||
Cita:
// Saludos |
#16
|
||||
|
||||
Hola,
Pues me equivoqué entonces. Aunque es un poco raro, ¿no? |
#17
|
||||
|
||||
Cita:
Alguien aquí se ha despistado...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#18
|
||||
|
||||
Hola,
El raro soy yo... es decir, que soy el despistado. No había tu mensaje Neftalí, y de ahí mi confusión. Lo que ya roza lo absurdo es que hize por mirarlo... es decir, cuando repliqué a Román como lo hize fue, precisamente, porque había "revisado" el Hilo y no ví tu mensaje y entendí que Román se había confundido. Edito: Además de despistado no quiero ser maleducado: os pido disculpas a ambos Román y Neftalí. Última edición por dec fecha: 02-02-2007 a las 12:24:01. |
#19
|
||||
|
||||
No te preocupes, supuse que era algo por el estilo pero ayer cuando lo ví ya no tuve tiempo de responder.
// Saludos |
#20
|
|||
|
|||
Clase marabillosa
Cita:
Gracias..... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Parametros Opcionales no Parametros por defecto | Velia | Varios | 7 | 19-08-2006 15:18:42 |
Parámetros en ADO | Delfin | Conexión con bases de datos | 0 | 19-03-2005 00:02:36 |
parametros | rebollo75 | SQL | 3 | 23-11-2004 19:44:59 |
Parametros | jostrix | Varios | 1 | 31-10-2004 11:55:33 |
Parametros BDE | Red_Delphi | Conexión con bases de datos | 0 | 13-10-2003 10:18:05 |
|