从R&调用外部函数动态加载user32.dll

时间:2018-08-26 10:24:44

标签: r dllimport

我尝试在R Session中访问user32.dll函数。我使用了代码:

dyn.load("c://windows//system32//user32.dll")
.External("MessageBeep", 0L)

但是R会话崩溃。根据文档.External打算在R包创建期间使用。但是,如上所示,没有禁止使用它。

我正在使用Windows 8和RStudio(1.1.453)/ R(3.5.0)。您能否建议从R会话中调用外部Windows函数的正确方法?

1 个答案:

答案 0 :(得分:3)

Artem,

您正在访问Win32 C API,因此可以加载user32.dll,然后使用Foreign {base} .C()调用也可以访问Window32 MessageBeep函数

示例代码

dyn.load("c://windows//system32//user32.dll")
.C("MessageBeep")

运行时输出

> dyn.load("c://windows//system32//user32.dll")
> .C("MessageBeep")
list()
> 

您应该会听到Windows消息“哔”一声-las,我尚未弄清楚如何在解决方案中包含声音(咯咯笑)。希望以上内容能帮助您解决问题。

注意:我还建议您看看Rcpp程序包,我非常喜欢。