首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

很简单的有关问题,硬是让小弟我弄复杂了,各位请进

2014-01-12 
很简单的问题,硬是让我弄复杂了,各位请进!我要把键盘击键转换成字符,用到系统API:ToUnicode代码简化如下:P

很简单的问题,硬是让我弄复杂了,各位请进!
我要把键盘击键转换成字符,用到系统API:ToUnicode
代码简化如下:



    Private Declare Function ToUnicode Lib "user32.dll" (ByVal wVirtKey As Int32, ByVal wScanCode As Int32,
                                                     ByRef lpKeyState As Byte, ByVal pwszBuff As StringBuilder,
                                                     ByVal cchBuff As Int32, ByVal wFlags As Int32) As Int32

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim b As New StringBuilder(" ", 1)
        ToUnicode(191, 0, 0, b, 1, 0)'191是字符"/"
        Debug.Print(b.ToString)
        Dim t As String = ""'如果没有这句,则上面的代码是正确的,否则变量b的值将为空!
    End Sub




我真心不懂了,各位怎么看?

[解决办法]
引用:
Quote: 引用:

写一个从keycode到字符的映射就好了,何必这么麻烦...


就算你说的方法更好,我也想知道上面这种情况怎么解决.



 [DllImport("user32.dll")]
 private extern static int ToUnicode(int wVirtKey, int wScanCode, ref byte lpKeyState,  StringBuilder pwszBuff, int cchBuff, int wFlags);



  StringBuilder sb=new StringBuilder();   
   byte by = 0;
   ToUnicode(191, 0,ref by,  sb, 1, 0);//'191是字符"/" 

这个在C#里没问题的
你把那个stringBuider的构造重改成无参的试试

热点排行