IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Détecter le lancement d'un processus par l'application


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut Détecter le lancement d'un processus par l'application
    Bonjour à tous,

    Mon application possède un composant, qui, pour une raison quelquonque, lance un processus externe (dans ce cas, il s'agit d' "iexplore.exe").
    Ce que j'aimerais pouvoir faire, c'est tout d'abord détecter le lancement du processus, puis l'empecher, et enfin, c'est presque le plus important, arriver à récupérer les arguments de lancement...
    Vu que on parle de "iexplore.exe" (Internet Explorer), les arguments seront en fait une URL.

    Est-ce possible à faire en C# ? Je re-précise que c'est bien l'application qui doit lancer le processus (enfin il me semble), et il ne devrait donc pas s'agir de surveiller tout le système pour surveiller le lancement d'un processus...
    Bon après, si même en surveillant tout, j'arrive qd même à empêcher le lancement, et à récupérer les arguments... Nickel aussi

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Process[] processlist = Process.GetProcesses();
     
        foreach(Process theprocess in processlist){
        Console.WriteLine(”Process: {0} ID: {1}”, theprocess.ProcessName, theprocess.Id);
        }
    la classe Process devrait suffire, tu y trouvera une méthode pour récupérer les arguments.

    Je crois que tu peux hooker le fait que Windows démarre une application, histoire d'optimiser ton code et de pas boucler pour rien , mais je ne me rappel pu de la méthode (sans doute en CPP)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Pour etre prevenu par Windows d'un nouveau process:

    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
    using System;
    using System.Management;
    public class ProcessEvent
    {
    public void Run()
    {
    ManagementEventWatcher w = null;
    ManagementOperationObserver observer = new ManagementOperationObserver();
    WqlEventQuery q = new WqlEventQuery();
    q.EventClassName = "Win32_ProcessStartTrace";
    w = new ManagementEventWatcher( q);
    w.EventArrived += new
    EventArrivedEventHandler(this.ProcStartEventArrived);
    w.Start();
    }
    private void ProcStartEventArrived(object sender, EventArrivedEventArgs e)
    {
    //Get the Event object and display it
    foreach(PropertyData pd in e.NewEvent.Properties) {
    Console.WriteLine("\n======================================");
    Console.WriteLine("{0},{1}",pd.Name, pd.Value);
    }
    }
    }
    class WMIEvent {
    [STAThread]
    public static void Main() {
    try
    {
    ProcessEvent procEvnt = new ProcessEvent();
    procEvnt.Run();
    Console.ReadLine(); // block main thread for test purposes
    }
    catch (Exception e)
    {
    Console.WriteLine(e);
    }
    }
    }
    source: http://www.dotnet247.com/247referenc...57/286080.aspx

    Bon courage ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment détecter le lancement d'un process par notification ?
    Par masterx_goldman dans le forum Windows
    Réponses: 4
    Dernier message: 23/08/2010, 20h13
  2. Lancement d'un programme par un automate
    Par Delphi-ne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/11/2005, 15h27
  3. Réponses: 8
    Dernier message: 08/11/2005, 16h43
  4. Processus.. adoption d'un processus par init
    Par Francois Trazzi dans le forum Administration système
    Réponses: 15
    Dernier message: 17/01/2005, 13h56
  5. Détecter le lancement d'une application
    Par Neilos dans le forum Windows
    Réponses: 8
    Dernier message: 22/11/2004, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo