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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Dos
    Dos est d�connect�
    Membre confirm�
    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
    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 ?



  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
    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 confirm�
    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
    Par d�faut
    quesaco ?
    Tu aurais un exemple ?
    Meric pour ton aide.

  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
    Par d�faut
    exemple sur codeguru:
    http://www.codeguru.com/system/NPW.html

  5. #5
    Dos
    Dos est d�connect�
    Membre confirm�
    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
    Par d�faut

    Je vais tester...

  6. #6
    Dos
    Dos est d�connect�
    Membre confirm�
    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
    Par d�faut

    Je vais tester...

  7. #7
    Dos
    Dos est d�connect�
    Membre confirm�
    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
    Par d�faut
    Yop, la creation du pipe ne fonctionne pas dans l'autre session...
    Y a t-il des parametres particulier a mettre ?

  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
    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
    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 confirm�
    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
    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 ??

  11. #11
    Dos
    Dos est d�connect�
    Membre confirm�
    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
    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 ??

  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
    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 confirm�
    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
    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 !!!!

  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
    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