C#如何调用其他类里面的系统函数
我现在在OperateIniFile.cs这个类中引用了几个系统函数如下:[DllImport("kernel32")]publicstaticexternlongWri...
我现在在OperateIniFile.cs这个类中引用了几个系统函数如下:
[DllImport("kernel32")]
public static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
然后我想在其他类里面,比如MainForm.cs里面调用者2个系统函数,但是在MainForm实例化了OperateIniFile一个对象,却根本调用不了。
我把系统函数声明当中的static去掉后,会报“必须在标记为“static”和“extern”的方法上指定 DllImport 特性”这样的错误。
请问,我该如何在MainForm里面调用OperateIniFile.cs里面的系统函数。如果再在MainForm里面声明的话,比较麻烦。因为我还有几个类都需要调用这2个系统函数,每个类里面都声明一次,太麻烦。 展开
[DllImport("kernel32")]
public static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
然后我想在其他类里面,比如MainForm.cs里面调用者2个系统函数,但是在MainForm实例化了OperateIniFile一个对象,却根本调用不了。
我把系统函数声明当中的static去掉后,会报“必须在标记为“static”和“extern”的方法上指定 DllImport 特性”这样的错误。
请问,我该如何在MainForm里面调用OperateIniFile.cs里面的系统函数。如果再在MainForm里面声明的话,比较麻烦。因为我还有几个类都需要调用这2个系统函数,每个类里面都声明一次,太麻烦。 展开
展开全部
在别的类调用win api 函数时,由于声明是静态的,所以必须要用这种格式来调用:
类名.函数名(形参列表);
正如你所述,你在MainForm.cs文件若想调用windows api底层函数,那么,只需这样做即可:
// 调用时语法格式:类名.函数名(实参列表);
OperateIniFile.WritePrivateProfileString(这里填实参);
注:多说一句,在OOP里,静态成员是属于类级别的,其它属于实例级别的(即对象)。这个是基础知识。
更多追问追答
追问
不行,我试了。
追答
能“点”的出来么,即输入所在类名后按“.” 有没有智能提示? 如果有说明是正确,反之应该是你没写对。
例如,我这是这样子调用外部api函数的:
// TestCall.cs
public class TestCall
{
[DllImport("xxx.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int MyFun(int x,int y);
}
// Program.cs
static void Main(string[] args) {
int sum=TestCall.MyFun(1,2);
Console.WriteLine(sum); // 结果输出3,正确地调用
Console.ReadKey();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询