IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[C++]Envoi de message Windows entre 2 session Windows


Sujet :

MFC

  1. #1
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut [C++]Envoi de message Windows entre 2 session Windows
    V'la le souci:

    Je cherche à faire communiquer 2 applications sur un server web par envoie de message Windows. L'une est dans une session ASPNET l'autre dans la session de l'utilisateur (qui peut varier)...

    Est-ce possible et si oui, comment ?


    Dos

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    je maitrise pas le truc (aspnet )mais on peut dire si il n'y a pas de fenetre pas de SendMessage ....
    sinon oriente toi plutot vers les pipes nomes .


  3. #3
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    quesaco ?
    Tu aurais un exemple ?
    Meric pour ton aide.
    Dos

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    exemple sur codeguru:
    http://www.codeguru.com/system/NPW.html

  5. #5
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut

    Je vais tester...
    Dos

  6. #6
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut

    Je vais tester...
    Dos

  7. #7
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    Yop, la creation du pipe ne fonctionne pas dans l'autre session...
    Y a t-il des parametres particulier a mettre ?
    Dos

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    sur le lien il y a quelqu'un qui a signale un pb avec tsrv tu devrais essayer les modifs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    BOOL cPipe::RegisterPipe ( void )
    {
    ...
    // Create registry key
    // insert the desktop HWND bevore the m_PipeName
    CString strDesktopWnd;
    strDesktopWnd.Format("%lu", GetDesktopWindow());
     
    // m_SubKey = "SOFTWARE\\" + m_GUID + "\\" + m_PipeName;
    m_SubKey = "SOFTWARE\\" + m_GUID + "\\" + strDesktopWnd + "\\" + m_PipeName;
    ...
    }
     
    BOOL cPipe::RetrievePipe ( void )
    {
    ...
    // Open registry key
     
    // insert the desktop HWND bevore the m_PipeName
    CString strDesktopWnd;
    strDesktopWnd.Format("%lu", GetDesktopWindow());
     
    // m_SubKey = "SOFTWARE\\" + m_GUID + "\\" + m_PipeName;
    m_SubKey = "SOFTWARE\\" + m_GUID + "\\" + strDesktopWnd + "\\" + m_PipeName;
    ...
    }

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    autre exemple plus epure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    // server
    #include "iostream.h"
    #include <process.h>
    void msnpClientThread(HANDLE msnPipe)
    {
    	char textBuffer[128];
    	DWORD numBytesRead;
    	DWORD numBytesWritten;
     
    	while(1)
    	{
    		if(!ReadFile(msnPipe,textBuffer,128,&numBytesRead,(LPOVERLAPPED)NULL))
    		{
    			cerr << "error:unable to read from named pipe" << endl;
    			break;
    		}
    		_strupr(textBuffer);
    		if(!WriteFile(msnPipe,textBuffer,strlen(textBuffer)+1,&numBytesWritten,(LPOVERLAPPED)NULL))
    		{
    			cerr << "error:unable to write to named pipe" << endl;
    			break;
    		}
    		cout << textBuffer <<endl;
    	}
    	FlushFileBuffers(msnPipe);
    	DisconnectNamedPipe(msnPipe);
    	CloseHandle(msnPipe);
    }
    #define MAX_INSTANCES 3
    void mainServer()
    {
    	HANDLE msnPipe;
    	DWORD msnpThread;
    	while(1)
    	{
    		msnPipe=CreateNamedPipe("\\\\.\\pipe\\msnp",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE | PIPE_WAIT,
    								MAX_INSTANCES,0,0,150,(LPSECURITY_ATTRIBUTES)NULL);
     
    		if(msnPipe== INVALID_HANDLE_VALUE)
    		{
    			cerr << "Error: Unable to create a named pipe " << endl;
    			continue;
    		}
     
    		if(!ConnectNamedPipe(msnPipe,(LPOVERLAPPED)NULL))
    		{
    			cerr << "Error: Unable to connect a named pipe " << endl;
    			CloseHandle(msnPipe);
    			return ;
    		}
    		msnpThread = _beginthread(msnpClientThread,0,(HANDLE)msnPipe);
    		if(msnpThread==-1)
    		{
    			cerr << "Error : Unable to create Thread " << endl;
    			CloseHandle(msnPipe);
    		}
    	}
    }
    // client
    void mainClt()
    {
    	HANDLE msnPipe;
    	DWORD numBytesRead;
    	DWORD numBytesWritten;
    	char textToSend[128];
    	char textRecvd[128];
    	char machineName[80];
    	char pipeName[80];
     
    	cout << "enter Name of server machine";
    	cin >> machineName;
    	wsprintf(pipeName,"\\\\%s\\pipe\\msnp",machineName);
    	msnPipe=CreateFile(pipeName,GENERIC_READ | GENERIC_WRITE,0,
    			(LPSECURITY_ATTRIBUTES)NULL,
    			OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
    	if(msnPipe==INVALID_HANDLE_VALUE)
    	{
    		cerr << "Error: Unable to connect a named pipe " << endl;
    		return ;
    	}
    	while(1)
    	{
    		cout << "type text to send:";
    		cin.getline(textToSend,128);
    		if(!WriteFile(msnPipe,textToSend,strlen(textToSend)+1,&numBytesWritten,(LPOVERLAPPED)NULL))
    		{
    			cerr << "error:unable to write to named pipe" << endl;
    			CloseHandle(msnPipe);
    			return ;
    		}
    		if(!ReadFile(msnPipe,textRecvd,128,&numBytesRead,(LPOVERLAPPED)NULL))
    		{
    			cerr << "error:unable to read from named pipe" << endl;
    			CloseHandle(msnPipe);
    			return ;
    		}
    		cout << "Received :" << textRecvd << endl;
    	}
    }

  10. #10
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    Le premier exemple ne fonctionne pas (même avec la modif) sous XP...
    Sous 2000 ça doit être ok. (mais pas testé)

    Par contre l'exemple épuré fonctionne presque en multi session (ASPNET + MySession). J'arrive a connecter le pipe, Mais je n'arrive rien a écrire dedans (multi session ou non)

    J'ai les erreur coté server et client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Unable to read from named pipe"
     
    Peut-être un erreur de configuration des pipes ??
    Dos

  11. #11
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    Le premier exemple ne fonctionne pas (même avec la modif) sous XP...
    Sous 2000 ça doit être ok. (mais pas testé)

    Par contre l'exemple épuré fonctionne presque en multi session (ASPNET + MySession). J'arrive a connecter le pipe, Mais je n'arrive rien a écrire dedans (multi session ou non)

    J'ai les erreur coté server et client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unable to read from named pipe"
    Peut-être un erreur de configuration des pipes ??
    Dos

  12. #12
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    peut etre une erreur lie a la securite ,faudrait faire ressortir le code d'erreur avec getlasterror() ,je serais pas etonne d'avoir erreur 5 acces denied.
    si c'est ca il faudra travailler avec les attributs de securites (ACLS)
    a confirmer donc ..

  13. #13
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    En fait c'était tout con... il fallait écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!ReadFile(msnPipe,textBuffer,128,&numBytesRead,(LPOVERLAPPED)NULL))
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(ReadFile(msnPipe,textBuffer,128,&numBytesRead,(LPOVERLAPPED)NULL))
    Maintenant je confirme que c'est bon !

    Merci !!!!
    Dos

  14. #14
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    oups une erreur de recopie
    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de messages avec MSMQ en VB6 (Windows 7 / 2008)
    Par jos8000 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 02/05/2013, 22h30
  2. envoi des courrier electronique entre linux et windows
    Par ps2ali dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 01/10/2007, 19h31
  3. [D7] Envoi de mail session windows vérouillé
    Par yoco9 dans le forum Delphi
    Réponses: 4
    Dernier message: 04/08/2006, 10h45
  4. Envoi de message dans windows
    Par Chrissrare dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 19/04/2006, 22h12
  5. Envoi de message entre 2 applications
    Par floweez dans le forum Windows
    Réponses: 9
    Dernier message: 30/06/2004, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo