Evénement "onclick" qui ne se déclenche pas sur un gadget windows
Bonjour !
Je suis entrain de créer un gadget Windows pour gérer les services Windows afin de me faciliter la vie au boulot.
Le principe c'est d'avoir dans un tableau une liste de service avec :
- le nom
- l'état (démarrer ou arrêter)
- action (bouton pour démarrer ou arrêter)
Voici donc la page html :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <html>
<style>
body
{
width:300;
height:200;
}
</style>
<head>
<script src="js/Services.js" language="JavaScript"></script>
</head>
<body>
<table id="tableau" border="1" CELLSPACING=1>
<thead>
<tr>
<td style="width:200" align="center">Nom</td>
<td style="width:50" align="center">Etat</td>
<td style="width:50" align="center">Action</td>
</tr>
</thead>
</table>
<script language="JavaScript">
SearchServices();
</script>
<input type="button" align="right" onclick="SearchServices();" value="Actualiser"/>
</body>
</html> |
En gros j'ai un tableau de 3 colonnes, puis j'appelle la fonction SearchServices() pour remplir le tableau, et un bouton Actualiser qui appelle aussi la fonction SearchServices().
Coté JavaScript, j'ai un fichier Services.js avec la fonction SearchServices() :
Code:
1 2 3 4 5 6
| // Vider le tableau et rechercher les services
function SearchServices()
{
DeleteRows();
ServicesList();
} |
DeleteRows() supprime toutes les lignes du tableau (pas de souci de ce coté).
Par contre voici la fonction ServicesList() :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| function ServicesList()
{
// Initialisation de la commande dos pour la recherche de service
var wsShell = new ActiveXObject("WScript.Shell");
var cmd = wsShell.Exec("cmd /c sc query state= all");
var line;
var serviceName = "";
var id = 1;
// Pour chaque service trouvé
while (!cmd.StdOut.AtEndOfStream)
{
line = cmd.StdOut.ReadLine();
// Si on est sur "SERVICE_NAME"
if (line.substring(0, 12) == "SERVICE_NAME")
{
// Si le nom du service commence par "IS" ou "IP"
if ((line.substring(14, 19) == "IS-JA")) //|| (line.substring(14, 17) == "IP."))
{
serviceName = line.substring(14);
}
}
if (line.substring(8, 13) == "STATE")
{
if (serviceName != "")
{
// Ajouter le service dans le tableau
AddRow(id, serviceName, line.substring(29, 30));
id += 1;
serviceName = "";
}
}
}
} |
Elle permet, en passant par une ligne de commande, de retrouver tous les services Windows, puis je récupère que les services qui commence par "IS-JA" et je l'ajoute à mon tableau grâce à la fonction AddRow(id, name, etat) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| function AddRow(id, name, etat)
{
var tableau = document.getElementById("tableau");
// Ajout d'une nouvelle ligne
var ligne = tableau.insertRow(-1);
// Initialiser les cellules
var colonne1 = ligne.insertCell(0);
var colonne2 = ligne.insertCell(1);
var colonne3 = ligne.insertCell(2);
// Initialiser le bouton d'Action
var button = document.createElement("input");
button.type = "button";
button.name = "button" + id;
// Remplir la 1ére cellule avec le nom du service
colonne1.innerHTML += name;
// Remplir la 2éme et 3éme cellule suivant l'état du service
if (etat == 1)
{
colonne2.innerHTML += "Arrêter";
button.value = "Démarrer";
button.setAttribute("onclick", "Start(" + id + ")");
}
else
{
colonne2.innerHTML += "Démarrer";
button.value = "Arrêter";
button.setAttribute("onclick", "Stop(" + id + ")");
}
// Insérer le bouton dans le tableau
colonne3.appendChild(button);
} |
Ici j'ajoute donc une nouvelle ligne et remplit les 3 colonnes.
Par contre pour la colonne Action (3éme colonne), j'ajoute un bouton avec un événement "onclick" qui va soit exécuter la fonction Start(id) ou Stop(id).
Si je lance la page .html sur IE => tout fonctionne nikel, j'ai la liste des services et je peux peux les arrêter et démarrer.
Mais quand je transforme le tout en .gadget (zip du html, js, ...) le gadget s’exécute correctement (j'ai la liste des services), mais par contre l'événement "onclick" des boutons Démarrer et Arrêter du tableau ne fonctionne pas :-/
Par contre le bouton Actualiser en dessous du tableau fonctionne bien...
Du coup je ne sais que faire pour résoudre ce souci, et je ne connais pas très bien le JavaScript (j'ai commencé à apprendre Samedi :-S), du coup j'ai surement fait une erreur :cry:
Je vous remercie déjà d'avoir lu mon post en espérant avoir été le plus clair possible.