C#调用C++写dll的接口函数或者类对象麻烦详细说明一下谢谢!
解决方案 »
- 大虾快来看看!
- 从dataGridView中筛选
- 各位大侠帮帮小弟看看这代码为什么不能发送邮件!感激不尽!
- c#中利用spy++得到的window handle是不是可以直接在SetForegroundWindow中用?如何用以及其他。。。
- 关于DataGrid 的问题,
- "SELECT XX FROM XXX WHERE XX=strXXX", strXXX表示的是个string类型,但是这条语句打出来的时候并没有把strXXX值代进去,怎么解决?
- wince c# Dll向应用程序返回Dll内运行的状态,显示在应用程序的状态栏里。用什么方法啊?
- frameset问题
- 如何在Webform中嵌入一个winform控件?
- 请问谁有 Antechinus C# Programming Editor 注册码?
- 帮助文件
- 一元一次方程能直接解么?
internal interface IActiveDesktop
{
void ApplyChanges(ActiveDesktopApply dwFlags);
void GetWallpaper([MarshalAs(UnmanagedType.LPWStr)]string pwszWallpaper, int cchWallpaper, int dwReserved);
void SetWallpaper([MarshalAs(UnmanagedType.LPWStr)]string pwszWallpaper, int dwReserved);
void GetWallpaperOptions(ref WallpaperOption pwpo, int dwReserved);
void SetWallpaperOptions([In]ref WallpaperOption pwpo, int dwReserved);
void GetPattern([MarshalAs(UnmanagedType.LPWStr)]string pwszPattern, int cchPattern, int dwReserved);
void SetPattern([MarshalAs(UnmanagedType.LPWStr)]string pwszPattern, int dwReserved);
void GetDesktopItemOptions(ref ComponentOption pco, int dwReserved);
void SetDesktopItemOptions([In]ref ComponentOption pco, int dwReserved);
void AddDesktopItem([In]ref Component pcomp, int dwReserved);
void AddDesktopItemWithUI(IntPtr hwnd, [In]ref Component pcomp, DeskTopItemAddWithUI dwFlags);
void ModifyDesktopItem([In]ref Component pcomp, ComponentElement dwFlags);
void RemoveDesktopItem([In]ref Component pcomp, int dwReserved);
void GetDesktopItemCount(out int lpiCount, int dwReserved);
void GetDesktopItem(int nComponent, ref Component pcomp, int dwReserved);
void GetDesktopItemByID(IntPtr dwID, ref Component pcomp, int dwReserved);
void GenerateDesktopItemHtml([MarshalAs(UnmanagedType.LPWStr)]string pwszFileName, [In]ref Component pcomp, int dwReserved);
void AddUrl(IntPtr hwnd, [MarshalAs(UnmanagedType.LPWStr)]string pszSource, [In] ref Component pcomp, AddUrl dwFlags);
void GetDesktopItemBySource([MarshalAs(UnmanagedType.LPWStr)]string pwszSource, ref Component pcomp, int dwReserved);
}这是一个从C#导入C++接口的例子,其实如果的C++类是标准的COM,直接使用regsvr32注册到系统里,然后在C#项目上添加引用,选COM引用,找到对应的注册就可以了还可以使用一个命令,想不起来了,可以生成interop的接口文件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
PrintLab.OpenPort("POSTEK C168 200DPI");//打开打印机端口
PrintLab.PTK_ClearBuffer();//清空缓冲区
PrintLab.PTK_SetPrintSpeed(3);//设置打印速度
PrintLab.PTK_SetDarkness(8);//设置打印黑度
PrintLab.PTK_SetLabelHeight(600, 0);//设置标签的高度和定位间隙\黑线\穿孔的高度
PrintLab.PTK_SetLabelWidth(800);//设置标签的宽度
PrintLab.PTK_DrawTextTrueTypeW(200, 300, 40, 40, "宋体", 1, 400, false, true, true, "1", "12456789");//打印一行 TrueType Font文字
PrintLab.PTK_DrawBarcode(100, 20, 0, "1", 3, 3, 80, 'N', "12345");//打印一个条码
PrintLab.PTK_PrintLabel(1, 1);//命令打印机执行打印工作
PrintLab.ClosePort();//关闭打印机端口
}
}
}
public class PrintLab
{
[DllImport("WINPSK.dll")]
public static extern int OpenPort(string printname);
[DllImport("WINPSK.dll")]
public static extern int PTK_SetPrintSpeed(uint px);
[DllImport("WINPSK.dll")]
public static extern int PTK_SetDarkness(uint id);
[DllImport("WINPSK.dll")]
public static extern int ClosePort();
[DllImport("WINPSK.dll")]
public static extern int PTK_PrintLabel(uint number, uint cpnumber);
[DllImport("WINPSK.dll")]
public static extern int PTK_DrawTextTrueTypeW
(int x, int y, int FHeight,
int FWidth, string FType,
int Fspin, int FWeight,
bool FItalic, bool FUnline,
bool FStrikeOut,
string id_name,
string data);
[DllImport("WINPSK.dll")]
public static extern int PTK_DrawBarcode(uint px,
uint py,
uint pdirec,
string pCode,
uint pHorizontal,
uint pVertical,
uint pbright,
char ptext,
string pstr);
[DllImport("WINPSK.dll")]
public static extern int PTK_SetLabelHeight(uint lheight, uint gapH);
[DllImport("WINPSK.dll")]
public static extern int PTK_SetLabelWidth(uint lwidth);
[DllImport("WINPSK.dll")]
public static extern int PTK_ClearBuffer();
[DllImport("WINPSK.dll")]
public static extern int PTK_DrawRectangle(uint px, uint py, uint thickness, uint pEx, uint pEy);
[DllImport("WINPSK.dll")]
public static extern int PTK_DrawLineOr(uint px, uint py, uint pLength, uint pH);
}