vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Fortgeschrittene
Re: Fullscreen Anwendung verliert Focus 
Autor: Preisser
Datum: 16.07.13 15:08

Hallo,

ich hab nochmal ein bisschen rumprobiert und dabei diesen Artikel gefunden, der das vorübergehende Deaktivieren von Autorun/Autoplay erklärt.
Dabei wird beispielsweise die Benachrichtigung, ddie sich beim Einstecken eines USB-Sticks normalerweise öffnet (mit einer Auswahl wie "Explorer öffnen", "Keine Aktion durchführen" usw.) unterdrückt, zumindest falls das Fenster der Anwendung im Vordergrund ist.

Hierfür muss man nicht WM_DEVICECHANGE, sondern QueryCancelAutoPlay abfangen und dabei TRUE zurückgeben.

Beispiel für eine Form:
Option Strict On
Imports System.Windows.Forms
Imports System.IO
Imports System.Collections.Generic
Imports System.Threading
Imports System.Diagnostics
Imports System.Runtime.InteropServices
 
 
Public Class MyForm
 
    ' Msg-Typ QueryCancelAutoPlay
    Private ReadOnly msgQueryCancelAutoPlay As Integer
 
    <DllImport("user32.dll", EntryPoint:="RegisterWindowMessageW", _
      SetLastError:=True, CharSet:=CharSet.Unicode, _
      CallingConvention:=CallingConvention.Winapi, ExactSpelling:=True)> _
    Private Shared Function RegisterWindowMessage(lpString As String) As Integer
    End Function
 
    Public Sub New()
        InitializeComponent()
 
        ' QueryCancelAutoPlay-Message registrieren
        msgQueryCancelAutoPlay = RegisterWindowMessage("QueryCancelAutoPlay")
        If msgQueryCancelAutoPlay = 0 Then 'Function failed
            Throw New System.ComponentModel.Win32Exception( _
              Marshal.GetLastWin32Error())
        End If
    End Sub
 
 
    Protected Overrides Sub WndProc(ByRef m As Message)
        Select Case m.Msg
            Case msgQueryCancelAutoPlay 'QueryCancelAutoPlay
                ' Autorun/Autoplay deaktivieren
                m.Result = New IntPtr(1) 'True
            Case Else
                MyBase.WndProc(m)
        End Select
    End Sub
 
End Class
Unter Win8 wird dann die Benachrichtigung beim Einstecken des USB-Sticks nicht mehr angezeigt, solange das Programm läuft und das Fenster im Vordergrund ist. Die Meldung, dass der USB-Stick repariert werden müsse, erscheint aber weiterhin - aber wie bereits gesagt, kommt die nur, wenn zuvor der USB-Stick nicht korrekt entfernt wurde, und man sollte ihn überprüfen lassen, damit die Meldung nicht mehr kommt.

Beitrag wurde zuletzt am 16.07.13 um 15:20:55 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fullscreen Anwendung verliert Focus1.933arachna15.07.13 15:02
Re: Fullscreen Anwendung verliert Focus1.340Blackbox15.07.13 20:11
Re: Fullscreen Anwendung verliert Focus1.399Preisser15.07.13 23:18
Re: Fullscreen Anwendung verliert Focus1.324Preisser15.07.13 23:21
Re: Fullscreen Anwendung verliert Focus1.673Preisser16.07.13 15:08
Re: Fullscreen Anwendung verliert Focus1.315arachna16.07.13 16:25
Re: Fullscreen Anwendung verliert Focus1.329Preisser16.07.13 16:46
Re: Fullscreen Anwendung verliert Focus1.366arachna17.07.13 09:16
Re: Fullscreen Anwendung verliert Focus1.336Preisser17.07.13 14:34

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-2025 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