将 C# 委托转换为 f#

2024-03-08

如何将委托转换为 F#?

代表:

delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam);

Edited

我正在做的是使用 F# 中的 C# 托管 API 进行低级键盘挂钩

Code:

[<DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)>]
extern bool UnhookWindowsHookEx(System.IntPtr hhk);

[<DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)>]
extern System.IntPtr CallNextHookEx(System.IntPtr hhk, int nCode,System.IntPtr wParam, System.IntPtr lParam);

[<DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)>]
extern System.IntPtr GetModuleHandle(string lpModuleName);

[<DllImport("user32.dll")>]
extern System.IntPtr SetWindowsHookEx(int code, HookProc func, System.IntPtr hInstance, int threadID);

代表:

type HookProc = delegate of (int * nativeint * nativeint) -> nativeint

功能

let HookCallback(nCode:int,wParam:System.IntPtr,lParam:System.IntPtr) = 
                    let t = (int)wParam
                    if  t = WM_KEYUP then 
                         let vkCode:int = Marshal.ReadInt32(lParam)
                         printfn "%A The Pressed key code is : "  vkCode
                    CallNextHookEx(_hookID, nCode, wParam, lParam)



let HookProcF = new HookProc(HookCallback)
let SetHook() = 
                let curProcess = Process.GetCurrentProcess()
                let curModule = curProcess.MainModule
                let t =0
                let h =  GetModuleHandle(curModule.ModuleName)
                SetWindowsHookEx(WH_KEYBOARD_LL, HookProcF, h, t);



let HookMoniter() = 
        let _hookID = SetHook()
        UnhookWindowsHookEx(_hookID);

尝试以下操作

type HookProc = delegate of int * nativeint * nativeint -> nativeint

注意nativeint只是 F# 名称IntPtr

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C# 委托转换为 f# 的相关文章

  • iOS-示例中的协议和委托

    好吧 我正在寻找 但没有任何方法对我有用 以下代码基于许多教程和苹果文档 但我无法让它工作 有人可以帮忙吗 代码崩溃于 obj delegatee self 在 B h 类中 respondsToSelector 和 PerformSele
  • 在 F# 中实现返回 Task 的 C# 方法

    我正在 F 中创建一个类型 该类型继承自 C 类 该类公开返回的方法Task
  • 如何更改 Rx Builder 实现来修复堆栈溢出异常?

    我正在尝试提出一个 Rx Builder 以在 F 计算表达式语法中使用反应式扩展 我该如何修复它 以免堆栈崩溃 就像下面的 Seq 例子一样 是否有计划提供 RxBuilder 的实现作为响应式扩展的一部分或作为 NET Framewor
  • 如何在 C++/CLI 中转发声明委托?

    How 以下内容无效 delegate MyDelegate ref class MyDelegate delegate void MyDelegate 申报工作如下 public delegate void MyDelegate Obje
  • 当 Bool 变量变为 True 时更改标签

    我不太确定如何解释这一点 我将把代码放在伪代码中以便于阅读 我几乎想要一个标签在类的 bool 变量更改时更改其文本 我不确定我需要使用什么 因为我使用的是 WPF 并且该类不能只更改我不更改的标签你不觉得吗 我需要举办某种活动吗 或者 W
  • 如何判断 F# 函数是否是纯函数?

    假设我有这两个 F 函数 let sq x x x let tm DateTime Now 显然 sq 是纯的 因为它对于给定的输入总是返回相同的值 而 tm 是不纯的 因为每次调用它时都会返回不同的值 一般来说 有没有一种方法可以确定 F
  • Cocos2D 2.1:iOS 6 中已弃用“Delegate”。如何设置此 AVAudioSession 的委托?

    在 Xcode 4 5 中启动了 Cocos2D 2 1 模板 没有物理引擎 针对 iOS 6 和 iPad 在 CDAudioManager m 文件中 以下代码 AVAudioSession session AVAudioSession
  • F# 参数传递

    我一直认为 F 有两种不同的方式来传递参数 柯里化风格和元组风格 这实际上是正确的吗 是不是很简单一种风格 柯里化风格和参数可以是简单值或元组 e g someFunc a b 这不是一个函数吗one咖喱风格的参数恰好是一个元组 因此允许我
  • 在 F# 中“合并”受歧视的联合?

    继从这个问题 https stackoverflow com questions 53506325 result vs raise in f async 我在组合不同类型时遇到问题Result类型在一起 以下是一个人为的示例 不是真实的代码
  • 何时在 F# 中使用区分联合与记录类型

    在继续讨论复杂的示例之前 我试图先弄清楚 F 的基础知识 我正在学习的材料介绍了区分联合和记录类型 我已经审阅了两者的材料 但我仍然不清楚为什么我们要使用其中之一而不是另一个 我创建的大多数玩具示例似乎都可以在两者中实现 记录似乎非常接近我
  • `ImmutableSortedSet` 和 fsharp `Set` 有什么区别?

    BCL引入了一组Immutable Collections http blogs msdn com b bclteam archive 2012 12 18 preview of immutable collections released
  • C#代表,参考解析时间

    我有一个关于 net 代表的简单问题 假设我有这样的事情 public void Invoke Action
  • 管道序列中的异常处理

    我正在开发一个基本的 2D CAD 引擎 管道操作符显着改进了我的代码 基本上 有几个函数从空间中的点 x y 开始 并在多次移动操作后计算最终位置 let finalPosition startingPosition gt moveByL
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • 什么是错误“类型实例化涉及 byref 类型。” F# 中的解决方法是什么

    我有一些代码包装 TA Lib 很多包装器非常相似 let sma timePeriod int data float let mutable outStartIndex 0 let mutable outNbElement 0 let m
  • F# 对于 OO 或命令式来说缺少什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 SqlBulkCopy 和 F# 在 SQL 中导出矩阵

    我想将大量数据从 F 传输到 SQL 表 基本上我的 F 代码创建了一个三列矩阵 UserID ProductID and price 和N行 我想将其 复制 粘贴 到数据库中 我尝试了多种选择 但最终 从 F 传输数据非常慢 10000
  • 从 C# 调用高阶 F# 函数

    给定 F 高阶函数 在参数中采用函数 let ApplyOn2 f int gt int f 2 和 C 函数 public static int Increment int a return a 我怎么打电话ApplyOn2 with I
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • F# nameof 运算符不是一等函数

    我正在使用 F 4 7

随机推荐

  • 使用经典 ASP 将 Base64 保存到图像

    我一直在尝试使用经典 ASP 从服务器端将 base64 文件保存为图像 我想要的是将文件自动保存到特定位置并给它一个文件名 现在我可以很好地编码它的这方面 但是 如果不先在浏览器上渲染 我就无法获取保存图像的代码 这对我来说不起作用 因为
  • 使用 Mercurial SCM 进行分支

    现在我正在学习 Ruby on Rails 并且正在阅读 Agile Web Development with Rails 一书 我还决定尝试一下 Mercurial 因为我已经阅读了分布式 SCM 的相关内容 而且这似乎是一个理想的情况
  • 从经典 asmx 切换到 wcf 的好处

    最近 我从使用 asmx Web 服务切换到使用 wcf 服务 转换即将完成 但我知道我需要进行大量错误检查和测试 以确保所有内容都按预期移植 我的问题是 到目前为止 我只能想到使用 wcf 的一个好处 那就是您可以获得一种简单的方法来实现
  • 使用 gae 远程时发生错误:com.google.appengine.repackaged.com.google.api.client.http.HttpResponseException:302

    当我使用 gae 远程 api 连接到远程服务器时 发生错误 如下所示 com google appengine repackaged com google api client http HttpResponseException 302
  • 按值对字典排序

    我有一本字典 格式如下 honda 4 toyota 7 ford 3 chevy 10 我想按第二列 即值 降序对其进行排序 期望的输出 雪佛兰 10 丰田 7 本田 4 福特 3 感谢来自以下机构的卡里登 如何按值对字典进行排序 htt
  • 将 pandas 数据框中的行和上一行与数百万行进行比较的最快方法

    我正在寻找解决方案来加速我编写的函数 以循环遍历 pandas 数据帧并比较当前行和前一行之间的列值 例如 这是我的问题的简化版本 User Time Col1 newcol1 newcol2 newcol3 newcol4 0 1 6 c
  • Java图形布局算法

    在我的 Java 应用程序中 我需要某种布局算法 第一种方法如下 需要安装Graphviz包 创建点文件 从java应用程序调用graphviz并解析输出 布局 使用 graphviz 的布局显示图形 属性点 但这个解决方案需要在运行的机器
  • C#编译器验证对象时的空状态静态分析

    我在我的项目中启用了 Nullable 检查 并且在代码中的很多地方我检查输入对象及其属性 如果出现问题则抛出异常 但如果一切正常 那么我确信输入对象不为空 有没有办法告诉编译器 以某种方式使用 NotNullWhen 属性或类似的东西 我
  • 从共享组件库导出“react-router”重定向

    我正在构建一个共享 React 组件库 有一个PrivateRoute我想要包含的组件 但是 当我将组件从模块库导入另一个应用程序时 出现错误 错误 不变失败 您不应在 之外使用 The PrivateRoute组件包裹着react rou
  • Git 将“未更改”的文件添加到舞台

    对于我正在从事的项目 我想使用 git add A 将一些文件添加到舞台上 问题是 Git 认为这些文件自上次提交以来没有变化 因此它们被忽略 然而 我亲自更改了该文件 但 Git 仍然认为该文件未更改 如何 强制 将该单个文件添加到我的存
  • 使用另一个表的总和更新表中的列

    我对 SQL 比较陌生 无法解决以下问题 简而言之 我有两张桌子 我们可以调用第一个表people name Margaret Jim Lola 第二个是一个列表expenses与不同实体相关的不同类型 name type amount M
  • 插入时数据类型不匹配(代码 20)

    在我的项目中 我使用 sqlite 数据库来保存图片及其位置 我在尝试将数据插入数据库时 收到此错误 E SQLiteLog 20 statement aborts at 5 INSERT INTO PHOTO VALUES NULL da
  • 如何在emr上重启hadoop集群

    我在 Amazon Elastic MapReduce 上安装了 hadoop 每当我尝试重新启动集群时 都会收到以下错误 stop all sh no jobtracker to stop The authenticity of host
  • React-Native是单线程执行还是多线程执行?

    我想通过示例了解 React Native 是否支持单线程或多线程方法 它是单线程的 请参考此链接 我想这会消除你所有的疑虑 https react native canny io feature requests p parallel m
  • 切换 Git 分支而不检出文件

    Git 是否可以在不检查所有文件的情况下切换到另一个分支 切换分支后 我需要删除所有文件 重新生成它们 提交并切换回来 所以检查文件只是浪费时间 大约有 14 000 个文件 这是一个很长的操作 为了让一切都清楚 我需要上传所有这些文档 h
  • Azure B2C Graph API - 强制用户在下次登录时更改密码[重复]

    这个问题在这里已经有答案了 我希望使用 graph api 来强制用户在下次登录时重置他 她的密码 如果我发送用户对象 ID 以及 forceChangePasswordNextLogin true我得到了成功的回复 但是 用户的帐户实际上
  • 如何在html5中浮动部分标签

    这可能是一个非常简单的问题 因此 如何漂浮 离开 section 标签 我尝试使用float left 但不起作用或者是否可以将标签与其内容垂直对齐 这是我的尝试 html div section h1 heyo h1 a href dro
  • as3 中的阿拉伯语文本

    如何使用as3从右到左显示阿拉伯文本 这段代码可以解决这个问题 import flash text AntiAliasType import flash text TextField import flash text TextFieldA
  • 总是在 Apache 中发送内容长度?

    我正在加载一个由 PHP 动态生成的特别大的 JSON 字符串 为了向用户提供一些反馈 我想显示下载进度 我已经弄清楚了代码 它对于静态内容 例如图像 JS 文件等 工作得很好 但是 它似乎不适用于动态文件 这是有道理的 因为动态文件没有可
  • 将 C# 委托转换为 f#

    如何将委托转换为 F 代表 delegate IntPtr HookProc int code IntPtr wParam IntPtr lParam Edited 我正在做的是使用 F 中的 C 托管 API 进行低级键盘挂钩 Code