Salut !
Dans mon application client /serveur je voudrais que mon serveur envoi la liste des processus au client mais je vois pas comment faire ...
Version imprimable
Salut !
Dans mon application client /serveur je voudrais que mon serveur envoi la liste des processus au client mais je vois pas comment faire ...
Salut
Batch
Tasklist >c:/proc.txt
Le fichier texte contenant les processus est créé à la racine de c:
Reste à importer dans le client et a envoyé au serveur
j' ai eu exactement la même idée mais jme tournerais plus vers les API windows
je sais pas si il yen a une qui traite les process.
EnumProcesses + GetModuleBaseName, tu as un exemple ici.
Côté envoi "pur", ça reste finalement l'envoi d'une liste de chaînes de caractères (+ éventuellement PID, donc un entier non-signé 32 bits) dont on connait la taille à l'avance, rien de bien sorcier donc.
merci bien de la réponse , j'essaye et je vous tient au courant !
heu probleme: erreur de lieur quand je compile le code [http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx] avec Borland 6 en expert console...
Code:
1
2
3
4 [Lieur Erreur] Unresolved external 'EnumProcesses' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROCESS2.OBJ [Lieur Erreur] Unresolved external 'EnumProcessModules' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROCESS2.OBJ [Lieur Erreur] Unresolved external 'GetModuleBaseNameA' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROCESS2.OBJ
pourtant j'ai inclus ce qui donne :
le texte en dessous du code explique le role du code, désolé si je comprend pas tout je suis encore débutant-intermédiaire :mouarf:Code:
1
2
3
4 #include <windows.h> #include <stdio.h> #include <tchar.h> #include <psapi.h>
Hello,
Rajoute psapi.lib à ton projet. Ça se trouve dans $(BCB)\lib\psdk.
j'ai du mal :
je vais dans projet>importer une biblio...>ajouter je cherche dans le dossier PSDK psapi.lib et j'ai une erreur
:Erreur lors du chrgement de la bibliothèque/DLL du type je suis certain de my prendre comme un pied...
Nan:
Menu Projet -> Ajouter au projet.
Tu sélectionnes "Fichiers bibliothèque (*.lib)" comme type de fichier et tu vas faire un tour dans le sous-répertoire lib\psdk de ton install de Builder.
Ou sinon je pense que tu peux ajouter ceci à ton fichier .h:
Code:#pragma link "psapi.lib"
Tu as essayé:
Sinon, utilise la méthode de totoche76 mentionné plus haut.Code:#pragma link "psdk\psapi.lib"
rectification je n'avait pas vu le message de totoche76 !
sa marche maintenant merci beaucoup !
Il me reste plus qu'a envoyé sa au serveur ....
Salut!
Dans la section code source, y a un exemple de gestion de processus, tu pourra y trouver comment lister les processus, c'est ici
++
Merci pour le lien ! avec tout sa j'ai pas mal avancé , mon client liste tous les processus, par contre coté serveur le voudrais récupérer la liste de processus du client pour effectuer un traitement
Coté client :
Code Gestion des ProCess :Code:
1
2
3
4
5
6 //je récupère la liste des process contenus dans ma listeBox1 AnsiString ListProcess =ListBox1->Items->GetText(); //j' envois une trame contenant différentes OPTION ainsi que la liste des Process ClientSocket1->Socket->SendText(OPTION1+"*"+OPTION2+"*"+OPTION2+"*"+ListProcess):
Coté serveur:Code:
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 // rafraichir la liste des processus en cours d'executions void TForm1::RefreshProcess() { HANDLE hSnapShot; PROCESSENTRY32 uProcess; bool r; char ExeName[256]; ListBoxProcess->Clear(); hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32); r = Process32First(hSnapShot, &uProcess); do // Cette boucle énnumère tout les processus { //on cherche le nom de notre application dans le chemin d'accès de l'éxécutable du processus. strcpy(ExeName, uProcess.szExeFile); ListBoxProcess->Items->Add(ExeName); r = Process32Next(hSnapShot, &uProcess); } while ( r ); CloseHandle(hSnapShot); ListBoxProcess->ItemIndex = index; } //---------------------------------------------------------------------------
Je reçoit ma trame complète, cependant la liste des Process arrive en block je voudré juste rajouté un traitement pour que les process reçu avec :Socket->ReceivText(); soit affiché en sautant une ligne ,dans le code RefreshProcess() je ne voit pas ou je pourrait ajouté un caractère à chaque fin de processus .