装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);
BackspaceKeyboardHook 说是找不到类型或命名空间
/// 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 {
win ce 手册里全是lib 的库。。C#不能用啊
例如:
[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);
例如:
[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);
可以通过FRAEMWORK交互的
具体学习下平台调用部分WEBCAST上有了!
还有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);
说是找不到类型或命名空间
/// 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)
/// <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)
你要自己写回调
我十分感谢lvdian520 ,也十分感谢给我提供帮助的,但我实在是搞不来。。
这样吧。帮我写一个完整的钩子,具体功能是禁止使用手持终端的ALPHA键各位大神
小弟在此跪谢了
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基于对话框的项目