★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★ 俺のモジュール詰め合わせ (和モジュール・アソート) version : 05 HP『略して仮。』menyukko. Last Update : 2020.10.29 Copyright (C) 2020 衣日和 All rights reserved. +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ ◆ 概要 - Outline - ◆ 【 パッケージ 】oremo_05.zip ※配布形態により変動あり 【 区分 】フリーソフト (HSP3用モジュール集) 【 入手先 】HSPプログラムコンテスト2020 ・https://hsp.tv/contest2020/ ・https://dev.onionsoft.net/seed/info.ax?id=1870 【 対応環境 】HSP3.51以降 私がモジュールを作り始めたのはまだHSPが3.0のベータ版の頃でした。今日では標準機能や動作する環境も広が り、古いモジュールの制約が目立つようになっていました。 また、繰り返した増築の痕跡で荒れていたり使ったら結構面倒だったということもあり、もろもろ解消を目指し 一新を図ることにしました。 ・単体のファイルで機能が一式揃いワンキーヘルプにも対応する。 ・未初期化変数で結果レポートを流さない、マクロ/初期化コードによるインクルード位置制限をしない。 ・標準系ランタイム(32bit/64bit、Shift_JIS/UTF-8)に表記分けすることなく対応、コンソールやDISHも想定。 ◇ 推奨環境 ◇ このモジュールはHSP3.6(ベータ版)上で実装しているので最新のHSP3と共にご使用いただければ幸いです。 モジュールの一部機能は、DISH(windows)のスクリーン/ウィンドウメッセージ割り込みと64bitランタイムのラ ベル型引数の修正を前提としています。 ドキュメントやサンプルは、ベータ3までの新機能と新素材をふんだんに利用した状態で製作しています。 +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ ◆ モジュール - Module - ◆ モジュールをインクルードすればOKです。単体で動作し別途のモジュールやDLLを用意する必要はありません。 「常用してもいいよ」という方はぜひnodmodフォルダごとcommonフォルダ内にコピーしてください。起動ディレ クトリや作業フォルダを意識する必要がなくなり、ワンキーヘルプ(F1ヘルプ)に詳細が表示されるようになりま す。 ◇ 数字文字列の四則演算 - LilyRoseModule.hsp - ◇ 標準機能で製作した四則演算モジュールで、多倍長整数の分数計算を文字列で行います。どのランタイムや実機 でも同一の出力(FPU不使用)と誤差蓄積の抑制を目指しています。詳細はモジュール内のドキュメントをご覧く ださい。 val = lilyadd("augend", "addend") ; 加算(たし算) val = lilysub("minuend", "subtrahend") ; 減算(ひき算) val = lilymul("multiplicand", "multiplier") ; 乗算(かけ算) val = lilydiv("dividend", "divisor") ; 除算(わり算) val = lilyquo("dividend", "divisor") ; 除算(わり算の商) val = lilyrem("dividend", "divisor") ; 除算(わり算のあまり) val = lilyabs("number", mode) ; 絶対値 val = lilycom("number1", "number2") ; 比較 val = lilyto ("number", format, decs) ; 書式変換(整数/小数/分数を10/2/16進数で) ◇ ステラモジュール - StellaModule.hsp - ◇ 標準機能で製作した図形周辺の計算と簡単リッチ描画をまとめたモジュールです。描画はコピーモード設定を適 用するためgsquareを駆使しています。 ・ヒットテスト(あたり判定) val = starHitCircle (px, py, posx, posy, wid, high) ; 点と楕円 val = starHitTriangle(px, py, t1x, t1y, t2x, t2y, t3x, t3y) ; 点と三角形 val = starHitLine2 (Ax1, Ay1, Ax2, Ay2, Bx1, By1, Bx2, By2) ; 線分と線分、その交点座標取得 ・座標計算 val = starEllOrbit(count, max, width, height, offsetx, offsety) ; 楕円周上のXY座標(等角区間) val = starEllYtoX (input, width, height, offset) ; 楕円周上のX座標(Y座標入力) starBoxRot .angle, width, height, centx, centy, offsetx, offsety ; 回転矩形の4頂点XY座標 starSquareToTriangle2 x1, y1, x2, y2, x3, y3, x4, y4 ; 四角形をふたつの三角形に分割 val = starPoint(index) ; 計算結果の取得 val = starBoxFit(rectw, recth, boxw, boxh, mode) ; 矩形の等比拡縮サイズ ・図形描画 starPrintLine x1, y1, x2, y2, weight ; 直線(線幅指定可) starPrintGrid mode, rect, wght, wid, high, osx, osy ; グリッド・ストライプ(線幅指定可) starPrintRound width, height, round, weight ; 丸角矩形・楕円・矩形(べた塗・幅指定枠線) starPrintScratch x1, y1, x2, y2, x3, y3, m, o1, o2, o3 ; 3点版gsquare(画像コピーは無変形のみ) ◇ ファイル操作モジュール - FileOperationModule.hsp - ◇ WindowsAPIを使用してファイルやフォルダ関連の情報取得や設定をするためのモジュールです。 ・ファイル/フォルダ操作 filoFileCopy "basename", "newname", type ; コピー/移動/名称変更 filoSetFileAttr "filepath", attr_on, attr_off ; 属性変更 filoSetFileTime "filepath", type, .timestamp ; タイムスタンプ設定 val = filoFileInfo("filepath", type) ; パス情報取得 ・タイムスタンプ変換 val = filoTimeFtoS(.timestamp, type) ; ファイルタイム→システムタイム val = filoTimeStoF(year, mon, day, hour, min, sec, ms) ; システムタイム→ファイルタイム ・フォルダ変更監視 filoWatchStart "pathname", flag ; 開始する filoWatchRestart id ; 再開する filoWatchEnd id ; 終了する val = filoWatchInfo(id) ; 状態確認 ◇ マウス・キーボード入力 - SendInputOpera.hsp - ◇ WindowsAPIを使用してマウスやキーボードを操作したという情報を疑似的に発生させるモジュールです。 seinkey downkey, upkey, wheel ; キーコード送信(マウス/キーボード疑似操作) seinstr "text", hwnd ; キーコード送信(文字列送信) ◇ MIDI発音モジュール - MidiOpera.hsp - ◇ APIでMIDIを操作して音を出すためのモジュールです。 midonote channel, note, velosity ; 発音/消音/音色選択 ◇ プロセスリンクモジュール - ProcLinkModule.hsp - ◇ WindowsAPIを使用してプロセス(アプリ)間通信をするためのモジュールです。 ・WM_COPYDATA送受信 nocoSendCopyData hwnd, data, param, size, offset ; 送信(整数とバイナリデータ) nocoSendCopyDataInt hwnd, param ; 送信(整数のみ) nocoSendCopyDataStr hwnd, "text", param ; 送信(整数と文字列) nocoAutoCopyData ; 自動応答(設定) nocoOnCopyData *label ; 自動応答(割り込み指定) nocoGetCopyData res_data ; 受信(バイナリ取得) val = nocoCopyDataInfo(type) ; 受信(情報取得) val = nocoCopyDataStr() ; 受信(文字列取得) ・名前付き共有メモリ操作 nocoMemoryMapping "name", size ; 製作(存在維持のため) nocoMemomapWrite "name", data, size, pos, offset ; 書き込み(未製作OK) nocoMemomapRead res_data, "name", size, pos, offset ; 読み取り(未製作OK) nocoCloseHandle number ; 解放 ・なごみコネクトライト(拙作) nocoConnectAccept "app_name" ; 開始/参加 val = nocoConnectInfo(type, index) ; 情報取得 ・プロセスウィンドウ一覧 nocoGetHwndList "title", type ; 一覧取得 val = nocoHwndListInfo(index) ; 一覧取得(結果参照) ・そのた val = nocoRegisterId("name") ; ウィンドウメッセージ登録(ユニーク値) val = nocoWindowTitle(hwnd) ; ウィンドウタイトル取得 ◇ 日付と時刻とタイマーモジュール - TimeDateOpera.hsp - ◇ WindowsAPIを使用して日付(年月日)/時刻(時分秒ms)/日数/時間(ms)を変換したり、一定間隔で割り込みを発生 させたりする機能をまとめたモジュールです。 ・カレンダー算 val = tidaDayOfWeek(date) ; 日付を曜日に変換 val = tidaDaysAdd(date, days) ; 日付計算(日付+日数) val = tidaDaysSub(date1, date2) ; 日数計算(2つの日付間) val = tidaDaysTime(time, millisec, date) ; 時刻計算(時刻+時間)・日付計算(日付/時刻+時間) ・定期タイマー tidaTimerStart timer_id, outtime, *label, param ; 開始 tidaTimerStop timer_id ; 終了 val = tidaTimerInfo(type, timer_id) ; 情報取得 ・そのた val = tidaTick(beftime) ; 基準時間からの経過時間取得 tidaWakeupTimer date, time ; 電源管理(システム復帰) ◇ ウィンドウ操作モジュール - WindowOpera.hsp - ◇ WindowsAPIを使用してHSPウィンドウの操作と外部アプリ所有のウィンドウ情報を収集するモジュールです。 ・HSPウィンドウ操作 winoLayeredWindow mode, alpha, code ; レイヤードウィンドウ、キー透過設定 winoMoveOnClick winid ; 移動(クリック連動) winoToIconic winid, mode ; 最小化する winoToChild objid, winid ; HSPオブジェクトの子ウィンドウにする ・外部ウィンドウ取得 winoWinMove hwnd, posx, posy ; ウィンドウを移動する winoPrintScreen hwnd, mode, posx, posy, width, height ; スクリーンショット取得 val = winoWinHand (type, option1, option2) ; ウィンドウハンドル取得 val = winoWinRect (type, hwnd) ; ウィンドウ位置/サイズ取得 val = winoWinTitle(hwnd, type) ; ウィンドウタイトル/クラス名の取得 ◇ クリップボードモジュール - ClipboardModule.hsp - ◇ WindowsAPIを使用してクリップボードを操作するモジュールです。特にテキスト/画像/ファイルパスの転送/取 得が可能です。 clboGetImage flag, winid, px, py, wid, high ; イメージ取得 clboOnClipBoardUpdate *label ; 更新時割り込み実行指定 clboSendFileList "path", mode ; ファイルパス転送 clboSendImage winid, px, py, wid, high ; イメージ転送 clboSendText "text" ; テキスト転送 val = clboDataName(number) ; データ形式の名称取得 val = clboInfo (type, option) ; クリップボード情報取得 val = clboText () ; テキスト取得 val = clboFileName(index) ; ファイルパス取得 ◇ ドラッグ&ドロップモジュール - DragAndDropModule.hsp - ◇ WindowsAPIを使用してドラッグ&ドロップでファイルを受け入れるためのモジュールです。 dranAccept ; HSPウィンドウのD&D受け入れ設定 dranOnDropFiles *label ; D&D割り込み実行指定 val = dranInfo(type) ; 情報取得(ステータス) val = dranName(number) ; 情報取得(ファイル名) ◇ アップダウンボタンモジュール - UpdownModule.hsp - ◇ inputやbuttonで配置したオブジェクトにアップダウンボタンを後付けするモジュールです。 updoUpdown objid, mode, min, max, ex_style ; 既存のオブジェクトに上下ボタンを設置 updoSetPos id, position ; 新しい値を設定 updoSetRange id, min, max ; オブジェクトの範囲を設定 updoSetAccel id, p0, p1, p2, p3, p4, p5, p6 ; 時間ごとの変量を設定 val = updoPos(id) ; 現在の値を取得 ◇ イメージリストモジュール - ImagelistModule.hsp - ◇ 画像を効率よく管理するためのウィンドウズ機能であるイメージリストを使用するためのモジュールです。 imliImageList width, height ; イメージリスト新規製作 imliAddItem id, winid, px, py, color, count, turn ; 画像追加 imliCopyItem id, imageid, baseid ; 画像複製 imliExchItem id, item1, item2 ; 画像交換 imliPrintItem id, imageid, option ; 画像描画 imliRemItem id, imageid ; 画像削除 imliDelImageList id ; イメージリスト破棄 val = imliHandle (id) ; 内部管理のハンドル取得 val = imliItemCount(id) ; 登録画像の総数取得 ◇ スクロールバーモジュール - ScrollbarModule.hsp - ◇ HSPウィンドウにスクロールバーを設置し運用するためのモジュールです。 scbaScrollbar mode, width, height ; スクロールバーを設置する scbaSetRange id, min, max, size, blank, arrow ; スクロールバーを設定する scbaSetPos id, position ; スクロールバーの値を変更する scbaOnScroll *label ; スクロールバー割り込み実行指定 val = scbaInfo(id) ; スクロールバーから情報を取得する ◇ ステータスバーモジュール - StatusbarModule.hsp - ◇ HSPウィンドウにステータスバーを設置し運用するためのモジュールです。 stbaStatusbar ; ステータスバーを設置する stbaSetText "text", index, id ; テキスト表示 stbaMessage "text", id ; 簡易テキスト表示 stbaSetSize size0, size1, size2, size3, size4, id ; テキスト表示幅指定 stbaResizeWindow ; ステータスバーを再配置する val = stbaHeight(id) ; ステータスバーの高さを取得する ◇ リストビューモジュール - ListviewModule.hsp - ◇ HSPウィンドウにリストビューを設置し運用するためのモジュールです。 liviListview width, height, ex_style ; リストビューを設置する liviSetViewStyle id, mode, son, soff, lson, lsoff ; レイアウト設定 liviSetColumn id, cid, "title", iid, wid, pos ; カラム設定 liviSetViewColor id, mode, color ; 配色設定 liviSetGroupHeader id, groupid, "text" ; グループヘッダー設定 liviSetViewImagelist id, type, handle ; イメージリスト設定 liviSetViewBackground id, onoff ; 背景描画のOn/Off指定 liviSetViewGroupMode id, onoff ; グループ表示のOn/Off指定 liviAddItem id, num, "text", iid, stat, prm, gid ; アイテム追加 liviSetItemText id, num, "text", index ; アイテムテキスト設定 liviSetItemImage id, num, iid, index ; アイテムイメージ設定 liviSetItemGroup id, num, gid ; アイテムグループ設定 liviSetItemParam id, num, prm ; アイテムパラメーター設定 liviSetItemState id, num, stat ; アイテムステート設定 val = liviItemCount(id) ; アイテム数取得 val = liviItemText (id, num, index) ; アイテムテキスト取得 val = liviItemImage(id, num, index) ; アイテムイメージ取得 val = liviItemGroup(id, num) ; アイテムグループ取得 val = liviItemParam(id, num) ; アイテムパラメーター取得 val = liviItemState(id, num) ; アイテムステート取得 liviRemoveItem id, num ; アイテム削除 liviClearItem id ; 全アイテム消去 ◇ メニューバー&ポップメニューモジュール - MenuOpera.hsp - ◇ HSPウィンドウにメニューバーを設置し運用するためのモジュールです。また、ショートカットメニューの表示 も可能です。 menoCreate mode ; メニューバー/ポップアップメニュー製作 menoInsert hmenu, id, "text", option ; メニュー項目追加 menoState type, hmenu, id, o1, o2, o3, o4, o5 ; メニュー項目状態設定 menoText hmenu, id, "text" ; メニュー項目名変更 menoPopup hmenu, pos_x, pos_y ; ポップアップメニュー表示 menoDestroy hmenu, id ; メニュー削除/メニュー項目削除 menoOnMenuCommand *label ; メニューバー選択時割り込み実行指定 val = menoInfo(type) ; メニュー情報取得 +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ ◆ 乗換案内 - Transfer Information - ◆ ◇ HSP3本体パッケージの付属から ◇ 付属のプラグインやモジュールとのネタ被りも多数ありますが、DLLを添付する必要はありませんし文字コード 変換(Shift_JIS⇔UTF-8)も不要です。64bitランタイムでも動作します。廃止されたllmod3の代用になるものも あります。あと、ちょこっとできることが増えますよ。 ◇ 私作モジュールと前回パッケージ(ver.01〜04)から ◇ 私がHPや過去のHSPプロコンで公開しているモジュールとは互換性がありません。ファイル名や定義名や引数を 変更したものもあります。たぶん使いやすくなったと思います。できることは増えこそすれ減ってはいないはず なので、万が一すでに使ってやってるよという方がいましたらお手数ですが修正の上、引き続きご利用いただけ ると嬉しいですm(_ _)m。 +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ ◆ 著作権、利用条件 - Copyright / License - ◆ 著作権は衣日和が有します。衣日和は本作に起因する損害等の責任を負いません。自己責任でご利用ください。 禁止事項 ・人を陥れ損害を与える目的のソフトウェア(ウィルス/スパイウェア)に組み込む行為 ・人に迷惑をかける目的のソフトウェア(ジョークソフト)に組み込む行為 ・本作が無償配布であると知ったとき、購入者が憤るほどの金額で販売する行為 ・違法/脱法なこと全部 上記以外に制限はなく、無償/無許諾で組み込み/改造/雑誌書籍への掲載/再配布など自由に扱ってください。 本作を基にしたソフトウェアの権利はその開発者にあります。ドキュメント等への記載義務は無く、ソースコー ドの開示などで本作の内容を不特定多数が閲覧できる状態にしてもかまいません。 しかしながら事後にでも一報を頂けると衣日和は喜びます(≧▽≦)。感想もお待ちしています。 +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ ◆ 改訂履歴 - History - ◆ 2020/08/07 ver.01 全て初出(HSPプログラムコンテスト2020参加作品) 2020/09/04 ver.02 命令/関数の追加、メニューモジュール一新、サンプル修正、使いやすさ改善。 2020/09/30 ver.03 ステラモジュール増強、新規追加(タイムデート)、サンプル修正。 2020/10/16 ver.04 モジュール追加/編集:マウスキーボード操作、MIDI発音、ステラ。 サンプルの追加と編集。READMEが20000byte超えたので見直し。 2020/10/25 ver.05 モジュール編集(リストビュー、タイムデート、文字列で四則演算)、サンプル編集。 ◇ 今後の予定 ◇ 未定。 ━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…*☆*…‥…━ ♪Thank you for reading.