C# Beim erneuten öffnen, Fenster des ersten Prozesses öffnen

TheOtherSide

Ensign
🎅Rätsel-Elite ’24
Registriert
Juli 2008
Beiträge
233
Hallo zusammen,

ich hab ein mehr oder weniger kleines Problem und ich hoffe das Ihr mir dabei
helfen könnt. Also es geht sich um folgendes:

Ich habe ein Programm in C# geschrieben. Dies ist ein kleiner Dialog, bei dem
der User einen Button drücken muss. Danach wird das Programm Minimiert und
ebenfalls wird die Eigenschaft ShowInTaskBar auf 'false' gesetzt. Das einzige was bleibt
ist ein NotifyIcon über das man den Dialog wieder öffnen kann.

Nun ist aber eine Anfoderung das beim erneuten starten/klicken der Exe kein neues
Programm gestartet werden soll. Sondern einfach der kleine Dialog vom bereits bestehenden
Prozess erscheinen soll.

Ich hoffe ihr könnt mir helfen.

Vielen Dank schonmal.

Gruß,
euer TheOtherSide
 
Hi,

bitte sehr. Sollte doch glaube ich das sein, was du suchst, oder habe ich da was falsch verstanden?

VG,
Mad

Edit:

Hier, hier oder hier geht es auch um dieses Thema.
 
Zuletzt bearbeitet:
Hallo Madman1209,

danke erstmal für deine Antwort.

Nein das ist es leider nicht ganz.
Das Problem ist nicht zu erkennen ob das Programm schon einmal gestartet ist, sondern
das wenn dem so der Fall ist. Die zu erst geöffnete Instanz des Programms zu beutzten und
den Dialog aus dieser Programm Instanz wieder zu öffnen.

Beispiel(unter Windows 7):
Du gehst auf den Start-Button und wählst dann die Schaltfläche Computer aus.
Nun sollte sich ein neues Explorer Fenster geöffnet haben.
Wenn du dieses Fenster aber nun minimierst und Schritt eins nochmal durchführst,
öffnet sich dein minimiertes Fenster und kein neues Fenster.
 
@Madmann
Naja, damit weißt du nur das eine andere Instanz vorhanden ist, aber kannst noch nicht auf die hin verweisen.

Hängt davon ab wie zuverlässig das sein muss
Vorschlag:
teil1 übernimm die bereits gepostete Lösung
teil2 du suchst nach den bestehenden Process und schickst das Programm in den Vordergrund und beendest dich selbst
Suchen kannst du über den Namen deiner exe
oder du schreibst dir irgendwo die Processid des ersten Process hin
z.b. in die Registry, oder in eine Tempdatei..

Aktiveren eines "externen" Fensters wird hier schön erklärt
http://social.msdn.microsoft.com/Forums/eu/csharpgeneral/thread/7fd8e358-9709-47f2-9aeb-6c35c7521dc3
 
Zuletzt bearbeitet:
Hi,

ja gut, ich dachte, den Process der laufenden "exe" zu übernehmen wäre klar und es ging nur darum festzustellen, ob diese schon läuft.

Dann nimmst du einfach das obere Beispiel und anstatt der Message "Prozess läuft schon" kombinierst du das mit z.B. diesem Ansatz, das sollte klappen.

VG,
Mad
 
Ich habe es jetzt hinbekommen, vielen Dank für eure Hilfe.

Das größte Problem war, das wenn man das Fenster versteckt sich die Property 'MainWindowHandle'
von dem Process-Objekt auf '0' gesetzt hat. Hab das Problem nun so gelöst das ich mir den
WindowHandle der versteckten Form in eine Temp Datei gespeichert habe.

Gruß,
TheOtherSide

PS: Nochmals vielen vielen Dank
 
Hi,

hauptsache es klappt alles :)

Kannst du den entsprechenden Code hier vielleicht posten? Damit der Nächste nicht so lange suchen muss? Wäre klasse!

VG,
Mad
 
Zurück
Oben