none
Kann man in .NET formlose Formulare entwickeln? RRS feed

Antworten

  • Hallo Ellen,

    Ich suche eine Möglichkeit ein Programm mit einer Tastenkombination zu starten.

    erstelle eine Verknüpfung zu diesem Programm im Startmenü, wähle diese mit der rechten Maustaste aus => Eigenschaften > Unter Tastenkombination kannst Du hier einen Shortcut festlegen, der die Anwendung startet. Das ganze mit keiner einzigen Zeile Code.

    Den Rest habe ich gedanklich schon fertig. Meine Anfrage "formloses Formular" mag verwirren. Im Prinzip wäre das ein Formular ohne Titelleiste

    Dann ist es nicht "formlos", sondern "rahmenlos" => FormBorderStyle Eigenschaft => FormBorderStyle.None. Aber wenn Du das bereits programmiert hast, weißt Du das ja eh. Welchen Hintergrund hat also Deine Frage?!


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Ellen Ramcke Sonntag, 24. Oktober 2010 16:18
    Sonntag, 24. Oktober 2010 13:39
    Beantworter
  • Hallo Ellen,

    Aber nun möchte ich auf meine zentrale Frage "formlose Formulare" zurückkommen.
    Viele Klassen in NET benötigen im Grunde genommen keine grafische Oberfläche.

    es ist wirklich nicht leicht Dir zu folgen, wenn Du Verweise auf Beispiele/Bilder lieferst, die mit Deiner Fragestellung eigentlich überhaupt nichts zu tun haben bzw. in eine völlig andere Richtung gehen.

    Gibt es in VST einen Projekttyp Programm ohne Formular?

    Konsolenanwendungen haben für gewöhnlich kein Formular, jedoch das Konsolenfenster als solches. Möchtest Du ein Anwendung erstellen, die komplett ohne Ausgabe auskommt, kannst Du eine Windows Forms Anwendung erstellen, bei der Du das Formular entfernst und mit einer Main Methode versiehst, die Du als Einstiegspunkt der Anwendung festlegst. In dieser Main Methode kannst Du jetzt Deine Anweisungen ausführen. Das Programm beendet sich, sobald die letzte Anweisung abgeschlossen ist. Soll Deine Anwendung im Hintergrund laufen und bspw. periodisch Aktionen ausführen oder eben auf Tastenkombinationen reagieren, kannst Du einen eigenen ApplicationContext ableiten und über diesen Deine Aktionen steuern. Die Anwendung wird beendet, wenn der ApplicationContext beendet wird.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Ellen Ramcke Sonntag, 24. Oktober 2010 16:18
    Sonntag, 24. Oktober 2010 14:12
    Beantworter
  • Hallo Ellen,

    Bitte zeige mir noch ein Beispiel, wie ich Formular entferne und eine main Methode einfüge.

    Ich habe es gerade versucht. Im Formdesigner. Form1 lässt sich nicht löschen

    1. Neue Windows Forms Anwendung erstellen (Datei > Neu > Projekt)
    2. Rechte Maustaste auf "Form1" im Projektmappenexplorer und "Löschen" wählen.
    3. Sicherheitsfrage mit "OK" bestätigen
    4. Neues Modul hinzufügen
    5. Dort folgenden Code einfügen:
      Module Module1
       Sub Main()
        MsgBox("Hallo Welt")
       End Sub
      End Module
    6. Projekt => Eigenschaften > Anwendung wählen
    7. Häkchen bei "Anwendungsframework verwenden" entfernen
    8. Unter "Startformular" [Sub Main] wählen
    9. Änderungen speichern und Projekt erstellen/ausführen
    Ein weiteres Beispiel findest Du in diesem Thread.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Ellen Ramcke Sonntag, 24. Oktober 2010 16:18
    Sonntag, 24. Oktober 2010 15:38
    Beantworter

Alle Antworten

  •  

    Me.TopLevel = False
    
    Dadurch ist das Form nicht sichtbar, aber wenn es nicht aktiv ist kann man auch keine Tastenanschläge behandeln.

     

    Freitag, 22. Oktober 2010 20:42
  • Hallo Ellen,

    also Programme mit NET Klassen ohne Formular. Geht das?

    nur mal so doof gefragt: Was willst Du mit einem Formular, welches kein Formular hat? Du kannst natürlich einfach ein Projekt mit dem Typ "Klassenbibliothek", "Windows -Forms-Steuerelementbibliothek", ... erstellen und hast dann eine waschechte .NET Anwendung ohne Formular.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 22. Oktober 2010 20:56
    Moderator
  • Hallo Ellen,

    also Programme mit NET Klassen ohne Formular. Geht das?

    nur mal so doof gefragt: Was willst Du mit einem Formular, welches kein Formular hat? Du kannst natürlich einfach ein Projekt mit dem Typ "Klassenbibliothek", "Windows -Forms-Steuerelementbibliothek", ... erstellen und hast dann eine waschechte .NET Anwendung ohne Formular.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Aus dem Link der oben drüber steht (AHK ist so was wie AutoIt) geht hervor das es 'n Keylogger werden soll, oder nicht?

    Dachte ich jetzt so...

    Freitag, 22. Oktober 2010 21:22
  • Hallo,
    Aus dem Link der oben drüber steht (AHK ist so was wie AutoIt) geht hervor das es 'n Keylogger werden soll, oder nicht?

    Danke für den Hinweis. Da der Link einfach so ohne weitere Erklärung da steht, hab ich es für Werbung o.ä. gehalten. Aber auch so hätte ich mir das sicher nicht im Details durchgelesen, da die Fragestellung eigentlich überhaupt nichts mit sowas zu tun hat.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 22. Oktober 2010 22:31
    Moderator
  • Hallo Ellen,

    Hallo zusammen,
    also Programme mit NET Klassen ohne Formular.
    Geht das?

    Wäre erst mal zu klären, was ein "formloses Formular" ist.

    Anwendungen ohne Forms kann man natürlich mit .net
    erstellen. Die meisten Dienste haben keine sichtbare
    Oberfläche und können natürlich auch mit einer der .net-
    Sprachen erstellt werden. Aber auch andere Programme
    müssen nicht notwendigerweise eine sichtbare Benutzer-
    oberfläche (Form) haben.

    Wo siehst Du ein Problem, Programmcode ausserhalb
    eines Formmoduls auszuführen?
    Du kannst ein Programm mit einer Sub Main starten und
    von dort anderen Code aufrufen, der nichts mit einer
    Form zu tun hat.

    Vielleicht erklärst Du einfach mal, was Du wirklich
    machen möchtest.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Samstag, 23. Oktober 2010 07:17
  • Dim Portnames As String() = System.IO.Ports.SerialPort.GetPortNames
    

    Hallo zusammen,

    ich hatte eine Diskussion mit einem PC Freak Thema Autohotkey versa .NET. Er benutzt für den täglichen "Kleinkram" nur diese Skriptsprache. Ich habe mir das mal angesehen. Für alles gibt es auch eine Net Klasse.

    Beispiel: Der Code soll mit der Taste AltGr P ausgeführt und das Ergebnis  1 Sekunde in einer Box angezeigt werden. Danach beendet sich die Box selbständig.

    Geht das?

    Gruß Ellen


    Ich benutze/ I'm using VB2008 & VB2010
    Samstag, 23. Oktober 2010 07:38
  • Hallo Ellen,

    grunsätzlich könnte man etwas wie Autohotkey mit .NET entwickeln.
    Allerdings erfordert so etwas einige "schmutzige" Eingriffe wie System Hooks,
    denn .NET ist vielen Stellen ohne das native Windows API ziemlich hilflos.
    (Und auch Windows Forms ist nur eine nette Verpackung darum-

    Siehe Beiträge von Thorsten: Tastatureingaben außerhalb des Formulars erkennen
    Systemweiter Hotkey / Tastatur Hook - Daten dann an Cursor-Position einfügen

    und auch Global System Hooks in .NET

    Ein "Liebhaber" von einem dieser Tools wird davon ohnehin nicht ablassen.
    Und sei es, weil dort keine (umfangreichere) .NET Installation vorausgesetzt wird.

    Gruß Elmar

    Samstag, 23. Oktober 2010 07:53
    Beantworter
  • Hallo Elmar,

    in dem Code von Thorsten wird eine laufende Anwendung in den Vordergrund gestellt. Ich suche eine Möglichkeit ein Programm mit einer Tastenkombination zu starten.

    Den Rest habe ich gedanklich schon fertig. Meine Anfrage "formloses Formular" mag verwirren. Im Prinzip wäre das ein Formular ohne Titelleiste, welches lediglich eine Listbox enthält. Das automatische Beenden würde ich mit einem Timer realisieren, indem ich in der Timer.tick Routine einen Me.Close() ausführe.

    Gruß Ellen

    Das verstehe ich unter einem "formlosen Formular".  Habe ich programmiert

     


    Ich benutze/ I'm using VB2008 & VB2010

     

    Samstag, 23. Oktober 2010 09:51
  • Hallo Ellen,

    bei Thorsten Beispiel wird die Tastaturauswertung einem anderen Zweck zugeführt,
    das Prinzip ist aber das gleiche.

    Willst Du beim Tastendruck ein Programm starten, müsstest Du auf den Tastendruck
    mit Process.Start reagieren.

    Gruß Elmar

    Samstag, 23. Oktober 2010 10:20
    Beantworter
  • Hallo Ellen,

    Ich suche eine Möglichkeit ein Programm mit einer Tastenkombination zu starten.

    erstelle eine Verknüpfung zu diesem Programm im Startmenü, wähle diese mit der rechten Maustaste aus => Eigenschaften > Unter Tastenkombination kannst Du hier einen Shortcut festlegen, der die Anwendung startet. Das ganze mit keiner einzigen Zeile Code.

    Den Rest habe ich gedanklich schon fertig. Meine Anfrage "formloses Formular" mag verwirren. Im Prinzip wäre das ein Formular ohne Titelleiste

    Dann ist es nicht "formlos", sondern "rahmenlos" => FormBorderStyle Eigenschaft => FormBorderStyle.None. Aber wenn Du das bereits programmiert hast, weißt Du das ja eh. Welchen Hintergrund hat also Deine Frage?!


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Ellen Ramcke Sonntag, 24. Oktober 2010 16:18
    Sonntag, 24. Oktober 2010 13:39
    Beantworter
  • Thorsten, ich hab jetzt Deine Antwort noch garnicht gelesen. Bitte schau mal hier:

    Hallo zusammen,
    Der Code von Thorsten funktioniert. Dieser Code demonstriert nun, wie man mit der Tastenkombination Alt + M einen
    Editor starten kann. Das lässt sich natürlich beliebig erweitern.
    Aber nun möchte ich auf meine zentrale Frage "formlose Formulare" zurückkommen.
    Viele Klassen in NET benötigen im Grunde genommen keine grafische Oberfläche.
    Mögliche Anwendungsfälle für Programme ohne Formular wären z.B:
    - Steuerzeichen an einen Drucker senden
    - eine Zeichenfolge an einen seriellen Anschluss senden
    - einen Ping an eine feste IP Adresse senden
    - eine Datei oder ein ganzes Verzeichniss an einen festgelegten Ort kopieren
    - dieser HotKey Taskmanager auch nicht. Läuft im Hintergrund

    Also während der Laufzeit der Aktion Kein Fenster. Ggf am Ende ein popup Fenster mit den
    Information OK - nOK.

    Gibt es in VST einen Projekttyp Programm ohne Formular?

    schöne Grüße Ellen

     

    Imports System.Runtime.InteropServices
    Imports System.Diagnostics
    Public Class Form1
      Friend WithEvents HotkeyControl1 As HotkeyControl
    
      Private Sub Form1_Load(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs) Handles MyBase.Load
    
        HotkeyControl1 = New HotkeyControl()
        
        Try
          HotkeyControl1.RegisterHotkey(Keys.M Or Keys.Alt)
          HotkeyControl1.RegisterHotkey(Keys.M Or Keys.Control)
          HotkeyControl1.RegisterHotkey(Keys.M Or Keys.Shift)
        Catch ex As Exception
          MsgBox("register " & ex.Message)
        End Try
    
      End Sub
      ' -------  HOTKEY Taskmanager --------------------
      Private Sub HotkeyControl1_HotkeyPressed(ByVal sender As Object, _
                     ByVal e As System.Windows.Forms.KeyEventArgs _
                        ) Handles HotkeyControl1.HotkeyPressed
    
        MsgBox(String.Format("Modifier: {0} Key: {1}", e.Modifiers.ToString(), e.KeyCode.ToString()))
    
        If e.Modifiers = Keys.Alt Then
          If e.KeyCode = Keys.M Then
    
            Process.Start("notepad")
    
          End If
    
        End If
    
      End Sub
    
    End Class
    

    Ich benutze/ I'm using VB2008 & VB2010
    Sonntag, 24. Oktober 2010 13:57
  • Hallo Ellen,

    Aber nun möchte ich auf meine zentrale Frage "formlose Formulare" zurückkommen.
    Viele Klassen in NET benötigen im Grunde genommen keine grafische Oberfläche.

    es ist wirklich nicht leicht Dir zu folgen, wenn Du Verweise auf Beispiele/Bilder lieferst, die mit Deiner Fragestellung eigentlich überhaupt nichts zu tun haben bzw. in eine völlig andere Richtung gehen.

    Gibt es in VST einen Projekttyp Programm ohne Formular?

    Konsolenanwendungen haben für gewöhnlich kein Formular, jedoch das Konsolenfenster als solches. Möchtest Du ein Anwendung erstellen, die komplett ohne Ausgabe auskommt, kannst Du eine Windows Forms Anwendung erstellen, bei der Du das Formular entfernst und mit einer Main Methode versiehst, die Du als Einstiegspunkt der Anwendung festlegst. In dieser Main Methode kannst Du jetzt Deine Anweisungen ausführen. Das Programm beendet sich, sobald die letzte Anweisung abgeschlossen ist. Soll Deine Anwendung im Hintergrund laufen und bspw. periodisch Aktionen ausführen oder eben auf Tastenkombinationen reagieren, kannst Du einen eigenen ApplicationContext ableiten und über diesen Deine Aktionen steuern. Die Anwendung wird beendet, wenn der ApplicationContext beendet wird.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Ellen Ramcke Sonntag, 24. Oktober 2010 16:18
    Sonntag, 24. Oktober 2010 14:12
    Beantworter
  • Konsolenanwendungen haben für gewöhnlich kein Formular, jedoch das Konsolenfenster als solches. Möchtest Du ein Anwendung erstellen, die komplett ohne Ausgabe auskommt, kannst Du eine Windows Forms Anwendung erstellen, bei der Du das Formular entfernst und mit einer Main Methode versiehst, die Du als Einstiegspunkt der Anwendung festlegst.


    Hallo Thorsten,

    ShortCut festlegen - sooo einfach geht das. Vielen Dank!

    Bitte zeige mir noch ein Beispiel, wie ich Formular entferne und eine main Methode einfüge.

    Ich habe es gerade versucht. Im Formdesigner. Form1 lässt sich nicht löschen

    Gruß Ellen

     

     


    Ich benutze/ I'm using VB2008 & VB2010
    Sonntag, 24. Oktober 2010 14:37
  • Hallo Ellen,

    Bitte zeige mir noch ein Beispiel, wie ich Formular entferne und eine main Methode einfüge.

    Ich habe es gerade versucht. Im Formdesigner. Form1 lässt sich nicht löschen

    1. Neue Windows Forms Anwendung erstellen (Datei > Neu > Projekt)
    2. Rechte Maustaste auf "Form1" im Projektmappenexplorer und "Löschen" wählen.
    3. Sicherheitsfrage mit "OK" bestätigen
    4. Neues Modul hinzufügen
    5. Dort folgenden Code einfügen:
      Module Module1
       Sub Main()
        MsgBox("Hallo Welt")
       End Sub
      End Module
    6. Projekt => Eigenschaften > Anwendung wählen
    7. Häkchen bei "Anwendungsframework verwenden" entfernen
    8. Unter "Startformular" [Sub Main] wählen
    9. Änderungen speichern und Projekt erstellen/ausführen
    Ein weiteres Beispiel findest Du in diesem Thread.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Ellen Ramcke Sonntag, 24. Oktober 2010 16:18
    Sonntag, 24. Oktober 2010 15:38
    Beantworter
  • Hallo Thorsten,

    Oh danke!! das war es.

    Und auch vielen Dank für Deine Geduld

    schöne Grüße Ellen


    Ich benutze/ I'm using VB2008 & VB2010
    Sonntag, 24. Oktober 2010 16:18