Как скрыть процесс в Visual Studio 2017 на языке Basic .NET? У нас обучающий центр в городе, возникла проблема, что все дети работая за компьютером периодически устанавливают не нужные программы и игры и выходят в интернет. Решил сделать оболочку вместо explorer. Встала проблемы скрытия процесса из диспетчера задач, и блокировка горячих клавиш (Ctrl+Alt+Del, Ctrl+Shift+Esc, Win+R, Alt+F4 и тд), которые могут отключить приложение. Подскажите, как лучше всего сделать всё это и может есть готовые примеры кода?
Заранее благодарю за подсказки или ссылки)

21 Авг 2019 в 06:28
332 +1
0
Ответы
1

Для скрытия процесса в Visual Studio 2017 на языке Basic .NET можно воспользоваться следующим кодом:

Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll")>
Public Shared Function ShowWindow(hWnd As IntPtr, nCmdShow As Integer) As Integer
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Hide()
Dim handle As IntPtr = Process.GetCurrentProcess().MainWindowHandle
ShowWindow(handle, 0) ' Скрыть окно
End Sub
End Class

Чтобы заблокировать горячие клавиши, необходимо использовать Windows API. Вот пример кода, который блокирует сочетания клавиш Ctrl+Alt+Del и Alt+Tab:

Imports System.Runtime.InteropServices
Public Class Form1
Private Const WH_KEYBOARD_LL As Integer = 13
Private Const WM_KEYDOWN As Integer = &H100
Private Const WM_SYSKEYDOWN As Integer = &H104
Private Delegate Function LowLevelKeyboardProc(nCode As Integer, wParam As IntPtr, lParam As IntPtr) As IntPtr
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function SetWindowsHookEx(idHook As Integer, lpfn As LowLevelKeyboardProc, hMod As IntPtr, dwThreadId As UInteger) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function UnhookWindowsHookEx(hhk As IntPtr) As Boolean
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function CallNextHookEx(hhk As IntPtr, nCode As Integer, wParam As IntPtr, lParam As IntPtr) As IntPtr
End Function
<DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function GetModuleHandle(lpModuleName As String) As IntPtr
End Function
Private Structure KBDLLHOOKSTRUCT
Public vkCode As Integer
End Structure
Private _hookID As IntPtr
Private _proc As LowLevelKeyboardProc
Private Function HookCallback(nCode As Integer, wParam As IntPtr, lParam As IntPtr) As IntPtr
If nCode >= 0 AndAlso wParam = CType(WM_SYSKEYDOWN, IntPtr) OrElse wParam = CType(WM_KEYDOWN, IntPtr) Then
Dim vkCode As Integer = Marshal.ReadInt32(lParam)
If (Control.ModifierKeys And Keys.Alt) = Keys.Alt AndAlso vkCode = Keys.Tab OrElse
(Control.ModifierKeys And Keys.Control) = Keys.Control AndAlso vkCode = Keys.Delete Then
Return CType(1, IntPtr) ' Блокирование клавиши
End If
End If
Return CallNextHookEx(_hookID, nCode, wParam, lParam)
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
_proc = New LowLevelKeyboardProc(AddressOf HookCallback)
_hookID = SetWindowsHookEx(WH_KEYBOARD_LL, _proc, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0)
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
UnhookWindowsHookEx(_hookID)
End Sub
End Class

Этот код блокирует сочетания клавиш Ctrl+Delete и Alt+Tab. Вы можете расширить его, чтобы блокировать другие горячие клавиши по вашему усмотрению.

Пожалуйста, помните, что использование подобных методов может быть незаконным или нарушать политику безопасности компьютера. Проверьте все местные законы и правила в отношении мониторинга и блокирования действий пользователей.

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир