C# externes Programm im Hintergrund laufen lassen

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Lösung heißt "Dienst".

Genauer: Windows Dienst

Kein Fenster, keine Meldungen an den Nutzer. Automatischer Start mit Windows-Start oder beliebigen System-Ereignissen. Kontrolle durch den System-Daemon. Trotzdem (fast) voller Funktionsumfang (auch Meldungen, Logs, Fernsteuerung anderer Programme, etc. möglich).

Für die entwickler unter euch es wäre nett wenn ihr mir den Code schicken könntet.

Sehr witzig. :)

  1. Du solltest dich erst mal mit der Architektur auseinandersetzen.
  2. Du solltest VERSTEHEN, wie der Dienst arbeitet, wann er arbeitet, warum er arbeitet und was er dabei macht.
  3. Der Quellcode umfasst etliche Dutzend Zeilen. Solange dir die Punkte (1) - (2) fehlen, ist Quellcode sinnlos, denn jeder Dienst ist anders aufgebaut und braucht andere Inhalte. Und ein reines "Nu rennt er!" hilft dir auch nicht, weil du nicht einmal wüsstest, wo du deine Finger reinstecken kannst und wo besser nicht.

Alternative: Windows Forms

Beim Start kannst du die Anzeige des Hauptfensters unterdrücken. Da du auch die Anzeige im Task-Bar unterdrücken kannst, ist das fast wie ein Windows Dienst, nur holpriger.

Schaue dir dazu die Klasse "Program" deiner Windows-Forms-Anwendung an und experimentiere, bis du das gewünschte Ergebnis erreichst. (Auch hier gilt - wenn auch weniger dringend - die Anforderung (1) und (2) von oben; nur diesmal für den Lebenszyklus einer Windows Form.)

Das soll kein bösartiges Programm werden sondern ein einfaches Programm mit dem man Emails schreiben kann,ich weiß das es eig. keinen sinn macht aber ich bin noch neu in C# und versuche halt Erfahrung zusammeln.Also ich habe berreits das Design fertig (Keine Konsolenanwendung)und nun möchte ich das im Hintergrund sich der Standarbrowser öffnet und die E-Mail verschickt.

Das habe ich eigentlich schon geschafft nur öffnet sich das Firefox Fenster ( in meinem Fall) und ich möchte das Firefox zwar ausgeführt wird aber nicht in einem Fenster angezeigt wird.


Unsinkable2  07.04.2013, 00:27

und nun möchte ich das im Hintergrund sich der Standarbrowser öffnet und die E-Mail verschickt.

... errrr ... du bist sicher, dass du die Funktion von "Browsern", "Emails" und "Email-Clients" verstanden hast?!

Du kannst beispielsweise die Interop für MS Office nutzen, um "still" Emails via Outlook zu verschicken. Für andere Programme von Drittanbietern gibt es gelegentlich ähnliche (allerdings stark eingeschränkte) Funktionalität.

Um einfach eine Email zu verschicken, brauchst du allerdings nicht mehr als den System.Net.Mail-Namespace (System-Assembly) und die Kenntnis eines SMTP-Zugangs (Benutzername, Kennwort). Dann kannst du direkt aus deiner Anwendung heraus Emails verschicken. Ganz ohne "Browser".

0

Hallo florent22,

was genau soll das Programm machen und wie sollen beide zusammen hängen?

Da es kein Fenster erzeugen soll, hört es sich für mich eher nach einem 'bösartigen' Programm an.

Auch ich verstehe dein Problem nicht. Du willst eine Anwendung starten, die nicht angezeigt werden soll? Wozu? Was soll das werden?


Unsinkable2  07.04.2013, 00:19

Beispiele? Wie wäre es mit einem Dokumenten-Management-System? Oder mit einem verteilten Rechenprogramm? Oder mit einem Wartungsprogramm für Techniker? Oder ... oder ... oder?!

0
CrystalixXx  07.04.2013, 00:45
@Unsinkable2

Offensichtlich hast du die Frage nicht verstanden. Er möchte beispielsweise Paint starten, aber das Fenster nicht anzeigen. Dieser Sinn erschließt sich mir nicht. Das hat mit Windows Diensten überhaupt nichts zu tun. (Denn es geht hier um eine externe Anwendung, nicht die eigene.)

0