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 ?
![]()
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 ?
![]()
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 .
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
quesaco ?
Tu aurais un exemple ?
Meric pour ton aide.
exemple sur codeguru:
http://www.codeguru.com/system/NPW.html
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
![]()
Je vais tester...
![]()
Je vais tester...
Yop, la creation du pipe ne fonctionne pas dans l'autre session...
Y a t-il des parametres particulier a mettre ?![]()
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; ... }
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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; } }
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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 ??
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 :
Peut-être un erreur de configuration des pipes ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part Unable to read from named pipe"
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 ..
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
En fait c'était tout con... il fallait écrire :
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(ReadFile(msnPipe,textBuffer,128,&numBytesRead,(LPOVERLAPPED)NULL))![]()
![]()
Merci !!!!
oups une erreur de recopie![]()
a+
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager