|
Exe Windev en ServiceNT |
|
---|---|---|
Stagiaire WDF
Inscrit:
18/11/2004 16:44 De idf
Post(s): 8
|
Bonjour,
voilà je voudrais mettre un executable windev en service NT, en utilisant les API Windev (en aucun cas WDService ou autre dll annexe) Le gestion d'un service NT (install, demarrage, arret, statut) ne pose pas de problème. pour qu'un executable windev marche en service NT, il doit dialoguer avec le Controleur de Service Windows SC Controller. et au demarrage du service lui dire, Ok je tourne, et c'est là que je bloque à l'initialisation projet, je mets ce code : SERVICE_STATUS est une structure dwServiceType est un entier dwCurrentState est un entier dwControlsAccepted est un entier dwWin32ExitCode est un entier dwServiceSpecificExitCode est un entier dwCheckPoint est un entier dwWaitHint est un entier FIN ServiceStatus est un SERVICE_STATUS SERVICES_ACTIVE_DATABASE est une chaîne = "ServicesActive" ch_Nom_Serveur est une chaîne = NetNomMachine() SC_MANAGER_ALL_ACCESS est un entier = 0xF003F SERVICE_ALL_ACCESS est un entier = 0xF01FF e_hSCManager est un entier = 0 e_hService est un entier = 0 ch_Nom_Service est une chaîne = "Aaa_Test" e_hSCManager = AppelDLL32("ADVAPI32.DLL", "OpenSCManagerA", &ch_Nom_Serveur, &SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS) SI e_hSCManager = 0 ALORS Trace("Pas OpenSCManagerA : ") FIN e_hService = AppelDLL32("ADVAPI32.DLL", "OpenServiceA", e_hSCManager, &ch_Nom_Service, SERVICE_ALL_ACCESS) SI e_hService = 0 ALORS Trace("Pas OpenServiceA : ") FIN ret est un entier ServiceStatus:dwCurrentState = SERVICE_RUNNING ret = AppelDLL32("ADVAPI32.DLL", "SetServiceStatus", e_hService, &ServiceStatus) ret est toujours à 0, je n'arrive pas à faire dialoguer l'exe et le SCManager, j'ai essayé une autre methode sans succès : 1 - OpenSCManagerA 2 - OpenServiceA 3 - Init de structure SERVICE_STATUS ServiceStatus:dwServiceType = SERVICE_WIN32_OWN_PROCESS ServiceStatus:dwCurrentState = SERVICE_START_PENDING ServiceStatus:dwControlsAccepted = SERVICE_ACCEPT_STOP OR SERVICE_ACCEPT_SHUTDOWN OR SERVICE_ACCEPT_PAUSE_CONTINUE ServiceStatus:dwWin32ExitCode = 0 ServiceStatus:dwServiceSpecificExitCode = 0 ServiceStatus:dwCheckPoint = 0 ServiceStatus:dwWaitHint = 0 4 - RegisterServiceCtrlHandlerA 5 - Changement de status ServiceStatus:dwCurrentState = SERVICE_RUNNING ServiceStatus:dwControlsAccepted = SERVICE_ACCEPT_STOP_PAUSE_CONTINUE 6 - SetServiceStatus et une autre méthode en c : http://www.tenouk.com/ModuleEE.html Sinon pire des cas j'ai un code VB6 qui marche avec récupération des evenements du SCManager (CreateEventW), mais j'avoue j'ai du mal à convertir en WDLangage si quelqu'un à un code de communication avec le SCManager, je prends Merci de l'aide Bye
Contribution le : 09/02/2010 23:51
Edité par Tonton sur 10/2/2010 0:15:11
|
|
_________________
TontonPolak was Here... |
||
|
Re: Exe Windev en ServiceNT |
|
---|---|---|
Stagiaire WDF
Inscrit:
18/11/2004 16:44 De idf
Post(s): 8
|
Je m'auto-Réponds,
1 solution qui marche mais pas satisfaisante, car l'Arret du Service n'est pas géré, avec srvany.exe et instsrv.exe de Microsoft, qui permets de mettre n'importe quel executable en Service mais sans gestion des evenements du Controller SCManager j'envois la méthode ça pourra servir : Création Service : ------------------ instsrv Mon_Service "C:\srvany.exe" Modifie Clé Base de Registre : ------------------------------ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Nom du Service(Mon_Service) Créer Clé "Parameters" Créer Valeur Chaine "Application" = C:\Mes Projets\Mon Projet\Exe\MonExe_Srv.exe Suppression Service : --------------------- instsrv Mon_Service Remove Dans le Code de MonExe_Srv.exe, on interroge le status du Service toutes les secondes, marche pour tous les statut sauf "Démarrage en cours", "Arret en cours", "Arret" Je cherche toujours à capturer avec windev les evenements (Démarrage, en cours, Arret, en cours ou Pause, en cours)du Controller SCManager Il y a une grosse demande là dessus, la solution existe car développer en VB6 et marche parfaitement voici l'exemple en Download : http://dl.free.fr/tWGmZIJFR Merci de votre aide Tonton
Contribution le : 11/02/2010 00:33
Edité par Tonton sur 11/2/2010 0:48:33
|
|
_________________
TontonPolak was Here... |
||
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.