用過或者說熱愛dephi的朋友們都遇到過這種情況: 得到乙個非常非常酷的vcl元件,確只能在ide開發環境下執行,一旦編譯成exe檔案單獨執行就不能用了,偶爾」良心」的也會在這時彈出乙個對話方塊,要你花xx美元註冊並購買這個元件(這正是我等痛恨的,有同感的請舉手).假設我們開發了乙個authorware外掛程式並想用它賺幾個money的話,就要學 這就要求我們的程式能夠判別出使用者使用外掛程式時是在開發環境還是執行環境.通過獲取當前,但在authorware下行不通,我試過發現:authorware在開發時的視窗 和打包以後單獨執行的視窗的類名是相同的!其實在authorware3.0以後mar***edia公司就提供了乙個結構型引數,可以通過這個引數來獲取執行狀態,該結構型引數原本是c++語言描述的,現在本人將它轉化為object pascal型宣告如下:
type
awparam = record
size: word; //該結構的長度
hwnd: hwnd; //authorware視窗的控制代碼
authoring: bool;//是否處在開發狀態,是返回true 否返回false
reserved1: longint;//保留
reserved2: longint;//保留
end ;
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 這個引數,豈不是會出錯?
其實,mar***edia公司早就想到了這一點。該引數只提供給程式設計師使用,對於使用者而言,該引數
是隱藏的,不透明的,是乙個「虛擬引數」也就是使用者在使用這個函式時根本就不加入這個引數,而是由authorware自行加入,就好像這個引數根本就不存在.
為了讓authorware識別這個引數,在字串資源檔案中需要作如下修改:
…… "asss/0",(第乙個「a」表示要求authorware傳遞乙個awprram引數,切記!)
…… 現在你可以坐在家裡等收錢吧
Authorware UCD 開發大揭秘 二
入 門 篇 authorware外掛程式的格式。用過authorware的朋友可能會注意到在authorware系統目錄下有十幾個擴充套件名為.u32或.ucd的檔案,沒錯,這就是authorware的外掛程式。其實這些檔案的格式是非常標準的window動態鏈結庫檔案,也就是 dll這樣的檔案。au...
mac開發 ios開發
但是,任何乙個作業系統上,只使用開發語言就去開發程式是不行的。還需要有介面庫。尤其是支援object c的介面庫。mac上使用oc開發應用程式,都會使用xcode這個ide,整合開發工具,xcode中整合了gui介面庫。可以直接拖動控制項到介面上。objective c是一門語言,而cocoa 是這...
Quartz開發 基礎開發
開發環境.net 4.5.1 quartz.dll v2.4.1.0 依賴下面的dll common.loggin.dll v3.3.1.0 依賴下面的dll common.loggin.core.dll v3.3.1.0 本次教程只介紹基於quartz jobs.xml配置檔案方式的開發,這也是簡...