Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Authorware UCD 开发大揭秘(四)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

用过或者说热爱DEPHI的朋友们都遇到过这种情况: 得到一个非常非常酷的VCL元件,确只能在IDE开发环境下运行,一旦编译成EXE文件单独运行就不能用了,偶尔”良心”的也会在这时弹出一个对话框,要你花XX美元注册并购买这个元件(这正是我等痛恨的,有同感的请举手).假设我们开发了一个Authorware插件并想用它赚几个Money的话,就要学 这就要求我们的程序能够判别出用户使用插件时是在开发环境还是运行环境.通过获取当前,但在Authorware下行不通,我试过发现:Authorware在开发时的窗口 和打包以后单独运行的窗口的类名是相同的!其实在Authorware3.0以后Marcomedia公司就提供了一个结构型参数,可以通过这个参数来获取运行状态,该结构型参数原本是C++语言描述的,现在本人将它转化为Object Pascal型声明如下:

type  

  AWPARAM = record 

    size: Word; //该结构的长度 

    hwnd: HWND; //Authorware窗口的句柄 

    authoring: Bool;//是否处在开发状态,是返回true 否返回false 

    reserved1: LongInt;//保留 

    reserved2: LongInt;//保留 

  end {AWPARAM}; 

  FAR = AWPARAM; 

  AWPARAM_PTR = ^AWPARAM //声明作为远指针调用 

   好了,将该参数结构描述加入工程文件(在uses语句之后),现在让我们使用这个参数来实现一个商业化的软件,还是以上面这个输入框函数为例,要求当用户在Athorware开发环境下使用时一切正常,当用户在打包 

后生成的EXE文件中调用时弹出一个要求注册的模式对话框。 

  首先将上面函数改为: 

…… 

function displayinputbox(winhandle: AWPARAM_PTR;aption,tiptxt,defaulttxt:Pchar):Thandle;stdcall; 

…… 

begin //从此处插入以下代码

  if winhandle.authoring=false then 

       messagebox(winhandle.hwnd,’这是一个未注册的Authorware插件’,’请注册’,MB_OK); 

…… 

可是,现在的问题是:如果用户不调用AWPARAM 这个参数,岂不是会出错? 

其实,Marcomedia公司早就想到了这一点。该参数只提供给程序员使用,对于用户而言,该参数 

是隐藏的,不透明的,是一个“虚拟参数”也就是用户在使用这个函数时根本就不加入这个参数,而是由Authorware自行加入,就好像这个参数根本就不存在. 

为了让Authorware识别这个参数,在字符串资源文件中需要作如下修改: 

…… 

     "ASSS\0",(第一个“A”表示要求Authorware传递一个AWPRRAM参数,切记!) 

…… 

现在你可以坐在家里等收钱吧


相关文章

相关软件