Seiten
Zuletzt im Ohr
Zuletzt im Sinn
Archiv
- Juni 2010 (11)
- Mai 2010 (4)
- März 2010 (6)
- Februar 2010 (3)
- Dezember 2009 (2)
- November 2009 (3)
- Oktober 2009 (17)
- September 2009 (7)
- August 2009 (7)
- Juli 2009 (3)
- Juni 2009 (2)
- Mai 2009 (4)
- April 2009 (1)
- März 2009 (3)
- Februar 2009 (11)
- Januar 2009 (14)
- Dezember 2008 (6)
- November 2008 (9)
- Oktober 2008 (6)
- September 2008 (9)
Tagcloud
Partner/Links
- C# Tipps und Tricks - C# Tipps und Tricks
- gb-pix.de - Gästebuchbilder, Jappy, MySpace…
- Kostenlose Browsergames - Kostenlose Browsergames
- MySpace Downloader - MySpace Loader – der kostenlose MySpace.com Downloader
- Servervoice Blog - Servervoice Blog
- Wordpress Theme
- Youtube Mediaplayer - Webmusix – der kostenlose Youtube Mediaplayer
Network
Windows Applikationen verstecken/versteckt starten mit C#
…Applikationen “unsichtbar” ausführen
Heute möchte ich euch anhand zweier kurzer Snippets zeigen, wie man bereits gestartete (Windows-)Applikationen versteckt bzw. sie “unsichtbar” startet. Ich schreibe “unsichtbar” bewusst in Anführungszeichen, da das Fenster der Applikation nachher zwar nicht mehr sichtbar ist und die Applikation auch in der Taskleiste nicht mehr auftaucht, sie jedoch noch im Taskmanager gelistet ist.
Bereits laufende Applikationen verstecken
Zuerst müssen wir folgende Using-Direktiven hinzufügen:
[sourcecode language='csharp']
using System.Diagnostics; // Damit wir mit Prozessen arbeiten können
using System.Runtime.InteropServices; // Um DLLs importieren zu können
[/sourcecode]
Nun deklaren wir die ShowWindow Funktion:
[sourcecode language='csharp']
[DllImport("User32")]
private static extern int ShowWindow(int hwnd, int nCmdShow);
[/sourcecode]
Die Funktion ShowWindow akzeptiert zwei Überladungen. Einmal hwnd, das Handle des Fensters, welches wir verstecken wollen und einmal nCmdShow, ebenfalls ein Integerwert, welcher festlegt in welchen Zustand das Fenster aus der ersten Überladung versetzt werden soll.
Folgende Möglichkeiten stehen dabei zur Auswahl:
SW_HIDE 0
SW_SHOWNORMAL 1
SW_NORMAL 1
SW_SHOWMINIMIZED 2
SW_SHOWMAXIMIZED 3
SW_MAXIMIZE 3
SW_SHOWNOACTIVATE 4
SW_SHOW 5
SW_MINIMIZE 6
SW_SHOWMINNOACTIVE 7
SW_SHOWNA 8
SW_RESTORE 9
SW_SHOWDEFAULT 10
SW_FORCEMINIMIZE 11
SW_MAX 11
Da wir unser Fenster verstecken wollen wählen wir im folgenden Schritt den Wert “0″.
Nun brauchen wir nurnoch den Integerwert des Handles unserer Funktion. Diesen bekommen wir folgendermaßen:
[sourcecode language='csharp']
Process[] pp = Process.GetProcessesByName(“iexplore”); // 1.
foreach (Process p in pp) // 2.
{
ShowWindow(p.MainWindowHandle.ToInt32(), 0); // 3.
}
[/sourcecode]
Als Beispielanwendung, die versteckt werden soll, habe ich den InternetExplorer gewählt. An Punkt 1 legen wir alle Prozesse mit dem Namen “iexplore” in ein Array namens pp. Nun gehen wir an Punkt 2 jeden einzelnen Prozess des Arrays durch. Schlussendlich rufen wir an Punkt 3 die Funktion ShowWindow auf und übergeben als erste Überladung das Handle unseres Fensters und als zweite Überladung den Wert “0″. (Siehe Tabelle oben)
Der Übersicht halber hier nochmal ein Beispiel, wie das ganze im Zusammenspiel aussieht:
[sourcecode language='csharp']
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("User32")]
private static extern int ShowWindow(int hwnd, int nCmdShow);
private void button1_Click(object sender, EventArgs e)
{
Process[] pp = Process.GetProcessesByName("iexplore");
foreach (Process p in pp)
{
ShowWindow(p.MainWindowHandle.ToInt32(), 0);
}
}
}
}
[/sourcecode]
Windows Applikationen “unsichtbar” starten
Um eine Windows Applikation “unsichtbar” zu starten ist wesentlich weniger Code nötig, als um eine bereits laufende Applikation wieder zu verstecken.
Als Beispielanwendung habe ich Notepad genommen (auch wenn es natürlich sinnlos ist Notepad im Hide zu starten). Im Grunde genommen reichen 4 Zeilen Code vollkommen aus:
[sourcecode language='csharp']
ProcessStartInfo pinfo = new ProcessStartInfo();
pinfo.WindowStyle = ProcessWindowStyle.Hidden;
pinfo.FileName = “notepad”;
Process.Start(pinfo);
[/sourcecode]
In der ersten Zeile erstellen wir eine Prozessinfo namens “pinfo” und weisen dieser in der zweiten Zeile, als WindowStyle, “ProcessWindowStyle.Hidden” zu, was zur Folge hat, dass der Prozess “unsichtbar” gestartet wird. In der dritten Zeile legen wir den zu startenden Prozess fest und starten letztendlich in der vierten Zeile den Prozess.
Das war eigentlich auch schon alles was ihr benötigt um Applikationen unsichtbar zu starten bzw. laufende Applikationen zu verstecken. Solltet ihr noch fragen haben, so hinterlasst einfach einen Kommentar.
Liebe Grüße,
Raffi
Ähnliche Artikel:
Hallo!

Kategorien
- Der tägliche Senf… (93)
- Informatik (90)
- C# & .net Framework (16)
- Cheat Sheets (4)
- HTML, PHP, etc. (5)
- Neuigkeiten (29)
- Software-Projekte (37)
- Tipps & Tricks (35)
- Web-Projekte (1)
- Musik (10)
- Downloads (4)
- Hörbar – Raffis Musiktipp (4)
- Videoclips (8)
- Schule (11)
Kalendar
| M | D | M | D | F | S | S |
|---|---|---|---|---|---|---|
| « Dez | Feb » | |||||
| 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 | |
Counter
| Besucherstatistik | |
| Besucher gesamt: | 144.811 |
| Besucher heute: | 61 |
| Besucher gestern: | 105 |
| Max. Besucher pro Tag: | 629 |
| gerade online: | 1 |
| max. online: | 89 |
| Seitenaufrufe gesamt: | 396.991 |
| Seitenaufrufe diese Seite: | 3.520 |
| Counterstart: | 13.10.2008 |
Meta
Am meisten kommentiert
Neue Artikel
- C# – Webcams benutzen
- Mp3’s schneiden, kürzen, ein- und ausblenden
- Netzfundstück: Amsterdam Acoustics
- Pixlr – Online Bilder bearbeiten
- Neues vom MySpace Loader
- Und heute bei uns – der Sommer
- Ein Tag mit Herr von Grau
- 23 kostenlose Webseiten Vorlagen
- Alle Spiele der WM 2010 im Überblick
- Audivisuelle Kunst #1
Neue Kommentare
- vibram five fingers shoes: FEHLER: Sie haben nicht die richtige CAPTCHA-Sicherheitswort eingegeben. Bitte nutzen Sie...
- vibram five fingers shoes: FEHLER: Sie haben nicht die richtige CAPTCHA-Sicherheitswort eingegeben. Bitte nutzen Sie...
- vibram five fingers shoes: FEHLER: Sie haben nicht die richtige CAPTCHA-Sicherheitswort eingegeben. Bitte nutzen Sie...
- vibram five fingers shoes: FEHLER: Sie haben nicht die richtige CAPTCHA-Sicherheitswort eingegeben. Bitte nutzen Sie...
- vibram five fingers shoes: Spontan fällt mmir da nichts ein. Was zwar funktionieren würde, aber sehr umständlich ist....
net-blog.net © 2008-2010




9 Benutzer kommentierten "Windows Applikationen verstecken/versteckt starten mit C#"
12 Januar 2009 um 15:51:12
Sehr praktisch….auch für andre Progzz xD
*link entfernt / spam*
27 Februar 2009 um 18:57:00
Gut!
27 März 2009 um 21:53:52
Blöde Frage, aber wie bekommt man eine während der ausführung versteckte anwendung wieder sichtbar?
28 März 2009 um 18:26:40
Für Applikationen die zur Laufzeit versteckt wurden lässt du einfach nochmal die Schleife durchlaufen, mit der du das Programm versteckt hast und verwendest dieses mal bloß einen anderen Integer-Wert.
Im Artikel steht die Tabelle für die verschiedenen Möglichkeiten.
Zum Verstecken haben wir die “0″ benötigt. Zum Wiederherstellen benötigen wir die “1″.
Das ganze sähe dann wie folgt aus:
Process[] pp = Process.GetProcessesByName(“iexplore”);
foreach (Process p in pp)
{
ShowWindow(p.MainWindowHandle.ToInt32(), 1);
}
liebe Grüße,
Raffi
28 März 2009 um 19:33:26
Vielen Dank für die schnelle Antwort, aber das hatte ich bereits probiert, auch mit allen anderen Integer-Werten die in Frage kämen doch die Anwendung bleibt leider unsichtbar.
Hier mein Code:
public void HideProcess()
{
Process[] x = Process.GetProcessesByName(prozess);
foreach (Process y in x)
{
ShowWindow(y.MainWindowHandle.ToInt32(), 0);
}
}
public void ShowProcess()
{
MessageBox.Show(prozess);
Process[] x = Process.GetProcessesByName(prozess);
foreach (Process y in x)
{
ShowWindow(y.MainWindowHandle.ToInt32(), 1);
}
}
LG Karim
28 März 2009 um 19:49:42
Ok, ich hab die Lösung:
Wenn das Fenster versteckt ist ist der Rückgabe wert von MainWindowHandle 0. Man muss sich also beim verstecken den Handle merken und diesen dann später zum wieder anzeigen verwenden.
LG KArim
14 April 2009 um 00:00:45
begrüße! =D
ok den ersten code für verändern des prozesses versteh ich ja noch, aber was meint karim mit Mainwindowhandle merken?? das hat mich zu sehr verwirrt
greetz
14 April 2009 um 07:18:07
Hallo ФιΜΛ,
wenn du einen Prozess versteckst, dann rufst du ja die Funktion ShowWindow(); mit den zwei Parametern auf. Der erste ist das MainWindowHandle, ein Integer-Wert, der beschreibt um welche Applikation/welches Fenster es geht und der zweite Wert ist der “Status” in den die Applikation versetzt werden soll. (verstecken, anzeigen, minimieren, etc.).
Den Wert “MainWindowHandle bekommst du ja beim durchlaufen der foreach-Schleife. Soll heißen, jede Applikation hat einen eigenen, speziellen Wert.
Möchtest du nun eine versteckte Anwendung wieder anzeigen, musst du ja nur die Funktion ShowWindow noch ein mal aufrufen, bloß dass du als zweiten Wert nun statt einer 0 zum Verstecken, eine 1 zum Anzeigen übergibst.
Der erste Wert muss die Zahl des versteckten Fenster sein.
Das war der springende Punkt, den Karim meinte.
Soll heißen du musst die beim Verstecken, also beim Aufruf der ShowWindow-Funktion den Wert p.MainWindowHandle.toInt32(); irgendwo ablegen und merken, damit du ihn später zum wieder Anzeigen nochmals verwenden kannst.
Ich hoffe du kannst dem ganzen nun ein wenig Folgen.
Liebe Grüße,
Raffi
14 April 2009 um 09:07:13
also erstmal. WOW, thx für die schnelle antwort von Raffi.
Es hat mir doch Einblick verschaffen lassen und so fand ich doch früher oder später raus wie man den Wert speichert.(endlich)
alse thx mal zu karim der mir klar gemacht hat dass wenn kein mainwindowhandle mehr da is der Wert zero is.
Das mit dem speichern hat mir Raffi leicht gemacht. Big THX
greetz ФιΜΛ