Entwickler-Ecke

Sonstiges (.NET) - System Tray Anwendung


Vegeto - Fr 12.07.13 08:52
Titel: System Tray Anwendung
Hallo Community :)

ich habe mal eine Frage an euch, kenne mich mit System Tray Anwendung kaum bis gar nicht aus.
Ich möchte eine Anwendung mittels Visual Studio eine System Tray Anwendung machen, jetzt weiß ich zunächst nicht welche Vorlage ich benutzen soll :/ ???
Zudem stellt sich mir die Frage muss ich da auf irgendwas achten? Oder kann ich munter los Programmieren wie bei einer Form app?

Es soll unten rechts mein Logo enthalten und wenn ich mit der Rechten Maus raufklicke sollen Funktionen erscheinen sowas wie z.B. : "Öffnen", "Senden", "Schließen" etc.

Ich hoffe jemand kann mir eine erste Hilfestellung geben.

Lg


Th69 - Fr 12.07.13 09:04

Hallo Vegeto,

ja, du kannst einfach so loslegen. Nimm zum Starten z.B. C# - Vorlage für Tray-/NotifyIcon-Anwendung [http://dotnet-snippets.de/snippet/vorlage-fuer-tray-notifyicon-anwendung/541].


Vegeto - Fr 12.07.13 10:20

Hi Th69

Danke für deine rasche Antwort :)
Den Link habe ich auch noch geöffnet, wollte mal sehen was Ihr schreibt :)

Kann ich auch ein Tray Anwendung erstellen ohne benutzer Oberfläche, sprich unten recht nur ein Icon und es öffnet sich nur die Funktionen und durch klicken werden die Funktionen ausgeführt?
Also es soll kein Form anwendung aufgehen.

Lg


Th69 - Fr 12.07.13 11:57

Was genau verstehst du unter Funktionen ohne Benutzeroberfläche?


OlafSt - Fr 12.07.13 13:10

Ich denke mal, das da nur ein Popup-Menü aufgehen soll, keine Form.


Th69 - Fr 12.07.13 13:32

Aber genau das steht doch in dem von mir verlinkten Tutorial :gruebel:


Vegeto - Fr 12.07.13 14:55

Hi Th69 und Hallo OlafSt

@OlafSt genau das meine ich ^^

@Th69 Das stimmt schon, aber ich dachte mir komplett ohne WinForm, sprich keine Konsolen Anwendung Vorlage benutzen, aber ich mache es jetzt mit einer WinForm Vorlage, wo die Form nie angezeigt wird.

lg


Vegeto - Mi 17.07.13 10:00

Eine Frage habe ich da doch noch :D

Ich habe ein NotifyIcon erstellt und habe es mit einem ContextMenuStrip verbunden :D
Läuft auch alles ganz gut, doch gibt es die Möglichkeit bei dem Systemtray, dass er das menü dan anzeigt wenn man mit der Linken Maustaste klickt, weil so ist es Momentan so, dass es sich nur dann Öffnet wenn man mit der Rechten Maustaste klickt.

Lg


Th69 - Mi 17.07.13 11:18

Hallo Vegeto,

der Standardweg wäre wohl:
abonniere das MouseClick-Ereignis, prüfe auf Button.Left und rufe dann selber beim Contextmenu dessen Show-Methode auf (hier muß man jedoch dann ein Control angeben - und NotifyIcon ist selber kein Control, sondern direkt eine Component).

Als Alternative bleibt dann wohl nur P/Invoke, s. Open ContextMenuStrip on left mouse click on NotifyIcon [http://social.msdn.microsoft.com/Forums/windows/en-US/8de03b21-e144-4614-96cd-d382c2a2fbe9/open-contextmenustrip-on-left-mouse-click-on-notifyicon].

Hier in Kurzform:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void notifyIcon1_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
        mi.Invoke(notifyIcon1, null);
    }
}


Vegeto - Mi 17.07.13 12:08

@ TH69

DANKE


Vegeto - Do 18.07.13 09:46

Hallo habe eine weitere Frage zur Anwendung :D :D :D

Gibt es eine Möglichkeit das Ereignis MouseHover auf ein NotifyIcon zu benutzen.
Standart gemäß bietet das NotifyIcon MouseDown, MouseUp und MouseMove, doch ich benötige MousHover.
Ich weiß das ich einfach den Text (im Eigenschaftsfenster) des NotifyIcon ändern kann dann zeigt er den text an, doch hier kann man leider nur 64 Zeichen benutzen :/

Und ich bräuchte mehr.

Lg

edit.: habe schon sowas gefunden:
http://stackoverflow.com/questions/579665/how-can-i-show-a-systray-tooltip-longer-than-63-chars

geht es auch anders, also nicht das mir jeder diesen Link gibt.