Created
June 27, 2011 13:52
-
-
Save nikolat/1048890 to your computer and use it in GitHub Desktop.
Call PLUGIN from YAYA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
USAGE1 | |
{ | |
void PLUGIN('SAKNIFE\SAKNIFE.DLL', 'OnSwissArmyKnifeExecute', 'empty_recycle_bin') | |
} | |
USAGE2 | |
{ | |
PLUGIN('BeerShower\yaya.dll', 'OnMenuExec') | |
// valueex[0]: OnBeerShower | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//****************************************************************************** | |
//PLUGIN | |
//****************************************************************************** | |
#define C_CRLF2 CHR(0xd,0xa,0xd,0xa) /* 改行コードx2 */ | |
#define C_CRLF CHR(0xd,0xa) /* 改行コード */ | |
//------------------------------------------------------------------------------ | |
//関数名:PLUGIN | |
//機能 :PLUGINにリクエストを送出します | |
//引数 :_argv[0] 対象DLL名 | |
// _argv[1] Event ID | |
// _argv[2]~ Reference0~ | |
//------------------------------------------------------------------------------ | |
PLUGIN | |
{ | |
if PLUGINLOAD(_argv[0]) == 0 { | |
0 | |
return | |
} | |
// リクエスト文字列を作成 | |
_reqheader = / | |
"GET PLUGIN/2.0%(C_CRLF)/ | |
Charset: %(CHARSETLIBEX(_argv[0]))%(C_CRLF)/ | |
Sender: AYA%(C_CRLF)/ | |
ID: %(_argv[1])%(C_CRLF)" | |
for _i = 2; _i < _argc; _i++ { | |
_reqheader += "Reference%(_i - 2): %(_argv[_i])%(C_CRLF)" | |
} | |
_reqheader += C_CRLF | |
// 実行 | |
SHIORI3FW.RequestLib(_argv[0], _reqheader) | |
_script = '' | |
_event = '' | |
for _i = 0; _i < ARRAYSIZE(var.lib.key); _i++ { | |
case var.lib.key[_i] { | |
when 'Script' | |
_script = var.lib.value[_i] | |
when 'Event' | |
_event = var.lib.value[_i] | |
} | |
} | |
_script | |
SHIORI3FW.MakeValueexVariablePlugin(_event) | |
} | |
//------------------------------------------------------------------------------ | |
//関数名:PLUGINLOAD | |
//機能 :PLUGINを読み込みます | |
//引数 :_argv[0] 対象DLL名 | |
//------------------------------------------------------------------------------ | |
PLUGINLOAD | |
{ | |
// load エラーなら抜ける 初回のloadならGET Versionを送出する | |
_r_load = LOADLIB(_argv[0]) | |
if !_r_load { | |
0 | |
return | |
} | |
if _r_load == 1 { | |
if SUBSTR(SHIORI3FW.SendNOTIFYVersionPlugin(_argv[0]), 0, 1) != '2' { | |
UNLOADLIB(_argv[0]) | |
0 | |
return | |
} | |
SAORI.DllList ,= _argv[0] | |
} | |
1 | |
} | |
//------------------------------------------------------------------------------ | |
//関数名:SHIORI3FW.SendNOTIFYVersionPlugin | |
//機能 :PLUGINへID: versionを送出します | |
//引数 :_argv[0] PLUGINファイル名 | |
//------------------------------------------------------------------------------ | |
SHIORI3FW.SendNOTIFYVersionPlugin | |
{ | |
SHIORI3FW.RequestLib(_argv[0],/ | |
"NOTIFY PLUGIN/2.0%(C_CRLF)/ | |
Charset: %(CHARSETLIBEX(_argv[0]))%(C_CRLF)/ | |
Sender: AYA%(C_CRLF)/ | |
ID: version%(C_CRLF2)") | |
LIB.STATUSCODE | |
} | |
//------------------------------------------------------------------------------ | |
//関数名:SHIORI3FW.MakeValueexVariablePlugin | |
//機能 :リクエストヘッダからvalueex*変数を作成します | |
//引数 :_argv[0] イベントID | |
//------------------------------------------------------------------------------ | |
SHIORI3FW.MakeValueexVariablePlugin | |
{ | |
SHIORI3FW.ValueexList = IARRAY | |
valueex0 = _argv[0] | |
valueex[0] = _argv[0] | |
for _i = 0; _i < ARRAYSIZE(var.lib.key); _i++ { | |
if SUBSTR(_keyname = var.lib.key[_i], 0, 9) == "Reference" { | |
_n = TOINT(SUBSTR(_keyname, 9, 3)) + 1 | |
_varname = "valueex%(_n)" | |
void EVAL("%(_varname) = var.lib.value[_i]") | |
SHIORI3FW.ValueexList ,= _varname | |
valueex[_n] = var.lib.value[_i] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment