|
สำหรับ แป้นคีย์บอร์ดเสมือน (Virtual Keyboard) ตัวนี้จะเป็น Windows Tablet PC หรือ คีย์บอร์ดเพื่อใช้งานกับจอสกรีนที่เป็นแบบสัมผัส (Touch Screen) น่ะครับ ซึ่งเราจะเรียกใช้งานผ่านไปยัง C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe ซึ่งไม่ใช่ OSK.EXE หรือ On Screen Keyboard ... โค้ดชุดนี้จะเป็นพื้นฐานในการเรียกใช้ให้แสดง หรือซ่อน และกำจัดโปรเซส (Kill) มันออกไปจากระบบ ด้วยการใช้คำสั่งผ่าน WinAPI 32 หรือ Windows Application Programming Interface ...
การตั้งค่า Touch Keyboard ... เราสามารถกำหนดค่าใน Registry หรือเขียนโค้ดเข้าไปควบคุมให้มันแสดงผลตามที่เราต้องการก็ได้
เมื่อ TabTib.exe ถูกเรียกใช้งานขึ้นมา ซึ่งเวลาที่เราจบโปรแกรม ก็ต้องทำการกำจัดโปรเซสของมันทิ้งไป ...
มาดูโค้ดฉบับเต็มกันเถอะ ...
- Imports System.Runtime.InteropServices
- Public Class frmOnScreenKeyBoard
- Const WM_SYSCOMMAND As Int32 = 274
- Const SC_CLOSE As UInt32 = 61536
- '// WinAPI32 From VB6. (API = Application Programming Interface)
- <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
- Private Shared Function PostMessage( _
- ByVal hWnd As IntPtr, _
- ByVal Msg As UInteger, _
- ByVal wParam As IntPtr, _
- ByVal lParam As IntPtr _
- ) As Boolean
- End Function
- <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
- Private Shared Function FindWindow( _
- ByVal lpClassName As String, _
- ByVal lpWindowName As String _
- ) As IntPtr
- End Function
- '// Instance Name Process
- Private _P As Process
- Private Sub HideKeyboard()
- Dim KeyboardWnd As IntPtr = FindWindow("IPTip_Main_Window", Nothing)
- PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, SC_CLOSE, 0)
- End Sub
- Private Sub btnShowKeyboard_Click(sender As Object, e As EventArgs) Handles btnShowKeyboard.Click
- If _P Is Nothing OrElse _P.HasExited Then
- If _P IsNot Nothing AndAlso _P.HasExited Then _P.Close()
- '// Sometimes TabTip may be hidden.
- Call KillProcess()
- _P = Process.Start("C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe")
- '/ Focus to the textbox
- TextBox1.Focus()
- End If
- End Sub
- Private Sub KillProcess()
- For Each p As Process In Process.GetProcesses
- If String.Compare(p.ProcessName, "TabTip", True) = 0 Then
- p.Kill()
- Exit For
- End If
- Next
- End Sub
- Private Sub btnHideKeyboard_Click(sender As System.Object, e As System.EventArgs) Handles btnHideKeyboard.Click
- Call HideKeyboard()
- End Sub
- Private Sub frmOnScreenKeyBoard_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Call HideKeyboard()
- Me.Dispose()
- GC.SuppressFinalize(Me)
- Application.Exit()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET (2010) ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|