Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Prozess ID des Aufrufenden Prozess' ermitteln.
inva
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Leipzig

Themenstarter:

Prozess ID des Aufrufenden Prozess' ermitteln.

beantworten | zitieren | melden

Hallo liebe Community!
Folgender Umstand plagt mich ein wenig:
Ich habe eine Consolen App, die von einem anderen Prozess angestoßen werden soll.
Nun möchte ich aber gern, dass diese, meine, Console App in das Consolen Fenster der aufrufenden oder ggf. sogar in ein eigenes Consolen Fenster schreibt.

Daher wäre meine Frage
a) Gibt es eine Möglichkeit die Prozess-ID des Callers zu ermitteln?
b) Kann ich es erzwingen, dass meine App, ein eigenes Consolen Fenster öffnet?


Grüße,
inva

*edit*

achja, wenn man zu faul ist selber fix zu gucken.

Die Lösung für b), die bevorzugt war hab ich!

So geht's:


[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool FreeConsole();

[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool AllocConsole();

static void Main(string[] args)
{
    /* do something here
        ...
        ...
        ...
   */
   AllocConsole();

   Console.WriteLine("something");
   // wait for input
   Console.ReadLine();

   FreeConsole();
}

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inva am .
Aller Wahrscheinlichkeit nach wird das Weltall von einem Rudel Irrer regiert.
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 888
Herkunft: Germany

beantworten | zitieren | melden

Zu a.

Der Caller könnte seine eigene ID dem Programm in den Start-Argumenten mitgeben.
Du müsstest Dein Programm nur darauf anpassen.
private Nachricht | Beiträge des Benutzers
Spook
myCSharp.de - Member



Dabei seit:
Beiträge: 244
Herkunft: Esslingen a.N.

beantworten | zitieren | melden

Hallo inva,

mit WMI kannst du die ParentProcessId auslesen:

static bool TryGetParentProcessId(out int id)
{
	try
	{
		int ownId = Process.GetCurrentProcess().Id;
		ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Process WHERE ProcessId=" + ownId);
		foreach (ManagementBaseObject row in searcher.Get())
		{
			id = (int)(uint)row["ParentProcessId"];
			return true;
		}
	}
	catch
	{

	}
	id = 0;
	return false;
}

static void Main(string[] args)
{
	int id;
	if (TryGetParentProcessId(out id))
		Console.WriteLine(Process.GetProcessById(id).ProcessName+ " called me.");
	else
		Console.WriteLine("Unable to identify caller.");
}

Spooky
private Nachricht | Beiträge des Benutzers
inva
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Leipzig

Themenstarter:

beantworten | zitieren | melden

vielen lieben Dank Spooky!
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inva am .
Aller Wahrscheinlichkeit nach wird das Weltall von einem Rudel Irrer regiert.
private Nachricht | Beiträge des Benutzers