.
Anmeldung | Registrieren | Hilfe
in Suchen

GlobalHotkeys Klasse - Anwendung nur in Tray

Letzter Beitrag 24. Feb 2009 10:29 von Catscratch. 8 Antworten.
Seite 1 von 1 (9 Treffer)
Beiträge sortieren: Zurück Weiter
  • 24. Nov 2008 12:49

    • Raylow
    • Top 500 Mitwirkender
    • Registriert am 24. Nov 2008
    • Beiträge 2
    • Punkte 55

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Hallo zusammen,

    erst mal danke für die super Klasse von Tim Hartwig! Yes
    http://dotnet-snippets.de/dns/globale-hotkeys-tastenkombinationen-SID245.aspx

    Leider jedoch funktionieren die Hotkeys nicht mehr, wenn die Anwendung im Tray minimiert ist.
    Gibt es da eine Lösung für das Problem?


    Schonmal danke für jede Hilfe Smile
    Abgelegt unter: , , ,
    • IP-Adresse ist Registriert
  • 28. Nov 2008 19:06 Antwort zu

    • Tim Hartwig
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 66822 Lebach
    • Beiträge 116
    • Punkte 1.775

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Kann ich zwar nicht nachvollziehen aber die Notfalllösung wäre: Key aus dem System entfernen und neu registrieren. Überprüf mal deine Anwendung genau und vergleiche das mal mit einer Testanwendung ohne zusätzliche Funktionen. Quasi ein leeres Programm was nur in den Tray minimiert werden kann.
    • IP-Adresse ist Registriert
  • 01. Dez 2008 9:15 Antwort zu

    • Raylow
    • Top 500 Mitwirkender
    • Registriert am 24. Nov 2008
    • Beiträge 2
    • Punkte 55

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Hi Tim,

    danke für Deine Antwort!
    Dass die Hotkeys im minimierten Zustand im Tray nicht funktionieren hatte auch noch jemand anders..
    http://dotnet-snippets.de/dns/globale-hotkeys-tastenkombinationen-SID245.aspx  (guckst Du bei den Kommentaren)  Smile

    Hab die HKs mal in der Anweisung, welche das Programm in den Tray minimiert, neu registriert.
    Hilft aber leider nichts.


    Hier mal der Quellcode..

    Imports System
    Imports System.Drawing
    Imports System.Windows.Forms
    
    Public Class Form1
    
        Inherits System.Windows.Forms.Form
        Public WithEvents HK_Klasse As clsHotKey
    
        Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Neue Instanz erstellen
            HK_Klasse = New clsHotKey(Me)
    
            'Hotkey zuweisen (STRG + ALT + K)
            HK_Klasse.AddHotKey(Keys.K, clsHotKey.MODKEY.MOD_ALT Or clsHotKey.MODKEY.MOD_CONTROL, "TASTE_K")
    
            'Noch ein Hotkey zuweisen (STRG + ALT + X)
            HK_Klasse.AddHotKey(Keys.X, clsHotKey.MODKEY.MOD_ALT Or clsHotKey.MODKEY.MOD_CONTROL, "TASTE_X")
        End Sub
    
        'Event Handler
        Private Sub HK_Klasse_HotKeyPressed(ByVal HotKeyID As String) Handles HK_Klasse.HotKeyPressed
            Select Case HotKeyID
                Case "TASTE_K"
                    MsgBox("Das war die Kombination STRG + ALT + K")
                Case "TASTE_X"
                    MsgBox("Das war die Kombination STRG + ALT + X")
            End Select
        End Sub
    
        Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As  _
      System.EventArgs) Handles MyBase.SizeChanged
    
            If Me.WindowState = FormWindowState.Minimized Then
    
                'Hotkey zuweisen (STRG + ALT + K)
                HK_Klasse.AddHotKey(Keys.K, clsHotKey.MODKEY.MOD_ALT Or clsHotKey.MODKEY.MOD_CONTROL, "TASTE_K")
    
                'Noch ein Hotkey zuweisen (STRG + ALT + X)
                HK_Klasse.AddHotKey(Keys.X, clsHotKey.MODKEY.MOD_ALT Or clsHotKey.MODKEY.MOD_CONTROL, "TASTE_X")
    
                Me.ShowInTaskbar = False
                Me.NotifyIcon1.Icon = New Icon("76.ico")
                Me.NotifyIcon1.Visible = True
    
            End If
        End Sub
    
    
    
    End Class

    • IP-Adresse ist Registriert
  • 06. Dez 2008 10:35 Antwort zu

    • Tim Hartwig
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 66822 Lebach
    • Beiträge 116
    • Punkte 1.775

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Versuchs mal indem du vorher noch die registrierten Hotkeys aus dem System entfernst mit der Methode RemoveHotKey. Wenn es dann nicht geht dann weiß ich leider auch nicht weiter.
    • IP-Adresse ist Registriert
  • 21. Jan 2009 8:49 Antwort zu

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Hallo,

    ich habe Ihr Code-Beispiel in mein Programm integriert und es funktioniert soweit auch ganz gut. nur die sache ist die dass der User die Hotkeys frei über ein Konfigurationfenster definieren können soll.

    Das funktioniert bereits mit den Tasten (Alt, Shift, Ctrl). Aber der User soll auch zB Ctrl+p verwenden können.

    Das Ctrl wäre dann der ModKey und das p der Keycode, der als Integer behandelt wird. Wie kann ich es fertig bringen dem Keycode die eingabe aus einer Textbox zuzuweisen, die dann als Integer verwendet wird und beim Drücken des Hotkeys auch verwendet wird?

     

    Könnt ihr mir da helfen?

     

    Danke

    • IP-Adresse ist Registriert
  • 27. Jan 2009 11:23 Antwort zu

    • Soonu
    • Top 150 Mitwirkender
    • Registriert am 11. Apr 2008
    • München
    • Beiträge 8
    • Punkte 145

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Antworten
    Hallo,

    hab ein bisschen "nachgegrübelt" und folgendes gefunden.

    Anstatt...

    Me.ShowInTaskBar = False


    ...so...

    TaskBarVisible(CInt(Me.Handle), True)


    ...und hier die Funktion...

    Private Declare Auto Function FindWindow Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    
        Private Declare Auto Sub SetWindowPos Lib "User32" ( _
            ByVal hWnd As Integer, _
            ByVal hWndInsertAfter As Integer, _
            ByVal X As Integer, _
            ByVal Y As Integer, _
            ByVal cx As Integer, _
            ByVal cy As Integer, _
            ByVal wFlags As Integer)
    
        Public Sub TaskBarVisible(ByVal FormHandle As Integer, ByVal Visible As Boolean)
    
            If Visible = True Then
                SetWindowPos(FormHandle, 0, 0, 0, 0, 0, 64)
            Else
                SetWindowPos(FormHandle, 0, 0, 0, 0, 0, 128)
            End If
        End Sub


    Viele Grüße,
    Marcus
    • IP-Adresse ist Registriert
  • 23. Feb 2009 17:32 Antwort zu

    • Catscratch
    • Top 500 Mitwirkender
    • Registriert am 23. Feb 2009
    • Beiträge 2
    • Punkte 25

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Hi,

    is there a solution for this problem now? The last example with TaskBarVisible don't solved the problem, because the window only gets minimized to the taskbar. I only want a trayIcon without den program being visible in the taskbar.

    But if I use ShowInTaskBar I got the same problem like the thread creator. Then the shortcuts won't be able for use anymore.

    best regards
    • IP-Adresse ist Registriert
  • 23. Feb 2009 17:39 Antwort zu

    • Soonu
    • Top 150 Mitwirkender
    • Registriert am 11. Apr 2008
    • München
    • Beiträge 8
    • Punkte 145

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Hi CatScratch,

    try it with the function "TaskBarVisible".

    Replace the line "Me.ShowInTaskBar = False" with these line...

    TaskBarVisible(CInt(Me.Handle), True)
    best regards,
    soonu
    • IP-Adresse ist Registriert
  • 24. Feb 2009 10:29 Antwort zu

    • Catscratch
    • Top 500 Mitwirkender
    • Registriert am 23. Feb 2009
    • Beiträge 2
    • Punkte 25

    GlobalHotkeys Klasse - Anwendung nur in Tray

    Thx, you're right. I forgot to remove this.WindowState = FormWindowState.Minimized.

    best regards
    • IP-Adresse ist Registriert
Seite 1 von 1 (9 Treffer)

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum