vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Ist es möglich die Anzeigedauer von Balloon-Nachrichten zu ändern 
Autor: Dideldum
Datum: 24.06.23 18:17

MS hat ja den "ShowBalloonTip" seiner Überladung beraubt.
https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.notifyicon.showballoontip?f1url=%3FappId%3DDev16IDEF1%26l%3DDE-DE%26k%3Dk(System.Windows.Forms.NotifyIcon.ShowBalloonTip)%3Bk(TargetFrameworkMoniker-.NETFramework%2CVersion%253Dv4.7.2)%3Bk(DevLang-VB)%26rd%3Dtrue&view=windowsdesktop-7.0

Nun habe ich vergeblich versucht, die Anzeigedauer der Balloontip-Nachrichten mittels Registry-Änderung temporär zu ändern.
Laut meiner Recherche sollen die u.g. Registry-Einträge "TooltipDelay" bzw. nach anderen Quellen "MessageDuration" für diese spezielle "Einstellungen für Barrierefreiheit des Systems" und damit der Anzeigedauer der Balloon-Nachrichten verantwortlich sein.

Mein Problem ist dass ich einen ziemlich umfangreichen Text ausgeben muss um der Benutzer auch genug Zeit haben soll, diesen zu lesen und zu erfassen, bevor die Balloon-Nachricht ausgeblendet wird.

Zwischenspeichern der Registry-Einträge, temporäres Ändern dieser Schlüssel auf eigene Werte und Anzeigen der Balloon-Nachricht:

Private Sub NotifyAusgaben(Nachricht As String)
 
    tooltipDelay = My.Computer.Registry.CurrentUser.OpenSubKey("Control" & _
      "Panel\Accessibility").GetValue("TooltipDelay")
 
    My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Accessibility", _
      True).SetValue("TooltipDelay", ( _
      My.Settings.Einstellungen_Sicherheitsfragen_Balloontip_Anzeigedauer * _
      1000).ToString)
 
    messageDuration = My.Computer.Registry.CurrentUser.OpenSubKey("Control" & _
      "Panel\Accessibility").GetValue("MessageDuration")
 
    My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Accessibility", _
      True).SetValue("MessageDuration", ( _
      My.settings.Einstellungen_Sicherheitsfragen_Balloontip_Anzeigedauer * _
      1000).ToString)
 
    icn_TaskleistenSymbol.Visible = True
    icn_TaskleistenSymbol.BalloonTipTitle = Nachricht
    icn_TaskleistenSymbol.BalloonTipText = IO.Path.GetFileNameWithoutExtension( _
      VordergrundFensterOwner) & " | " & VordergrundFensterTitel
    icn_TaskleistenSymbol.ShowBalloonTip() ' Überladung mit 
    ' My.Settings.Einstellungen_Sicherheitsfragen_Balloontip_Anzeigedauer * 
    ' 1000 funktioniert nicht mehr
end sub
Wiederherstellen der originalen Registry-Einträge nach dem Schliessen der Balloon-Nachricht:

Private Sub icn_TaskleistenSymbol_BalloonTipClosed(sender As Object, e As _
  EventArgs) Handles icn_TaskleistenSymbol.BalloonTipClosed
 
    My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Accessibility", _
      True).SetValue("MessageDuration", messageDuration.ToString)
 
    My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Accessibility", _
      True).SetValue("TooltipDelay", tooltipDelay.ToString)
 
    If My.Settings.Programm_SymbolInTaskleiste = 1 Then
        icn_TaskleistenSymbol.Visible = True
    Else
        icn_TaskleistenSymbol.Visible = False
    End If
End Sub
Habe es mit neuen DWORD(32 Bit), DWORD(64Bit), Zeichenfolge und Binärwert versucht, da bei mir keiner dieser beiden Einträge existierte und ich daher nicht weiss, welches Format MS für diese Keys erwartet..

Aber alle diese Versuche lassen das System kalt - das Balloon-Nachrichten-Fenster schliesst sich immer nach 5sec.

Wie bekomme ich denn eine Balloon-Nachricht mit einstellbarer Anzeigedauer gebacken?

Hat da vielleicht einer von Euch einen Tip?
Wäre toll - das ist eines der letzten Probleme in meinem neuen Proggi...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ist es möglich die Anzeigedauer von Balloon-Nachrichten zu ändern 
Autor: Dideldum
Datum: 24.06.23 18:38

P.S. den Tip mit dem Key "MessageDuration" habe ich von hier:
https://www.tenforums.com/tutorials/6175-change-how-long-show-notifications-windows-10-a.html#option3

Der Key "TooltipDelay" soll einstellen, wie lange die Öffnungsverzögerung des Balloon-Nachrichten-Popups sein soll.

Habe mit Sekunden-Einträgen und mit Millisekundeneinträgen getestet - alles erfolglos...

Beitrag wurde zuletzt am 24.06.23 um 18:40:00 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ist es möglich die Anzeigedauer von Balloon-Nachrichten zu ändern 
Autor: Dideldum
Datum: 24.06.23 20:02

Ich glaube, ich habe den Fehler...

Der Registry-Watcher hat mich auf eine Spur gebracht:
der korrekte RegistryPfad zum Key "MessageDuration" ist:
"Computer\HKEY_USERS\S-1-5-21-4101106637-555814362-1434368344-1001\Control Panel\Accessibility" - Key "MessageDuration"
Wobei der Zahlensalat wohl die UserID des aktuellen Users ist.

Also lese ich aus:
"Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI" den Key "SelectedUserID" aus, von welchem ich annehme, dass dies der aktuell angemeldete User ist.
In dem Key steht die ID, welche ich für das Auslesen der oben genannten "MessageDuration" brauche.

Private Sub NotifyAusgaben(Nachricht As String)
    ' ID des aktuellen Users auslesen
    selectedUserSID = My.Computer.Registry.LocalMachine.OpenSubKey( _
      "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI").GetVa_
      lue("SelectedUserSID")
 
    ' MessageDuration auslesen
    messageDuration = My.Computer.Registry.Users.OpenSubKey(selectedUserSID & _
      "\Control Panel\Accessibility").GetValue("MessageDuration")
 
    ' Meine eigene MessageDuration schreiben
    My.Computer.Registry.Users.OpenSubKey(selectedUserSID & "\Control" & _
      "Panel\Accessibility", True).SetValue("MessageDuration", ( _
      My.Settings.Einstellungen_Sicherheitsfragen_Balloontip_Anzeigedauer))
 
    ' Symbol anzeigen
    icn_TaskleistenSymbol.Visible = True
    ' Title reinschreiben
    icn_TaskleistenSymbol.BalloonTipTitle = Nachricht
    ' Untertitel reinschreiben
    icn_TaskleistenSymbol.BalloonTipText = IO.Path.GetFileNameWithoutExtension( _
      VordergrundFensterOwner) & " | " & VordergrundFensterTitel
    ' Balloon-Nachricht anzeigen
    icn_TaskleistenSymbol.ShowBalloonTip( _
      My.Settings.Einstellungen_Sicherheitsfragen_Balloontip_Anzeigedauer)
 
    ' Weil - warum auch immer die folgende Sub "BalloonTipClosed" nicht wie 
    ' erwartet automatisch nach Zeitablauf der "MessageDuration" selbst 
    ' aufgerufen wird, einen Delay-Aufruf mit meiner "MessageDuration" starten 
    Delay(My.Settings.Einstellungen_Sicherheitsfragen_Balloontip_Anzeigedauer)
    ' Wenn Zeit abgelaufen, das Taskleistensymbol ausblenden. Dadurch erst wird 
    ' die folgende Sub "BalloonTipClosed" aufgerufen
    icn_TaskleistenSymbol.Visible = False
 
End Sub
 
Private Sub icn_TaskleistenSymbol_BalloonTipClosed(sender As Object, e As _
  EventArgs) Handles icn_TaskleistenSymbol.BalloonTipClosed
 
    ' Original "MessageDuration in Registry schreiben
    My.Computer.Registry.Users.OpenSubKey(selectedUserSID & "\Control" & _
      "Panel\Accessibility", True).SetValue("MessageDuration", messageDuration)
 
    ' Taskleistensymbol wieder anzeigen, wenn Einstellungen = "Symbol in" & _
      "Taskleiste"
    icn_TaskleistenSymbol.Visible = My.Settings.ICE_SymbolInTaskleiste
 
End Sub
 
    Public Sub Delay(nSekunden As Long)
        Dim TimeOut As Long
 
        TimeOut = (GetTickCount / 1000) + nSekunden
        Do
            Application.DoEvents()
        Loop Until TimeOut < (GetTickCount / 1000)
    End Sub
Ist das so richtig und funktioniert auf allen Rechnern bei allen Benutzern?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ist es möglich die Anzeigedauer von Balloon-Nachrichten zu ändern 
Autor: Manfred X
Datum: 30.06.23 09:42

Hallo!

Der Tooltip ist nicht für ländere Erklärungen vorgesehen,
sondern soll nur eine kurze "Gedächtnisstütze" für den Benutzer sein.

Ich empfehle, bei erklärungsbedürftigen Formularen die
kontext-sensitive Hilfe zu nutzen.
Der Benutzer kann dann - nach Kenntnisnahme des Tooltips - selbst entscheiden,
ob er einen umfangreicheren Informationstext abrufen möchte.

Ich rate davon ab, in der Windows-Registry Schlüssel-Werte zu ändern.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ist es möglich die Anzeigedauer von Balloon-Nachrichten zu ändern 
Autor: Dideldum
Datum: 06.07.23 22:52

Hi Manfred,

was war denn ein Woche lang mit diesem Forum los?

Danke Dir!

Da hast schon recht.

Die Infos sind eigentlich nur die Ausgabe eines u.U. längeren Dateipfads, in welchem die entsprechenden Objekte gespeichert wurden.
Damit die Leuts diesen auch komplett lesen können, habe ich mich an der Verlängerung der von MS beschnittenen Anzeigedauer versucht.
Leider ergebnislos.
Meine Registry-Änderungen werden zwar angenommen, aber MS speichert die in der "Erleichterten Bedienung" eingestellte Anzeigezeit für die Balloon-Nachrichten wohl verschlüsselt noch woanders und hat diesen Eintrag nur aus Abwärtskompatibilitätsgründen noch in der Registry.
Vermute ich zumindest nachdem, was der Registry-Watcher sagt.
Da habe ich wohl keine Chance, das per Software einzustellen.
Habe jetzt in den Hilfe-Dokumenten beschrieben, wie die Benutzer in den o.g. Einstellungen selbst eine Zeit definieren können.
Ist nur schade, denn per Programm hätte ich nur mein Proggi die Zeit hochsetzen können und bei Programmende den vorherigen Wert wiederherstellen können.

Beste Grüsse
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel