C#生成CHM文件(外篇使用hha.dll)
在《C#生成CHM文件》一系列中,我们是以微软自带的hhc.
为了解决这个问题,我们可以使用hha.dll来编译CHM文件
网上关于hha.dll的资料比较少,因为微软并没有公布hha
实际上其CHM项目编译器的HHA.DLL中提供了名为HHA_
下面是HHA_CompileHPP的原型
BOOL WINAPI HHA_CompileHHP(PCSTR pszHhpFile, FARPROC pLogString, FARPROC pProgress, INT nRes);
我们可以使用DllImport来调用hha.dll中的函数.
主要的代码如下:
代码
string log1;
string log2;
delegate bool GetInfo(string log);
//编译信息
public bool GetInfo1(string log)
{
log1 = log;
return true;
}
//进度信息
public bool GetInfo2(string log)
{
log2 = log;
return true;
}
[DllImport("hha.dll")]
private extern static void HHA_CompileHHP(string hhpFile, GetInfo g1, GetInfo g2, int stack);
public void Compile()
{
using (OpenFileDialog ofd=new OpenFileDialog())
{
ofd.Filter = "CHM项目文件|*.hhp";
ofd.ShowDialog();
if (ofd.FileName!="")
{
HHA_CompileHHP(ofd.FileName, GetInfo1, GetInfo2, 0);
MessageBox.Show("编译成功");
}
}
}
string log2;
delegate bool GetInfo(string log);
//编译信息
public bool GetInfo1(string log)
{
log1 = log;
return true;
}
//进度信息
public bool GetInfo2(string log)
{
log2 = log;
return true;
}
[DllImport("hha.dll")]
private extern static void HHA_CompileHHP(string hhpFile, GetInfo g1, GetInfo g2, int stack);
public void Compile()
{
using (OpenFileDialog ofd=new OpenFileDialog())
{
ofd.Filter = "CHM项目文件|*.hhp";
ofd.ShowDialog();
if (ofd.FileName!="")
{
HHA_CompileHHP(ofd.FileName, GetInfo1, GetInfo2, 0);
MessageBox.Show("编译成功");
}
}
}
补充:软件开发 , C# ,