c # - Kontrollér, om processen kører. hvis det gør det - åbner det

Indlæg af Hanne Mølgaard Plasc

Problem



Nå, lad os sige, jeg fik en process kører.


Lad os sige 'Skype'. Og jeg vil gerne klikke på en button i C # Windows Form App.


Når jeg klikker på button (Lad os kalde button 'Skype Run').


Så når jeg klikker på 'Skype Run'. Det vil kontrollere, om processen kører i øjeblikket.


Hvis processen ikke kører, lad os sige det vil gøre:


MessageBox.Show("Sorry! Skype is not running.")


Men. Hvis den kører, åbner den den for at være det vindue, du kigger i øjeblikket.


Så hvis du er i Word, og du klikker på 'Skype Run'. Og Skype kører, og det åbner vinduet op. (Ligesom at lave 'Skift til' i task manger i Windows.)


Hvis jeg ikke forklarede mit spørgsmål meget godt, så fortæl mig det. Jeg har bare brug for svaret :)

Bedste reference


Der er en kodeeksempel her, der viser, hvordan man gør det:


http://www.codeguru.com/forum/showthread.php?p=1757526[8]


Relevant kodeeksempel fra denne post nedenfor. Dette viser, hvordan man finder en proces i knappen1\_Click event handler.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; //required for APIs
namespace Find

{

public partial class Form1 : Form
{
    //Import the FindWindow API to find our window
    [DllImportAttribute("User32.dll")]
    private static extern int FindWindow(String ClassName, String WindowName);

    //Import the SetForeground API to activate it
    [DllImportAttribute("User32.dll")]
    private static extern IntPtr SetForegroundWindow(int hWnd);


    public Form1()
    {
        InitializeComponent();
    }

    private void button1\_Click(object sender, EventArgs e)
    {
        //Find the window, using the CORRECT Window Title, for example, Notepad
        int hWnd = FindWindow(null, "Untitled - Notepad");
        if (hWnd > 0) //If found
        {
            SetForegroundWindow(hWnd); //Activate it
        }
        else
        {
            MessageBox.Show("Window Not Found!");
        }


    }
}
}

Andre referencer 1


Du kan kontrollere, om en proces allerede kører ved hjælp af statisk Process.GetProcessesByName metode.


At bringe et bestemt vindue til fronten kan opnås ved at bruge SetWindowPos Win API [9]