代码之家  ›  专栏  ›  技术社区  ›  Artem Alex Seam

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

  •  2
  • Artem Alex Seam  · 技术社区  · 7 年前

    我试图在R会话中访问user32.dll函数。我用了密码:

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

    .External 准备在R包创建期间使用。但是,没有禁止使用如上图所示。

    我使用的是Windows 8和RStudio(1.1.453)/R(3.5.0)。你能建议一种从R会话调用外部Windows函数的正确方法吗?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Technophobe01    7 年前

    阿泰姆,

    您正在访问Win32 C API,因此可以加载user32.dll,然后使用 Foreign {base} .C() 调用也访问窗口32 MessageBeep 功能。

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

    运行时输出

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

    你应该听到Windows消息“哔”的一声——唉,我还没想好如何在解决方案中包含声音(咯咯笑)。我希望以上能帮助你解决问题。

    注意:我也建议你看看 Rcpp 包,我是个大粉丝。