如何通过COM调用实例?

如何通过COM调用实例?,com,f#,windows-xp,skype,Com,F#,Windows Xp,Skype,我尝试在F#上通过COM调用skype实例。 目的是获取情绪信息 test.fs //导入skype4com Api 打开SKYPE4COMLib SKYPE4COM类型= 新建()=新建SKYPE4COM() 让我们来感受一下心情= 让aSkype=new SKYPE4COM 您的代码有几个问题。首先,SKYPE4COM类的构造函数似乎是递归的(?),如果尝试创建实例,这将导致堆栈溢出。其次,您收到的错误是因为您正在使用new运算符,但尚未完成对构造函数的调用(即,您需要使用括号应用构造函数:

我尝试在F#上通过COM调用skype实例。
目的是获取情绪信息

test.fs
//导入skype4com Api
打开SKYPE4COMLib
SKYPE4COM类型=
新建()=新建SKYPE4COM()
让我们来感受一下心情=
让aSkype=new SKYPE4COM

您的代码有几个问题。首先,
SKYPE4COM
类的构造函数似乎是递归的(?),如果尝试创建实例,这将导致堆栈溢出。其次,您收到的错误是因为您正在使用
new
运算符,但尚未完成对构造函数的调用(即,您需要使用括号应用构造函数:
let aSkype=new SKYPE4COM()
)。尽管如此,您还是遇到了另一个问题,因为您的类型没有公开
CurrentUserProfile
属性,所以您的代码仍然无法工作

试着这样做:

open SKYPE4COMLib

let getMood() =
  SkypeClass().CurrentUserProfile.MoodText

您的代码有几个问题。首先,
SKYPE4COM
类的构造函数似乎是递归的(?),如果尝试创建实例,这将导致堆栈溢出。其次,您收到的错误是因为您正在使用
new
运算符,但尚未完成对构造函数的调用(即,您需要使用括号应用构造函数:
let aSkype=new SKYPE4COM()
)。尽管如此,您还是遇到了另一个问题,因为您的类型没有公开
CurrentUserProfile
属性,所以您的代码仍然无法工作

试着这样做:

open SKYPE4COMLib

let getMood() =
  SkypeClass().CurrentUserProfile.MoodText
考虑使用将成员添加到现有类型:

open SKYPE4COMLib

type SKYPE4COMLib with
    member this.GetMood() =
        aSkype.CurrentUserProfile.MoodText
这将允许您访问GetMood,就像它是SKYPE4COMLib类型上定义的成员函数一样:

let x = new SKYPE4COMLib()
printfn "%A" (x.GetMood())
考虑使用将成员添加到现有类型:

open SKYPE4COMLib

type SKYPE4COMLib with
    member this.GetMood() =
        aSkype.CurrentUserProfile.MoodText
这将允许您访问GetMood,就像它是SKYPE4COMLib类型上定义的成员函数一样:

let x = new SKYPE4COMLib()
printfn "%A" (x.GetMood())

该消息是一个常见的语法/格式问题。它指的是哪一行?--问题将出现在之前的表达式中。谢谢评论。此行中的消息“语气”消息是一般语法/格式问题。它指的是哪一行?--问题将出现在之前的表达式中。谢谢评论。这句话的语气是“谢谢你的建议”。但我仍然想知道为什么需要公开CurrentUserProfile属性。因为我认为例如open System.Windows.Forms然后让frm=new Form();非常感谢。让getMood=SkypeClass().CurrentUserProfile.MoodText。然后完全按照我的要求工作。谢谢!谢谢你的建议。但我仍然想知道为什么需要公开CurrentUserProfile属性。因为我认为例如open System.Windows.Forms然后让frm=new Form();非常感谢。让getMood=SkypeClass().CurrentUserProfile.MoodText。然后完全按照我的要求工作。谢谢!