Was ist hier falsch?? Es ist sehr wichtig...



  • Wie kann ich hier den Speicher richtig auslesen? Ich bekomme für jeden Prozess die gleichen Speicherdaten...:

    void funktion3()
    {
    	MEMORYSTATUS d;
    	d.dwLength = sizeof(d);
    	GlobalMemoryStatus(&d);
    	HANDLE hSysSnapshot = NULL;
    	HANDLE h_proc;
    	PROCESSENTRY32 proc;
    
    	proc.dwSize = sizeof(proc);
    	hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPALL, 0 );
    	Process32First(hSysSnapshot,&proc);
    	proc.dwSize = sizeof(proc);
    
    	cout<< "Groesse"<<setw(22)<<"Speicher Load"<<setw(20)<<"Total Phy."<<setw(20)<<"Total Virtual"<<endl;
    	cout<< "------------------------------------------------------------------------------"<<endl<<endl;
    	while(Process32Next(hSysSnapshot,&proc))
    	{
    		h_proc = OpenProcess(PROCESS_ALL_ACCESS, TRUE, proc.th32ProcessID);
    		cout<< d.dwLength<<"\t\t\t"<<d.dwMemoryLoad<<"\t\t"<<d.dwTotalPhys<<"\t"<<d.dwTotalVirtual<<"\t"<<endl;
    	}
    }
    

    Danke im Voraus 😋



  • na kommste im Praktikum nicht richtig weiter??? Kann dir dein Praktikumspartner nicht helfen???

    MFG st21hein



  • Bitte nur produktive Antworten...



  • Bitte nur produktive Antworten...

    War neulich bei den Indianern im Urwald. Da haben die so ne Baumrinden-Wunderdroge die gegen Rheuma UND Impotenz hilft. Wenn man das hier richtig vermarket, könnte man damit Millionen machen!!!! Gegen eine kleine Gebühr vermittle ich gern Kontakt.

    produktiv genug? :p

    Oder vielleicht...
    Du liest d ein einziges mal mit GlobalMemoryStatus aus.



  • 😕 ... 😕 ... 😕
    ähm, jaa, viel glück tacco



    1. "Was ist hier falsch?? Es ist sehr wichtig..." <- wundert mich das sich wegen dem titel noch keiner beschwert hat

    2. Thread gehört entweder in WinAPI oder Konsolen Forum aber nicht ins MFC Forum

    3. "d" bekommt seine Werte durch GlobalMemoryStatus und diese rufst du nur einmal auf, und deswegen hats keinen sinn dutzend mal dessen werte auszugeben.

    4. d.dwLength auszugeben hat genauso wenig sinn da dieser Wert die Größe der Struktur (in Bytes) angibt und somit keine zur ausgabe relevanten informationen enthält

    5. Durch Process32Next(hSysSnapshot,&proc) erhält proc jedes mal neue Werte (für jeden Prozess) das heist du must die werte von proc und nicht von d ausgeben.

    6. Bennene deine Funktionen mal vernünftig

    Ich hab dir das ganze mal umgebastelt, wenns dir hilft:

    #include <iostream>
    #include <windows.h>
    #include <tlhelp32.h>
    using namespace std;
    
    void main(void)
    {
    	MEMORYSTATUS d; 
    	d.dwLength = sizeof(d); 
    	GlobalMemoryStatus(&d); 
    
    	cout << "Arbeitspeicher Infos:\n---------------------\n";
    	cout << "Pysikalisch vorhandener Arbeitspeicher: " << d.dwTotalPhys << endl;
    	cout << "Noch verfügbarer Arbeitspeicher: " << d.dwAvailPhys << endl;
    	//Das kann hier noch ne weile so weiter gehen (siehe MSDN)
    	cout << endl << endl;
    
    	HANDLE hSysSnapshot = NULL; 
    	HANDLE h_proc; 
    	PROCESSENTRY32 proc; 
    
    	proc.dwSize = sizeof(proc); 
    	hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPALL, 0 ); 
    	Process32First(hSysSnapshot,&proc); 
    	proc.dwSize = sizeof(proc); 
    
    	while(Process32Next(hSysSnapshot,&proc)) 
    	{ 
    		h_proc = OpenProcess(PROCESS_ALL_ACCESS, TRUE, proc.th32ProcessID); 
    		cout<< "Name: " << proc.szExeFile << endl;
    		cout<< "Threads: " << proc.cntThreads << endl;
    		cout<< "Priorität: " << proc.pcPriClassBase << endl;
    		cout << endl;
    	} 
    }
    

    MFG newvet



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Soweit hab ich es jetzt auch gebacken bekommen. Die Prozessliste hat ja auch schon vorher gefunzt. Mir gehts eigentlich darum, wie ich die Speicherauslastung aller laufenden Prozesse auslesen kann? Aber trotzdem danke für den Code 😉
    Und der Name der Funktion war ja auch nur ein Beispiel. Ich hab sie ja auch richtig aufgerufen...

    Mfg 😃



  • Also du willst wissen, wieviel Speicher die einzelnen Prozesse belegen (im Taskmanager Speichernutzung), oder?



  • Stimmt genau... Kannst du mir da weiterhelfen?




Anmelden zum Antworten