ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 129|ตอบกลับ: 0

[VB.NET] โค้ดในการควบคุมแป้นคีย์บอร์ดเสมือน กับการใช้งานบน Windows Tablet PC

[คัดลอกลิงก์]

255

กระทู้

379

โพสต์

3153

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
3153



สำหรับ แป้นคีย์บอร์ดเสมือน (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 ถูกเรียกใช้งานขึ้นมา ซึ่งเวลาที่เราจบโปรแกรม ก็ต้องทำการกำจัดโปรเซสของมันทิ้งไป ...


มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Imports System.Runtime.InteropServices

  2. Public Class frmOnScreenKeyBoard

  3.     Const WM_SYSCOMMAND As Int32 = 274
  4.     Const SC_CLOSE As UInt32 = 61536

  5.     '// WinAPI32 From VB6. (API = Application Programming Interface)
  6.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  7.     Private Shared Function PostMessage( _
  8.         ByVal hWnd As IntPtr, _
  9.         ByVal Msg As UInteger, _
  10.         ByVal wParam As IntPtr, _
  11.         ByVal lParam As IntPtr _
  12.         ) As Boolean
  13.     End Function

  14.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  15.     Private Shared Function FindWindow( _
  16.         ByVal lpClassName As String, _
  17.         ByVal lpWindowName As String _
  18.         ) As IntPtr
  19.     End Function

  20.     '// Instance Name Process
  21.     Private _P As Process

  22.     Private Sub HideKeyboard()
  23.         Dim KeyboardWnd As IntPtr = FindWindow("IPTip_Main_Window", Nothing)
  24.         PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, SC_CLOSE, 0)
  25.     End Sub

  26.     Private Sub btnShowKeyboard_Click(sender As Object, e As EventArgs) Handles btnShowKeyboard.Click
  27.         If _P Is Nothing OrElse _P.HasExited Then
  28.             If _P IsNot Nothing AndAlso _P.HasExited Then _P.Close()
  29.             '// Sometimes TabTip may be hidden.
  30.             Call KillProcess()
  31.             _P = Process.Start("C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe")
  32.             '/ Focus to the textbox
  33.             TextBox1.Focus()
  34.         End If
  35.     End Sub

  36.     Private Sub KillProcess()
  37.         For Each p As Process In Process.GetProcesses
  38.             If String.Compare(p.ProcessName, "TabTip", True) = 0 Then
  39.                 p.Kill()
  40.                 Exit For
  41.             End If
  42.         Next
  43.     End Sub

  44.     Private Sub btnHideKeyboard_Click(sender As System.Object, e As System.EventArgs) Handles btnHideKeyboard.Click
  45.         Call HideKeyboard()
  46.     End Sub

  47.     Private Sub frmOnScreenKeyBoard_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  48.         Call HideKeyboard()
  49.         Me.Dispose()
  50.         GC.SuppressFinalize(Me)
  51.         Application.Exit()
  52.     End Sub

  53. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2020-10-21 11:07 , Processed in 0.578863 second(s), 4 queries , File On.

Powered by Discuz! X3.3 R20170401, Rev.54

© 2001-2017 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้