Thaiadmin

ทำยังไรให้โปรแกรมที่หรือสคิบที่เราสั่งให้ทำงานไม่ถูกปิดด้วย ctrl + c

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ thaiduons

  • ****
  • 178
  • 1
ผมเขียนโปรแกรมจัดการบัญชีผู้ใช้งานคอมพิวเตอร์ด้วย VB รันใน mono ครับ ทำเมนูไว้(ไม่ได้ใช้ GUI ) ให้ผู้ใช้เลือก(ลูกน้อง) พิมพ์ 1 2  3 อะไรแบบนั้น แต่ปัญหาคือ มันกด ctrl + c  แล้วมันถูกปิดได้ครับ ทำให้ทั้งหมดหยุดทำงาน พอจะมีวิธีไหนไม่ให้โปรแกรมถูกปิดไหม

ออฟไลน์ lusifer

  • *****
  • 2,987
  • 11
  • เพศ: ชาย
  • Create new planet
ลองดู Module นี้ครับ

Imports System.Diagnostics
Imports System.Runtime.InteropServices
Public Class Form1
   'Structure contain information about low-level keyboard input event
   Private Structure KBDLLHOOKSTRUCT
      Public key As Keys
      Public scanCode As Integer
      Public flags As Integer
      Public time As Integer
      Public extra As IntPtr
   End Structure

   'System level functions to be used for hook and unhook keyboard input
   Private Delegate Function LowLevelKeyboardProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
   <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
   Private Shared Function SetWindowsHookEx(ByVal id As Integer, ByVal callback As LowLevelKeyboardProc, ByVal hMod As IntPtr, ByVal dwThreadId As UInteger) As IntPtr
   End Function
   <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
   Private Shared Function UnhookWindowsHookEx(ByVal hook As IntPtr) As Boolean
   End Function
   <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
   Private Shared Function CallNextHookEx(ByVal hook As IntPtr, ByVal nCode As Integer, ByVal wp As IntPtr, ByVal lp As IntPtr) As IntPtr
   End Function
   <DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
   Private Shared Function GetModuleHandle(ByVal name As String) As IntPtr
   End Function
   <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
   Private Shared Function GetAsyncKeyState(ByVal key As Keys) As Short
   End Function

   'Declaring Global objects
   Private ptrHook As IntPtr
   Private objKeyboardProcess As LowLevelKeyboardProc

   

   Public Sub New()
      Dim objCurrentModule As ProcessModule = Process.GetCurrentProcess().MainModule
      'Get Current Module
      objKeyboardProcess = New LowLevelKeyboardProc(AddressOf captureKey)
      'Assign callback function each time keyboard process
      ptrHook = SetWindowsHookEx(13, objKeyboardProcess, GetModuleHandle(objCurrentModule.ModuleName), 0)
      'Setting Hook of Keyboard Process for current module
      ' This call is required by the Windows Form Designer.
      InitializeComponent()

      ' Add any initialization after the InitializeComponent() call.

   End Sub

   Private Function captureKey(ByVal nCode As Integer, ByVal wp As IntPtr, ByVal lp As IntPtr) As IntPtr
      If nCode >= 0 Then
         Dim objKeyInfo As KBDLLHOOKSTRUCT = DirectCast(Marshal.PtrToStructure(lp, GetType(KBDLLHOOKSTRUCT)), KBDLLHOOKSTRUCT)
         If objKeyInfo.key = Keys.RWin OrElse objKeyInfo.key = Keys.LWin Then
            ' Disabling Windows keys
            Return CType(1, IntPtr)
         End If
         If objKeyInfo.key = Keys.ControlKey OrElse objKeyInfo.key = Keys.CThen
            ' Disabling Ctrl + C
            Return CType(1, IntPtr)
         End If
      End If
      Return CallNextHookEx(ptrHook, nCode, wp, lp)
   End Function
End Class
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>