Bonjour,
je viens d'écrire une application en VB6, dont un programme est chargé
d'envoyer un message windows à toutes les fenetres d'un certain type
de la machine.
Cela marche très bien avec EnumWindow, mais seulement aussi longtemps
qu'on est sans Terminal.
Sous Terminal server, on ne trouve que les fenetres de la session
courante, pas celles des autres sessions.
Comment faire ?
Bonjour,
je viens d'écrire une application en VB6, dont un programme est chargé
d'envoyer un message windows à toutes les fenetres d'un certain type
de la machine.
Cela marche très bien avec EnumWindow, mais seulement aussi longtemps
qu'on est sans Terminal.
Sous Terminal server, on ne trouve que les fenetres de la session
courante, pas celles des autres sessions.
Comment faire ?
Bonjour,
je viens d'écrire une application en VB6, dont un programme est chargé
d'envoyer un message windows à toutes les fenetres d'un certain type
de la machine.
Cela marche très bien avec EnumWindow, mais seulement aussi longtemps
qu'on est sans Terminal.
Sous Terminal server, on ne trouve que les fenetres de la session
courante, pas celles des autres sessions.
Comment faire ?
Philippe wrote:Bonjour,
je viens d'écrire une application en VB6, dont un programme est chargé
d'envoyer un message windows à toutes les fenetres d'un certain type
de la machine.
Cela marche très bien avec EnumWindow, mais seulement aussi longtemps
qu'on est sans Terminal.
Sous Terminal server, on ne trouve que les fenetres de la session
courante, pas celles des autres sessions.
C'est normal! Le principe de Terminal Server, c'est de fournir des espaces
de travail (Windows station / desktop) *séparés* pour les différents
utilisateurs, et qu'ils ne puissent pas interagir les uns avec les autres!Comment faire ?
A priori, la seule solution c'est d'avoir un "agent" qui a la possibilité
d'ouvrir les desktops de chaque session et qui fasse l'EnumWindow dans
chaque desktop. Ce devrait très probablement être un service (pour avoir les
droits nécessaires).
Ceci dit, c'est un peu usine à gaz et c'est surtout complètement contraire à
l'esprit même de Terminal Server (sans parler des implications de sécurité).
Philippe wrote:
Bonjour,
je viens d'écrire une application en VB6, dont un programme est chargé
d'envoyer un message windows à toutes les fenetres d'un certain type
de la machine.
Cela marche très bien avec EnumWindow, mais seulement aussi longtemps
qu'on est sans Terminal.
Sous Terminal server, on ne trouve que les fenetres de la session
courante, pas celles des autres sessions.
C'est normal! Le principe de Terminal Server, c'est de fournir des espaces
de travail (Windows station / desktop) *séparés* pour les différents
utilisateurs, et qu'ils ne puissent pas interagir les uns avec les autres!
Comment faire ?
A priori, la seule solution c'est d'avoir un "agent" qui a la possibilité
d'ouvrir les desktops de chaque session et qui fasse l'EnumWindow dans
chaque desktop. Ce devrait très probablement être un service (pour avoir les
droits nécessaires).
Ceci dit, c'est un peu usine à gaz et c'est surtout complètement contraire à
l'esprit même de Terminal Server (sans parler des implications de sécurité).
Philippe wrote:Bonjour,
je viens d'écrire une application en VB6, dont un programme est chargé
d'envoyer un message windows à toutes les fenetres d'un certain type
de la machine.
Cela marche très bien avec EnumWindow, mais seulement aussi longtemps
qu'on est sans Terminal.
Sous Terminal server, on ne trouve que les fenetres de la session
courante, pas celles des autres sessions.
C'est normal! Le principe de Terminal Server, c'est de fournir des espaces
de travail (Windows station / desktop) *séparés* pour les différents
utilisateurs, et qu'ils ne puissent pas interagir les uns avec les autres!Comment faire ?
A priori, la seule solution c'est d'avoir un "agent" qui a la possibilité
d'ouvrir les desktops de chaque session et qui fasse l'EnumWindow dans
chaque desktop. Ce devrait très probablement être un service (pour avoir les
droits nécessaires).
Ceci dit, c'est un peu usine à gaz et c'est surtout complètement contraire à
l'esprit même de Terminal Server (sans parler des implications de sécurité).
>
Disons que l'objectif, est que plusieurs utlisateurs visualisent un écran
de controle. Chaque fois qu'un nouvel enregistrement arrive dans la base
(alerte), il faut que le prog qui l'inscript avertisse tous les programmes
de controls. Comment faire ? Des messages au processus ou thread en VB, ca
n'a jamais été envisagé par les concepteurs de vb. J'ai essayé plusieurs
API, mais ca ne mene à rien.
Pour l'instant c'est la deche complete. J'envisage effectivement d'écrire
un service (en C cette fois!) auquel les prog de controle se connecte par
IP (tcp ou udp), et qui avertira ceux-ci dès qu'il se passe quelque chose.
Il faudra bien sur que ce quelque chose se manifeste auprès du service....
mais le temps presse comme d'hab.
Philippe
>
Disons que l'objectif, est que plusieurs utlisateurs visualisent un écran
de controle. Chaque fois qu'un nouvel enregistrement arrive dans la base
(alerte), il faut que le prog qui l'inscript avertisse tous les programmes
de controls. Comment faire ? Des messages au processus ou thread en VB, ca
n'a jamais été envisagé par les concepteurs de vb. J'ai essayé plusieurs
API, mais ca ne mene à rien.
Pour l'instant c'est la deche complete. J'envisage effectivement d'écrire
un service (en C cette fois!) auquel les prog de controle se connecte par
IP (tcp ou udp), et qui avertira ceux-ci dès qu'il se passe quelque chose.
Il faudra bien sur que ce quelque chose se manifeste auprès du service....
mais le temps presse comme d'hab.
Philippe
>
Disons que l'objectif, est que plusieurs utlisateurs visualisent un écran
de controle. Chaque fois qu'un nouvel enregistrement arrive dans la base
(alerte), il faut que le prog qui l'inscript avertisse tous les programmes
de controls. Comment faire ? Des messages au processus ou thread en VB, ca
n'a jamais été envisagé par les concepteurs de vb. J'ai essayé plusieurs
API, mais ca ne mene à rien.
Pour l'instant c'est la deche complete. J'envisage effectivement d'écrire
un service (en C cette fois!) auquel les prog de controle se connecte par
IP (tcp ou udp), et qui avertira ceux-ci dès qu'il se passe quelque chose.
Il faudra bien sur que ce quelque chose se manifeste auprès du service....
mais le temps presse comme d'hab.
Philippe
Disons que l'objectif, est que plusieurs utlisateurs visualisent un
écran de controle. Chaque fois qu'un nouvel enregistrement arrive dans
la base (alerte), il faut que le prog qui l'inscript avertisse tous les
programmes de controls. Comment faire ? Des messages au processus ou
thread en VB, ca n'a jamais été envisagé par les concepteurs de vb. J'ai
essayé plusieurs API, mais ca ne mene à rien.
Disons que l'objectif, est que plusieurs utlisateurs visualisent un
écran de controle. Chaque fois qu'un nouvel enregistrement arrive dans
la base (alerte), il faut que le prog qui l'inscript avertisse tous les
programmes de controls. Comment faire ? Des messages au processus ou
thread en VB, ca n'a jamais été envisagé par les concepteurs de vb. J'ai
essayé plusieurs API, mais ca ne mene à rien.
Disons que l'objectif, est que plusieurs utlisateurs visualisent un
écran de controle. Chaque fois qu'un nouvel enregistrement arrive dans
la base (alerte), il faut que le prog qui l'inscript avertisse tous les
programmes de controls. Comment faire ? Des messages au processus ou
thread en VB, ca n'a jamais été envisagé par les concepteurs de vb. J'ai
essayé plusieurs API, mais ca ne mene à rien.
On Wed, 05 Jan 2005 23:50:40 +0100, Philippe Michel wrote:Disons que l'objectif, est que plusieurs utlisateurs visualisent un
écran de controle. Chaque fois qu'un nouvel enregistrement arrive
dans la base (alerte), il faut que le prog qui l'inscript avertisse
tous les programmes de controls. Comment faire ? Des messages au
processus ou thread en VB, ca n'a jamais été envisagé par les
concepteurs de vb. J'ai essayé plusieurs API, mais ca ne mene à rien.
ce ne serait pas plutôt à la base de prévenir les clients qu'un
enregistrement est arrivé, par une procédure stockée et un
evenement-machin ( dont j'ai oublié le nom, mais vous allez le retrouver).
évidemment, il doit falloir utiliser autre chose qu'access ...
On Wed, 05 Jan 2005 23:50:40 +0100, Philippe Michel <phm@nospam.org> wrote:
Disons que l'objectif, est que plusieurs utlisateurs visualisent un
écran de controle. Chaque fois qu'un nouvel enregistrement arrive
dans la base (alerte), il faut que le prog qui l'inscript avertisse
tous les programmes de controls. Comment faire ? Des messages au
processus ou thread en VB, ca n'a jamais été envisagé par les
concepteurs de vb. J'ai essayé plusieurs API, mais ca ne mene à rien.
ce ne serait pas plutôt à la base de prévenir les clients qu'un
enregistrement est arrivé, par une procédure stockée et un
evenement-machin ( dont j'ai oublié le nom, mais vous allez le retrouver).
évidemment, il doit falloir utiliser autre chose qu'access ...
On Wed, 05 Jan 2005 23:50:40 +0100, Philippe Michel wrote:Disons que l'objectif, est que plusieurs utlisateurs visualisent un
écran de controle. Chaque fois qu'un nouvel enregistrement arrive
dans la base (alerte), il faut que le prog qui l'inscript avertisse
tous les programmes de controls. Comment faire ? Des messages au
processus ou thread en VB, ca n'a jamais été envisagé par les
concepteurs de vb. J'ai essayé plusieurs API, mais ca ne mene à rien.
ce ne serait pas plutôt à la base de prévenir les clients qu'un
enregistrement est arrivé, par une procédure stockée et un
evenement-machin ( dont j'ai oublié le nom, mais vous allez le retrouver).
évidemment, il doit falloir utiliser autre chose qu'access ...
Disons que l'objectif, est que plusieurs utlisateurs visualisent un écran
de controle. Chaque fois qu'un nouvel enregistrement arrive dans la base
(alerte), il faut que le prog qui l'inscript avertisse tous les programmes
de controls. Comment faire ? Des messages au processus ou thread en VB, ca
n'a jamais été envisagé par les concepteurs de vb. J'ai essayé plusieurs
API, mais ca ne mene à rien.
Pour l'instant c'est la deche complete. J'envisage effectivement d'écrire
un service (en C cette fois!) auquel les prog de controle se connecte par
IP (tcp ou udp), et qui avertira ceux-ci dès qu'il se passe quelque chose.
Il faudra bien sur que ce quelque chose se manifeste auprès du service....
mais le temps presse comme d'hab.
Philippe
Salut,
Tu peux partager un event entre plusieurs process.
Comme l'indique la doc de CreateEvent tu peux même préciser si ce mutex est
visible entre les sessions Terminal Server ou non.
Tu peux aussi partager un memory mapped file dans l'espace système, le
mécanisme le plus simple pour partager de l'information 1 vers n.
Voir le code plus bas ou tu peux récupérer le projet ici:
http://www.xtware.com/client-server.zip
Rémi
Disons que l'objectif, est que plusieurs utlisateurs visualisent un écran
de controle. Chaque fois qu'un nouvel enregistrement arrive dans la base
(alerte), il faut que le prog qui l'inscript avertisse tous les programmes
de controls. Comment faire ? Des messages au processus ou thread en VB, ca
n'a jamais été envisagé par les concepteurs de vb. J'ai essayé plusieurs
API, mais ca ne mene à rien.
Pour l'instant c'est la deche complete. J'envisage effectivement d'écrire
un service (en C cette fois!) auquel les prog de controle se connecte par
IP (tcp ou udp), et qui avertira ceux-ci dès qu'il se passe quelque chose.
Il faudra bien sur que ce quelque chose se manifeste auprès du service....
mais le temps presse comme d'hab.
Philippe
Salut,
Tu peux partager un event entre plusieurs process.
Comme l'indique la doc de CreateEvent tu peux même préciser si ce mutex est
visible entre les sessions Terminal Server ou non.
Tu peux aussi partager un memory mapped file dans l'espace système, le
mécanisme le plus simple pour partager de l'information 1 vers n.
Voir le code plus bas ou tu peux récupérer le projet ici:
http://www.xtware.com/client-server.zip
Rémi
Disons que l'objectif, est que plusieurs utlisateurs visualisent un écran
de controle. Chaque fois qu'un nouvel enregistrement arrive dans la base
(alerte), il faut que le prog qui l'inscript avertisse tous les programmes
de controls. Comment faire ? Des messages au processus ou thread en VB, ca
n'a jamais été envisagé par les concepteurs de vb. J'ai essayé plusieurs
API, mais ca ne mene à rien.
Pour l'instant c'est la deche complete. J'envisage effectivement d'écrire
un service (en C cette fois!) auquel les prog de controle se connecte par
IP (tcp ou udp), et qui avertira ceux-ci dès qu'il se passe quelque chose.
Il faudra bien sur que ce quelque chose se manifeste auprès du service....
mais le temps presse comme d'hab.
Philippe
Salut,
Tu peux partager un event entre plusieurs process.
Comme l'indique la doc de CreateEvent tu peux même préciser si ce mutex est
visible entre les sessions Terminal Server ou non.
Tu peux aussi partager un memory mapped file dans l'espace système, le
mécanisme le plus simple pour partager de l'information 1 vers n.
Voir le code plus bas ou tu peux récupérer le projet ici:
http://www.xtware.com/client-server.zip
Rémi
Merci pour ta réponse, je suis entrain de réetudier l'option Event. Mais
je pense qu'il y a 3 inconvénients:
1- est-ce praticable en vb6, ou vais-je bloquer l'appli jusqu'à ce qu'un
evenement survienne ?
2- Lorsqu'un server declanche un évenement, est-ce que les X clients
derrières seront informés de l'évenement, ou seulement le premier ?
3- S'il faut un evenement par client, je ne sais jamais combien de client
sont courament executés....
Merci pour ta réponse, je suis entrain de réetudier l'option Event. Mais
je pense qu'il y a 3 inconvénients:
1- est-ce praticable en vb6, ou vais-je bloquer l'appli jusqu'à ce qu'un
evenement survienne ?
2- Lorsqu'un server declanche un évenement, est-ce que les X clients
derrières seront informés de l'évenement, ou seulement le premier ?
3- S'il faut un evenement par client, je ne sais jamais combien de client
sont courament executés....
Merci pour ta réponse, je suis entrain de réetudier l'option Event. Mais
je pense qu'il y a 3 inconvénients:
1- est-ce praticable en vb6, ou vais-je bloquer l'appli jusqu'à ce qu'un
evenement survienne ?
2- Lorsqu'un server declanche un évenement, est-ce que les X clients
derrières seront informés de l'évenement, ou seulement le premier ?
3- S'il faut un evenement par client, je ne sais jamais combien de client
sont courament executés....
Pas besoin, l'exemple fonctionne avec autant de client que tu veux, dans la
limite des ressources de la machine.
Pas besoin, l'exemple fonctionne avec autant de client que tu veux, dans la
limite des ressources de la machine.
Pas besoin, l'exemple fonctionne avec autant de client que tu veux, dans la
limite des ressources de la machine.
Remi Thomas wrote:Pas besoin, l'exemple fonctionne avec autant de client que tu veux,
dans la limite des ressources de la machine.
chuis entrain de tester, mais ton server plante sur la ligne
memcpy(exchangeSpace, &mes, sizeof(Message1));
dès que je tape une touche
Je compile en visual studio 6.0 sp ... ca ne vient pas de là tout de meme.
Remi Thomas wrote:
Pas besoin, l'exemple fonctionne avec autant de client que tu veux,
dans la limite des ressources de la machine.
chuis entrain de tester, mais ton server plante sur la ligne
memcpy(exchangeSpace, &mes, sizeof(Message1));
dès que je tape une touche
Je compile en visual studio 6.0 sp ... ca ne vient pas de là tout de meme.
Remi Thomas wrote:Pas besoin, l'exemple fonctionne avec autant de client que tu veux,
dans la limite des ressources de la machine.
chuis entrain de tester, mais ton server plante sur la ligne
memcpy(exchangeSpace, &mes, sizeof(Message1));
dès que je tape une touche
Je compile en visual studio 6.0 sp ... ca ne vient pas de là tout de meme.
Philippe wrote:
j'ai trouvé je viens d'enlever le douche BS pour un BS simple dans les
noms de share et d'event. Maintenant ca marche....
Philippe wrote:
j'ai trouvé je viens d'enlever le douche BS pour un BS simple dans les
noms de share et d'event. Maintenant ca marche....
Philippe wrote:
j'ai trouvé je viens d'enlever le douche BS pour un BS simple dans les
noms de share et d'event. Maintenant ca marche....