[C++/.Net] Prozesse in listbox aufliesten

elbdom

Mitglied
Hallo Tutorials User,

Ich versuche alle Prozesse die Lokal laufen in einer Listbox auf zu Listen mit hilfe der Process Klasse leider wird nur Process <Array> aufgelistet und das nur einmal.

Jemand ne idee wie das funktioniert mit der klasse?

gruß
 

Muepe32

Erfahrenes Mitglied
Hallo elbdom,

Du musst einfach über die Elemente iterieren und jedes einzeln hinzufügen oder als Array via AddRange.
C++:
cli::array<Process^>^ localProcs = Process::GetProcesses();
listBox1->Items->AddRange(localProcs);
// oder:
for each (Process^ p in localProcs)
   listBox1->Items->Add(p);

Gruss
Muepe
 

Muepe32

Erfahrenes Mitglied
Ein bisschen mehr an Fehlerbeschreibung wäre schön. Ausserdem ist es von Vorteil, wenn du dir kurz die Netiquette ansiehst. Gross- und Kleinschreibung sind hier Pflicht.
 

elbdom

Mitglied
Ok Also das Genaue Problem ist das in der ListBox1 Elemente enthalten sind die ich anklicken kann die aber keine Beschriftung haben sonder einfach nur ausgewählt werden können somit fehlt da noch der Name des Prozesses.

Edit: Habe mal ein Bild angehängt damit man sieht was ich genau meine.
 

Anhänge

  • fehler.jpg
    fehler.jpg
    2,8 KB · Aufrufe: 77
Zuletzt bearbeitet:

Muepe32

Erfahrenes Mitglied
Dann musst du über alle Prozesse iterieren und den String, der angezeigt werden soll jeweils selber erstellen (bsp. proc->ProcessName oder proc->ToString()), ich dachte AddRange ruft für alle Elemente ToString auf, ist aber offensichtlich nicht so.
 

elbdom

Mitglied
Dann musst du über alle Prozesse iterieren und den String, der angezeigt werden soll jeweils selber erstellen (bsp. proc->ProcessName oder proc->ToString()), ich dachte AddRange ruft für alle Elemente ToString auf, ist aber offensichtlich nicht so.

Ich habe es jetzt so gelöst:
for(int i=0;i<99999;i++)
{
try
{
listBox1->Items->Add(process1->GetProcessById(i)->ProcessName->ToString());
}
catch(ArgumentException^)
{
//
}
}

Es ist zwar nicht die schönste Methode aber wenigstens etwas.
Nun ist mein problem aber das ich von den eingetragenen Elementen keine Methoden oder Eigenschaften aufrufen kann um mit ihn weiter zu Arbeiten.
 

Muepe32

Erfahrenes Mitglied
Hallo elbdom,

Warum so kompliziert?
C++:
for each(Process^ p in Process::GetProcesses())
{
   listBox1->Items->Add(p->ProcessName);
}

Damit du weiterarbeiten kannst machst du dir am einfachsten eine eigene Klasse deren ToString du so überlädst, dass dabei der gewünschte Text rauskommt. Darin speicherst du dann aber auch noch die dazugehörige Process-Instanz und fügst dann die Instanzen deiner neuen Klasse in der Listbox hinzu. Dann hast du später die Process-Instanz noch zur Verfügung.

Gruss
Muepe
 

Neue Beiträge