我想禁用掉手持终端的一些按键。该怎么弄啊。。
网上查了一下资料,没用我想要的,全是在XP这类系统下的键盘钩子。。
或者是c++ 在wince 的键盘钩子
各位大神帮个忙、。。
给我一个用c#写的在win ce 5.0的运行的键盘钩子。。

解决方案 »

  1.   

    自己查阅WINCEAPI中文版电子书,希望有用
      

  2.   

    不可以啊。。
    win ce 手册里全是lib 的库。。C#不能用啊
      

  3.   

    有DLL文件,你可以PINVOKE一下就OK的了!
    例如:
     [DllImport("core.dll")]
            public static extern UInt32 CreateNetwork(IntPtr hWnd, string connectPointName, DEVICE_CONNECTION_TYPE connType, string username, string pwd, string apn, string telno, string proxy, UInt32 port);        [DllImport("core.dll")]
            public static extern UInt32 Ets(IntPtr hWnd, string connectPointName, string appName);
      

  4.   

    有DLL文件,你可以PINVOKE一下就OK的了!
    例如:
     [DllImport("core.dll")]
            public static extern UInt32 CreateNetwork(IntPtr hWnd, string connectPointName, DEVICE_CONNECTION_TYPE connType, string username, string pwd, string apn, string telno, string proxy, UInt32 port);        [DllImport("core.dll")]
            public static extern UInt32 Ets(IntPtr hWnd, string connectPointName, string appName);
      

  5.   

    以上代码什么意思? 是吧.lib转换成.DLL么??
      

  6.   

    操作系统中的DLL
    可以通过FRAEMWORK交互的
    具体学习下平台调用部分WEBCAST上有了!
      

  7.   

    装PlatformBuilder for Microsoft Windows Ce help 这个帮助是最全最权威的.
    还有WinCe的系统Api几乎都分装在coredll.dll中
            /// <summary>
            /// 创建一个钩子
            /// </summary>
            /// <param name="idHook">钩子的类型,表示对系统的哪个对象进行Hook</param>
            /// <param name="lpfn">回调函数的地址</param>
            /// <param name="hMod">实例句柄</param>
            /// <param name="dwThreadId">当前线程ID</param>
            /// <returns>钩子的ID,脱钩时需要用到,OOP的方式相当与返回一个对象</returns>
            [DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]
            public static extern IntPtr SetWindowsHookEx(int idHook, BackspaceKeyboardHook.HookProc lpfn, IntPtr hMod, uint dwThreadId);
      

  8.   

    BackspaceKeyboardHook
    说是找不到类型或命名空间
      

  9.   


    /// Return Type: LRESULT->LONG_PTR->int
    ///code: int
    ///wParam: WPARAM->UINT_PTR->unsigned int
    ///lParam: LPARAM->LONG_PTR->int
    [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
    public delegate int HOOKPROC(int code, System.IntPtr wParam, System.IntPtr lParam);[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct HHOOK__ {
        
        /// int
        public int unused;
    }[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct HINSTANCE__ {
        
        /// int
        public int unused;
    }public partial class NativeMethods {
        
        /// Return Type: HHOOK->HHOOK__*
        ///idHook: int
        ///lpfn: HOOKPROC
        ///hmod: HINSTANCE->HINSTANCE__*
        ///dwThreadId: DWORD->unsigned int
        [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint="SetWindowsHookExW")]
    public static extern  System.IntPtr SetWindowsHookExW(int idHook, HOOKPROC lpfn, [System.Runtime.InteropServices.InAttribute()] System.IntPtr hmod, uint dwThreadId) ;}函数原型是:SetWindowsHookExW(int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId)
      

  10.   

    =.= BackspaceKeyboardHook是我自己写的类,回调函数签名是:
            /// <summary>
            /// 当前应用程序键盘钩子的回调函数
            /// </summary>
            /// <returns></returns>
            /// <param name="nCode">当前状态</param>
            /// <param name="wParam">消息信息</param>
            /// <param name="lParam">消息信息</param>
            private IntPtr LocalKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam)
    你要自己写回调
      

  11.   

    搞死了。。
    我十分感谢lvdian520 ,也十分感谢给我提供帮助的,但我实在是搞不来。。
    这样吧。帮我写一个完整的钩子,具体功能是禁止使用手持终端的ALPHA键各位大神
    小弟在此跪谢了
      

  12.   

    我也知道啊。可是没办法,有这种需求我想过一个办法,用c++写一个钩子,然后生成DLL,但是我不会c++纠结
      

  13.   

    给我邮件封信 我发你个类  [email protected]
      

  14.   


    HHOOK g_hKeyHook=NULL;
    HWND g_hWnd=NULL;
    LRESULT CALLBACK KeyboardProc(
       int code,       // hook code
       WPARAM wParam,  // virtual-key code
       LPARAM lParam   // keystroke-message information
    )
    {
      if(VK_SPACE==wParam || VK_RETURN==wParam)//如果是空格键直接返回停止信息继续传递,否则继续传递
       return 1;
      else
       return CallNextHookEx(g_hKeyboard,code,wParam,lParam);
      return 1;
    }                            /*传递回调方法名称*/
    g_hKeyHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());//写在初始化里
    UnhookWindowsHookEx(g_hKeyHook);//用完钩子记得移除。偶刚才编译过的,给界面上拉个文本框,屏蔽了文本框的空格输入,MFC基于对话框的项目