有趣的是:Marcomedia公司为了保护它自己的版权,在Authorware4.0时代,一再要求使用它开发的多媒体程序要加上“Made With Marcomedia”的标示,可能没多大效果,进入5.0时代后,它强制性的在每个程序结束后显示一个E文的Marcomedia标示的Logo画面,使我们的多媒体程序或课件程序显得不那么专业化,简直大煞风景,如果我们能够先使用某种资源编辑器替换掉它的图标,再去掉这个logo画面,有谁能够知道程序是用Authorware作的呢?如何替换图标这里本人就不再说了,这样的软件还是比较多的,建议使用exescope这个工具,下面我们一起来实现后面的功能:用一个自定义函数quitawfast()代替Authorware原来的退出函数:
quit(0),让Authorware善始善终吧!
新建DLL工程,在uses语句中加入:windows,messages,在uses语句之后加入AWPARAM结构声明:
……
uses
……
windows,
message,
……
type
AWPARAM = record
……
//这中间别忘了引入你做好的字符串资源哟。
……
//此处为我们实现的函数:
function quitawfast(awparam:AWPARAM_PTR):boolean;stdcall;//使用隐含参数
var
ProcessID,cpid : Cardinal;
begin
try
ProcessID := GetWindowThreadProcessID(awparam.hwnd ,@cpid);//得到进程创建的线程标示符
TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,cpid),1);//杀死这个进程
result:=true;
except
result:=false;
end;
end;
exports//别忘了导出函数
quitawfast;
……
两行代码解决问题!
直接通过句柄关闭Authorware程序,而且因为使用了隐含参数,用户直接用quitawfast()就可以使用,忘掉Quit(0)吧,由于篇幅的原因
该函数的字符串资源文件这里就不给出了,请读者自行编写(相信不会有什么问题了)。