[WD] Appli sans fenêtre

Le
paratge
Bonjour à tous,

Comment créer une icone dans la barre de tâches (comme WBADMIN) ?
J'ai créé une appli qui doit fonctionner en tant que serveur, en tâche
de fond, sans fenêtre.

Et le seul moyen que j'ai trouvé pour la faire tourner serait ce type de
solution, mais si vous en avez d'autres, je suis preneur ;)

Cordialement,
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques Bratières
Le #14607661
Le Tue, 18 Sep 2007 18:05:37 +0200, paratge
Bonjour à tous,

Comment créer une icone dans la barre de tâches (comme WBADMIN) ?
J'ai créé une appli qui doit fonctionner en tant que serveur, en tâche
de fond, sans fenêtre.

Et le seul moyen que j'ai trouvé pour la faire tourner serait ce type de
solution, mais si vous en avez d'autres, je suis preneur ;)

Cordialement,



Sysiconise ?

--
J.Bratières
paratge
Le #14607631
Jacques Bratières a écrit :
Le Tue, 18 Sep 2007 18:05:37 +0200, paratge
Bonjour à tous,

Comment créer une icone dans la barre de tâches (comme WBADMIN) ?
J'ai créé une appli qui doit fonctionner en tant que serveur, en tâche
de fond, sans fenêtre.

Et le seul moyen que j'ai trouvé pour la faire tourner serait ce type
de solution, mais si vous en avez d'autres, je suis preneur ;)

Cordialement,



Sysiconise ?




Non, mais merci Jacques,

Tu m'as donné la piste et j'ai trouvé ce matin ( la nuit portant conseil...)
Il suffit de créer une fenêtre invisible et de rajouter dans son
initialisation
SysIconeAjoute(Icone,MenuContextuel,Procédure)
Ce qui permet d'avoir un programme qui tourne en tâche de fond.

Pour ceux à qui ça peut servir...
Romain PETIT
Le #14607621
paratge avait énoncé :
Pour ceux à qui ça peut servir...



Si ton appli doit fonctionner sur un serveur, ton programme doit
pouvoir être lancé sans ouverture de session (le sysIconeAjoute ne va
pas t'aider à faire ça).
Dans ce cas, il faut que ton appli soit un service (pas possible
directement avec WD à ma connaissance) ou managé par un service comme
XYNTService.

http://groups.google.com/group/fr.comp.developpement.agl.windev/msg/d1680b4a70cf9cd5?hlfr&

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Romain PETIT
Le #14607591
Gilles a formulé la demande :

Et WDService c'est fait pour qui? ;)



Mauvaise solution...

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Romain PETIT
Le #14607581
Romain PETIT a exposé le 19/09/2007 :
Gilles a formulé la demande :

Et WDService c'est fait pour qui? ;)



Mauvaise solution...



Et ce n'est pas moi qui le dit...
http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_frm/thread/1bbe5b6ea9448faf/70ca8b5c73017e46?#70ca8b5c73017e46

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Jacques TREPP
Le #14607571
"Romain PETIT" news:
Romain PETIT a exposé le 19/09/2007 :
Gilles a formulé la demande :

Et WDService c'est fait pour qui? ;)



Mauvaise solution...



Et ce n'est pas moi qui le dit...
http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_frm/thread/1bbe5b6ea9448faf/70ca8b5c73017e46?#70ca8b5c73017e46




Bonjour,
je re-confirme 2 ans plus tard que mon service est toujours ... en service !
:)



--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)
Romain PETIT
Le #14607471
Gilles vient de nous annoncer :
Ce n'est pas parce qu'ils racontent des aneries qu'ils faut les croire sur
parole.



La mise en place de WDService quand on n'a pas de doc (y'en a-t-il une
?) est prise de tête.
Il m'a fallut 5 min pour comprendre comment faire fonctionner XYNT.
Le choix a été vite pris le jour où j'ai voulu passer ma première appli
en service.

On peut lancer autant de services qu'on veut sur la même machine avec
WDService, ca marche sans aucun problème, on peut les nommer intelligemment
(cf renommer l'exe WDService pour voir correctement les noms de process,
chose qu'on ne peut pas faire avec XYmachin)



Bé si, je fais ça avec mon XYNT .
Je l'ai même intégré dans mes exe directement (merci Michel)
Il me suffit de lancer mon exe windev avec une ligne de commande
"-installeservice" pour que :
- XYTNTservice soit extrait, le fichier INI configuré à la volée
- le service installé avec le nom qui va bien,
- le service automatiquement lancé dans la foulée...

j'ai fait des services qui tournent sans aucun problème depuis des lustres,
et que ce soit en version 7.5, 8, 9, 10... (pas encore en 11, mais je ne vois
pas ce que ça va changer)



C'est bien ça le problème avec les solutions PCMachin, le jour où ça
change...

Bref, faudrait arrêter de relayer les mêmes aneries pendant des années,
WDService est la meilleur solution, car elle se base directement sur la WDL
et pas sur un EXE.



Beurk, justement.
Le XYNT, ce n'est pas exclusif aux applis WD... et tu peux modifier et
recompiler le source si ça te chante.

Ce qui signifie qu'on n'est pas obligé de programmer de
manière "bidouillée", mais qu'on fait véritable un service.



La bidouille est plutôt du côté WD... qui n'a jamais été en mesure
d'offrir la possibilité de créer de véritables services (cf
callbacks...)

Parce que ton XYNmachin t'oblige à faire une boucle de cochon dans ton exe.



En quoi une boucle sans fin est-elle cochone ?

Un programme monitoré par WDService fonctionne autrement ?

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Jacques TREPP
Le #14607411
"Gilles" news:


Enfin, le débat est stérile, chacun utilise bien la solution qu'il veut,
mais il faut arrêter de colporter les infos de ton thread google groups,
il ne contient rien d'exact.

Gilles.



salut,

XYNTSERVICE fonctionne très bien. en tout cas, pour ce qui me concerne.
Mais je dis peut-être des aneries ? j'assume.
Personne ne t'oblige à l'utiliser.
Mais, même si tu n'aimes pas, n'en dégoutes pas les autres.

Et quand tu parles de "s'adapter", rassures toi : on ne fait que ça.
quand ça n'est pas du "contournement".

Alors, les leçons ...

cordialement


--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)
Daniel
Le #14607401
Gilles a écrit :
Il se trouve que Romain PETIT a formulé :
Romain PETIT a exposé le 19/09/2007 :
Gilles a formulé la demande :

Et WDService c'est fait pour qui? ;)



Mauvaise solution...



Et ce n'est pas moi qui le dit...
http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_frm/thread/1bbe5b6ea9448faf/70ca8b5c73017e46?#70ca8b5c73017e46


A+



Ce n'est pas parce qu'ils racontent des aneries qu'ils faut les croire
sur parole.

On peut lancer autant de services qu'on veut sur la même machine avec
WDService, ca marche sans aucun problème, on peut les nommer
intelligemment (cf renommer l'exe WDService pour voir correctement les
noms de process, chose qu'on ne peut pas faire avec XYmachin)

j'ai fait des services qui tournent sans aucun problème depuis des
lustres, et que ce soit en version 7.5, 8, 9, 10... (pas encore en 11,
mais je ne vois pas ce que ça va changer)

Bref, faudrait arrêter de relayer les mêmes aneries pendant des années,
WDService est la meilleur solution, car elle se base directement sur la
WDL et pas sur un EXE. Ce qui signifie qu'on n'est pas obligé de
programmer de manière "bidouillée", mais qu'on fait véritable un service.

Parce que ton XYNmachin t'oblige à faire une boucle de cochon dans ton exe.

Bref....




As tu déjà utilisé XYNTService?

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Romain PETIT
Le #14604001
Gilles a formulé ce jeudi :
Il y a un projet exemple, ca m'a suffit. Je ne pense pas être plus malin
qu'un autre.



Déjà, il faut le trouver ce projet exemple...
Amuse-toi à chercher "service" ou même "WDService" dans l'aide...
En 7.5, il n'apparait même pas dans les exemples accessibles depuis
l'éditeur.

En plus, il y a une référence à un certain projet WDserNT qui n'a
jamais existé (en tout cas en 7/7.5 le fichier projet WDSerNT existe
mais il est vide).
"NB : Pour créer son propre service en WinDev, se reporter au projet
WDSerNT."
Ca en déroute plus d'un...

Il y a les newsgroups aussi.



Oui, heureusement pour ceux qui veulent utiliser cette solution (parce
qu'ils n'en connaissent pas d'autres ?) que les NG pallient à la
documention pour le moins absconce.

C'est bien ça le problème avec les solutions PCMachin, le jour où ça
change...





Hé bien on s'adapte.
Et pour l'instant, ca n'a pas changé en 4 versions...



Ah bon ?
http://forum.pcsoft.fr/thread.awp?threadid8254&forum=pcsoft.fr.windev&gmt=P0100&result=../search.awp?keyw=WDservice%26method=1%2c1%26forum=pcsoft.fr.windev%26setoptions=get_results#108254


Useless. On parle d'un service fait en Windev, qu'est-ce que ça peut faire
que XYNT puisse lancer des exe compilés avec un autre langage?



Ca en fait un outil plus universel que WDService.
Ca fait une dépendance de moins à un éditeur qui communique peu sur les
problèmes rencontrés avec ses produits.

Et l'arrêt du service il est géré comment?
A part en tuant l'exe et la boucle en plein milieu...?



Ca ne pose pas de problème.
XYNT envoi le message WM_QUIT à l'appli...
Hé oui, ça tu peux le savoir parce que tu as les sources...

Le code n'est vraiment pas compliqué, voilà la partie en question,
Xiangyang Liu (l'auteur) ne m'en voudra pas de le citer :

void EndProcess(int nIndex)
{
// end a program started by the service
if(pProcInfo[nIndex].hProcess)
{
char pItem[nBufferSize+1];
sprintf(pItem,"Process%d",nIndex);
char pPause[nBufferSize+1];
GetPrivateProfileString(pItem,"PauseEnd","100",pPause,nBufferSize,pInitFile);
int nPauseEnd = atoi(pPause);
// post a WM_QUIT message first
PostThreadMessage(pProcInfo[nIndex].dwThreadId,WM_QUIT,0,0);
// sleep for a while so that the process has a chance to terminate
itself
::Sleep(nPauseEnd>0?nPauseEnd:50);
// terminate the process by force
TerminateProcess(pProcInfo[nIndex].hProcess,0);
pProcInfo[nIndex].hProcess = 0;
}
}


Un programme monitoré par WDService fonctionne autrement ?





Au moins il sait gérer la fin du service... ca permet d'arrêter le service
proprement. Je ne vois pas comment c'est possible avec une boucle infinie qui
n'a aucune idée de la manière dont elle a été lancée.
Ca ne te dérange pas d'exploser un traitement en plein milieu? Moi si.



Interception du WM_QUIT, pas de problème...

L'interêt principal d'un outil comme Windev, c'est d'utiliser les
possibilités intégrées offertes, et WDService en fait partie.



Intégré ? Bé non justement, ils ont sorti cette rustine parce qu'il
n'est pas possible d'utiliser WD directement.
WDService est écrit également en C++ (C ?) et il fait la même chose, en
moins pratique (parce qu'il faut utiliser une WDL, créer 3 procédures,
avoir les DLL WD acessibles...) et qui necessite une recompil en
changeant de version de WD.

Enfin, le débat est stérile, chacun utilise bien la solution qu'il veut, mais
il faut arrêter de colporter les infos de ton thread google groups, il ne
contient rien d'exact.



Ca aura eu au moins le mérite d'apporter de nouveaux éléments sur les
façons de fonctionner.

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Publicité
Poster une réponse
Anonyme