RPGツクール2000のイベントエディタのコマンドのクリップボードを取得・書き込みするモジュール
RPGツクール2000のイベントエディタのコマンドのクリップボードを取得・書き込みするモジュール
/******************************************************************************RPGツクール 200x イベント内容のクリップボード取得・書きこみモジュール作者 イノビアhttp://homepage2.nifty.com/MJHS/ (http://www.hinekure.net/)http://www.tkooler.net/※ 自由に転載・改造・配布可能です。・命令getcbbin p1 【クリップボードからバイナリデータを取得します】p1 = 代入変数戻り値(stat)0 以上 : 正常終了でバッファサイズとなっています。-1 : クリップボードを開けない-2 : クリップボードの中身がない-3 : ツクール形式のクリップボードではない-4 : データが取れない-5 : グローバルメモリの確保に失敗-6 : グローバルメモリのロック失敗-7 : グローバルメモリのコピーに失敗-------------------------------------------------------------------------------setcbbin p1,p2 【クリップボードにデータを書き込みます】p1 = 代入変数p2 = バッファのサイズ戻り値(stat)0 : 正常終了-1 : サイズ異常-2 : グローバルメモリの確保に失敗-3 : グローバルメモリのロック失敗-4 : クリップボードを開けない-5 : クリップボードの所有権取得に失敗-6 : クリップボードのコピーに失敗******************************************************************************/#include "user32.as"#include "kernel32.as"#module "_TKOOLEVCB_"// 共通#deffunc _opencbrepeat 100OpenClipboard 0res=statif res!0 : breakloopreturn res#deffunc getcbbin var cbBinBuf_opencb// 失敗if stat=0 : return -1// 数を取得CountClipboardFormatsif stat=0 : CloseClipboard : return -2formatsNum = stat// 内容が 566 かどうか?res = 0repeat formatsNumEnumClipboardFormats 0if stat=566 : res = 1 : breakif stat=0 : continueloop// 566 が見つからないif res=0 : CloseClipboard : return -3// データ取得GetClipboardData 566if stat=0 : CloseClipboard : return -4hGlobalMem = stat// グローバルメモリブロックのサイズ取得GlobalSize hGlobalMemif stat=0 : CloseClipboard : return -5globalMemLen = stat// 受け取りバッファー初期化sdim cbBinBuf,globalMemLenbufPtr = varptr(cbBinBuf)// グローバルメモリブロックをロックGlobalLock hGlobalMemif stat=0 : CloseClipboard : return -6globalMemPtr = stat// バッファーへコピーdupptr cbBinBuf,globalMemPtr,globalMemLen,2res = statGlobalUnlock hGlobalMemCloseClipboardif res=0 : return -7// サイズを返すreturn globalMemLen// これだけ定義されていないので書いておく#uselib "kernel32.dll"#func CopyMemory "RtlMoveMemory" sptr, sptr, sptr#deffunc setcbbin var cbBinBuf,int size// サイズチェックif size<=0 : return -1// グローバルメモリブロック確保GlobalAlloc 66,sizeif stat=0 : return -2hGlobalMem = stat// ポインター取得binptr = varptr(cbBinBuf)// グローバルメモリブロックをロックGlobalLock hGlobalMemif stat=0 : GlobalFree hGlobalMem : return -3globalMemPtr = stat// グローバルメモリブロックにコピー(結果が返ってこないのでちと不安)CopyMemory globalMemPtr,binptr,size// グローバルメモリブロックのロック解除GlobalUnlock hGlobalMem// クリップボードオープン_opencbif stat=0 : GlobalFree hGlobalMem : return -4// クリップボードの所有権をゲットEmptyClipboardif stat=0 : GlobalFree hGlobalMem : CloseClipboard : return -5// クリップボードにコピーSetClipboardData 566,hGlobalMemif stat=0 : GlobalFree hGlobalMem : CloseClipboard : return -6// クリップボードをクローズCloseClipboardreturn 0#global