Hallo allemaal,
Op dit moment zit ik met een probleem waar ik niet uitkom. Ik heb een applicatie gebouwd, die een aantal securitychecks doet, waaronder een check of de juiste USB-stick met encryptie aanwezig is.
Op zich werkt deze functionaliteit allemaal, alleen ik worstel met een probleem met het bijwerken van de GUI bij het tussentijds signalerern van het verwijderen/toevoegen van deze usb-stick. Ik maak hiervoor gebruik van de ManagementEventWatcher.
Als ik onderstaande (ingekorte) code gebruik, verschijnt er keurig een messagebox bij het optreden van een van de events.
Vervang ik deze code door dit (de securitychecks zijn voor de eenvoud niet toegevoegd):
Dan wordt alleen het eerste menu-item gedisabled.
Roep ik dezelfde sub UpdateTools(False) aan via een button, dan worden wel
alle buttons gedisabled..
Heeft iemand een idee hoe ik dit moet gaan oplossen? Ik heb al gezocht op google (er is een hoop geschreven over dit onderwerp) maar kan echt geen bruikbare tips vinden voor het oplossen hiervan.
Een gebruiker met hetzelfde probleem kun je hier vinden..
http://forums.microsoft.c...x?PostID=2009854&SiteID=1
Op dit moment zit ik met een probleem waar ik niet uitkom. Ik heb een applicatie gebouwd, die een aantal securitychecks doet, waaronder een check of de juiste USB-stick met encryptie aanwezig is.
Op zich werkt deze functionaliteit allemaal, alleen ik worstel met een probleem met het bijwerken van de GUI bij het tussentijds signalerern van het verwijderen/toevoegen van deze usb-stick. Ik maak hiervoor gebruik van de ManagementEventWatcher.
Als ik onderstaande (ingekorte) code gebruik, verschijnt er keurig een messagebox bij het optreden van een van de events.
code:
1
2
3
4
5
6
7
8
| Public Sub USBEventHandler(ByVal EventName As String, ByVal obj As Object)
Select Case EventName
Case "__InstanceCreationEvent"
MsgBox(obj("Caption") & " has been plugged")
Case "__InstanceDeletionEvent"
MsgBox(obj("Caption") & " has been plugged")
End Select
End Sub |
Vervang ik deze code door dit (de securitychecks zijn voor de eenvoud niet toegevoegd):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| Public Sub USBEventHandler(ByVal EventName As String, ByVal obj As Object)
Select Case EventName
Case "__InstanceCreationEvent"
UpdateTools(True)
Case "__InstanceDeletionEvent"
UpdateTools(False)
End Select
End Sub
Public Sub UpdateTools(ByVal Enabled As Boolean)
SetAllMenuItems(MenuStrip1, Enabled)
End Sub
Private Sub SetAllMenuItems(ByRef menuStrip As MenuStrip, ByVal enable As Boolean)
Dim c As ToolStripItem
Dim t As ToolStripMenuItem
For Each c In menuStrip.Items
c.Enabled = enable
If c.GetType Is GetType(ToolStripMenuItem) Then
t = c
SetAllMenuItems(t.DropDownItems, enable)
End If
Next
End Sub
Private Sub SetAllMenuItems(ByRef menus As ToolStripItemCollection, ByVal enable As Boolean)
Dim c As ToolStripItem
Dim t As ToolStripMenuItem
For Each c In menus
c.Enabled = enable
If c.GetType Is GetType(ToolStripMenuItem) Then
t = c
SetAllMenuItems(t.DropDownItems, enable)
End If
Next
End Sub |
Dan wordt alleen het eerste menu-item gedisabled.
Roep ik dezelfde sub UpdateTools(False) aan via een button, dan worden wel
alle buttons gedisabled..
Heeft iemand een idee hoe ik dit moet gaan oplossen? Ik heb al gezocht op google (er is een hoop geschreven over dit onderwerp) maar kan echt geen bruikbare tips vinden voor het oplossen hiervan.
Een gebruiker met hetzelfde probleem kun je hier vinden..
http://forums.microsoft.c...x?PostID=2009854&SiteID=1