Lister les applications en cours de fonctionement

iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 25 avril 2006 à 16:38
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 25 avril 2006 à 22:15
Bonjour,

j'aimerais pouvoir recuperer la liste des applications en cours d'execution et pouvoir basculer vers cette application comme dans le gestionnaire des tâches de windows
J'utilise le framework 2.0 avec Visual C#

Merci

11 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 avril 2006 à 16:56
pas besoin d'api... tout simplement Process.GetProcesses()


Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
25 avril 2006 à 17:03
Oui mais je veux la liste des applications lancées pas des proccessus
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 avril 2006 à 17:06
as-tu au moins essayé ?


Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
25 avril 2006 à 17:08
Non, je ne sais pas comment "utilisé" ce code je suis debutant
Merci de m'eclairer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 avril 2006 à 17:19
Exemple tiré de MSDN :

// Get all processes running on the local computer.
Process [] localAll = Process.GetProcesses();


Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
25 avril 2006 à 17:23
j'ai testé le code sa affiche bien tout les processus mais pas les applications lancé !
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
25 avril 2006 à 19:14
J'aimerais afficher les programmes lancés comme notepad ou msn mais pas les processus ( comme le gestionnaire des taches de windows 1er onglet sous win Xp )
Merci
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 avril 2006 à 21:48
En utilisant les API et p/invoke, tu dois pouvoir recuperer tous les applications visibles.


<HR>
[
DllImport(
"user32.dll")]

public
static
extern
int EnumWindows(
EnumWindowsCallBack lpEnumFunc,
int lParam);
[
DllImport(
"user32.dll")]
[
return:
MarshalAs(
UnmanagedType.Bool)]

public
static
extern
bool IsWindowVisible(
IntPtr hWnd);


<HR>

Maintenant, pour faire ce que tu veux faire, ca risque d'etre un peu plus compliqué que simplement recuperer la liste des fenetres.



Mx
MVP C#
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
25 avril 2006 à 21:50
Merci, mais je suis debutant comment utiliser ton code ?
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 avril 2006 à 22:11
Tiens un exemple vite fait :


<HR>

using System;

using System.Collections.Generic;

using System.Runtime.InteropServices;

using System.Text;

public
class
Window
{

private
IntPtr _hwdn;

private
string _name;

private
static
List<
Window> _windows =
new
List<
Window>();

public
IntPtr HWND
{

get {
return
this._hwdn; }
}

public
string Name
{

get {
return
this._name; }
}



public Window(
IntPtr hwnd,
string name)
{

this._hwdn = hwnd;

this._name = name;
}

public
override
string ToString()
{

return
this._name;
}


private
static
bool EnumWindows(
IntPtr hwnd,
int lparam)
{

if (
NativeMethods.IsWindowVisible(hwnd) && !
string.IsNullOrEmpty(
NativeMethods.GetWindowText(hwnd)))
{

Window window =
new
Window(hwnd,
NativeMethods.GetWindowText(hwnd));
_windows.Add(window);
}

return
true;
}

public
static
List<
Window> GetWindowsList()
{

NativeMethods.EnumWindows(
new
NativeMethods.
EnumWindowsCallBack(EnumWindows), 0);

return _windows;
}
}

public
static
class
NativeMethods
{

public
delegate
bool
EnumWindowsCallBack(
IntPtr hwnd,
int lParam);
[
DllImport(
"user32.dll")]

public
static
extern
int EnumWindows(
EnumWindowsCallBack lpEnumFunc,
int lParam);

[
DllImport(
"user32.dll")]
[
return:
MarshalAs(
UnmanagedType.Bool)]

public
static
extern
bool IsWindowVisible(
IntPtr hWnd);

[
DllImport(
"user32.dll")]

public
static
extern
int GetWindowText(
IntPtr hWnd, [
Out]
StringBuilder lpString,
int nMaxCount);

[
DllImport(
"user32.dll")]

public
static
extern
int GetWindowTextLength(
IntPtr hWnd);


public
static
string GetWindowText(
IntPtr hWnd)
{

StringBuilder sb =
new
StringBuilder(GetWindowTextLength(hWnd) + 1);
GetWindowText(hWnd, sb, sb.Capacity);

return sb.ToString();
}
}


<HR>

L'appel à Window.GetWindowsList() te retourne une List<Window> dans laquelle, pour chaque fenetre, tu peux recuperer leur nom (enfin, leur titre) et leur handle.



Mx
MVP C#
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
25 avril 2006 à 22:15
Merc beaucoup dés que je peux je teste
0
Rejoignez-nous