Exe Windev en ServiceNT |
Sujet: Exe Windev en ServiceNT par Tonton sur 9/2/2010 23:51:20 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 |