Χμμ,φαντάζομαι αυτό το post θα γίνει αρκετά μεγάλο.Θα σου δείξω παράλληλα πώς θα κρύψεις taskbar και το start button και το πώς θα απερνεγοποιήσεις τα Windows buttons και τον συνδυασμό Ctrl+Esc  με keyboard hook.Επαναλαμβάνω επί του πρώτου ότι αν απλά θες fullscreen application υπάρχουν μακράν καλύτεροι τρόποι.
Στην κλάση της φόρμας σου πρόσθεσε την δήλωση:
Imports System.Runtime.InteropServices
 
Χρειάζεσαι την εξής δομή για τις πληροφορίες από το πληκτρολόγιο:
[StructLayout(LayoutKind.Sequential)] 
public struct KBDLLHOOKSTRUCT 
{
public uint vkCode; 
public uint scanCode; 
public uint flags; 
public uint time; 
public UIntPtr dwExtraInfo;
} 
Επιπλέον θα χρειαστεί να εισάγεις τις λίγες  παρακάτω unmanaged Windows συναρτήσεις:
 παρακάτω unmanaged Windows συναρτήσεις:
<DllImport("user32.dll")> _ 
Protected Shared Function FindWindowA(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll")> _ 
Protected Shared Function GetWindow(ByVal hWnd As IntPtr, ByVal wCmd As UInteger) As IntPtr
End Function
<DllImport("user32.dll")> _ 
Protected Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Integer
End Function
<DllImport("user32.dll")> _ 
Protected Shared Function SetWindowsHookEx(ByVal code As Integer, ByVal func As HookProc, ByVal hInstance As IntPtr, ByVal threadID As Integer) As IntPtr
End Function
<DllImport("user32.dll")> _ 
Protected Shared Function UnhookWindowsHookEx(ByVal hhook As IntPtr) As Integer
End Function
<DllImport("user32.dll")> _ 
Protected Shared Function CallNextHookEx(ByVal hhook As IntPtr, ByVal code As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
End Function
<DllImport("user32.dll", CharSet := CharSet.Auto, ExactSpelling := True)> _ 
Protected Shared Function GetAsyncKeyState(ByVal vKey As Integer) As Short
End FunctionΚαι μια delegate που χρειάζεται να περάσουμε στην SetWindowsHookEx:
Public Delegate Function HookProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
Τέλος χρειάζεσαι και κάποια μέλη:
Private hTaskBar As IntPtr
'Handle για το taskbar 
Private hStartButton As IntPtr
'Handle για το start button 
Shared hhk As IntPtr = IntPtr.Zero
'Handle για το keyboard hook 
Private KeyboardHoocProc As HookProc
'αυτήν θα περάσουμε στο SetWindowsHookEx 
Είμαστε έτοιμοι λοιπόν να δούμε τον κώδικα που κάνει τη δουλειά.Για οικονομία χώρου απέφυγα να δηλώσω ορισμένες μεταβλητές που θα έκαναν πιο κατανοητό τον κώδικα.Στο event Load της φόρμας σου πρόσθεσε τα εξής:
hTaskBar = FindWindowA("Shell_TrayWnd", "")
'βρίσκουμε το handle για το taskbar 
hStartButton = GetWindow(hTaskBar, 3)
'και εκμεταλλευόμαστε το ότι το αμέσως προηγούμενο παράθυρο είναι το start button 
ShowWindow(hTaskBar, 0)
'και κρύβουμε και τα δύο 
ShowWindow(hStartButton, 0)
KeyboardHoocProc = New HookProc(KeyboardHookHandler)
'Αναθέτουμε τη συνάρτηση που θα εκτελεί το hook 
hhk = SetWindowsHookEx(13, KeyboardHoocProc, IntPtr.Zero, 0)
'και τον δημιουργούμε
Και τα εξής στο Closed event της φόρμας:
ShowWindow(hTaskBar, 5)
'Ξαναεμφανίζουμε τα παράθυρα 
ShowWindow(hStartButton, 5)
UnhookWindowsHookEx(hhk)
'Και απεγκαθιστούμε το hook
 
Η παρακάτω συνάρτηση αναλαμβάνει να κάνει disable τα Windows buttons και τον συνδυασμό Ctrl+Esc:
Public Shared Function KeyboardHookHandler(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
    If nCode < 0 Then
        Return CallNextHookEx(hhk, nCode, wParam, lParam)
    End If
    'οι πληροφορίες βρίσκονται στην lParam,τις εξάγουμε με Marshaling 
    Dim kb As KBDLLHOOKSTRUCT = DirectCast(Marshal.PtrToStructure(lParam, GetType(KBDLLHOOKSTRUCT)), KBDLLHOOKSTRUCT)
    Select Case kb.vkCode
        Case &H5b
            'μπλοκάρουμε το αριστερό windows key 
            Return 1
        Case &H5c
            'το ίδιο για το δεξιό 
            Return 1
        Case &H1b
            'πατήθηκε το escape key 
            'αν την ίδια ώρα είναι πατημένο και το αριστερό ή δεξί Ctrl,μπλοκάρουμε τον συνδυασμό 
            If (GetAsyncKeyState(&Ha2) And &H8000) <> 0 OrElse (GetAsyncKeyState(&Ha3) And &H8000) <> 0 Then
                Return 1
            Else
                Exit Select
            End If
    End Select
    Return CallNextHookEx(hhk, nCode, wParam, lParam)
End Function
Αν γλυτώσω το ban από τους moderators για το post-γίγας  ορίστε η λύση,που αν και όχι η καλύτερη,δουλεύει και είναι και η πιο απλή στην υλοποίηση.
 ορίστε η λύση,που αν και όχι η καλύτερη,δουλεύει και είναι και η πιο απλή στην υλοποίηση.