HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0410
とあるプログラマ【プラグイン】code_call() で return された引数を取得したい2解決


とあるプログラマ

リンク

2021/4/10(Sat) 19:47:26|NO.92594

お久しぶりです。

タイトル通りですが、DLLプラグイン側でcode_call()を実行したあとHSP側でreturnしたときの引数を取得したいです。

ctx->statに入ってはいそうですが、returnのみで引数が設定されていない場合だと、code_call()でジャンプ〜return の間に実行された命令のstatがそのまま流れてきてしまうので正しい値が取得できないと思います。

ネットで検索したら1件のみ方法がヒットしましたが、裏技というか仕様の穴をついたような方法だったので一応最終手段に回したいと思います。

環境はVC++ 2019です。



この記事に返信する


おにたま(管理人)

リンク

2021/4/14(Wed) 21:53:12|NO.92600

DLLプラグインについての検証ありがとうございます。
HSP3ではreturn命令に必ずしも値を指定する必要がないため、値が指定されたかどうかを知るのは難しい気がします。
どういった用途を想定しているかちょっとわかりませんが、code_call()を実行しても必ずreturnまで実行される保証はなく、waitやstopなどのタスク待ち状態になる可能性もあります。



とあるプログラマ

リンク

2021/4/15(Thu) 03:30:29|NO.92602

おにたまさんご返信ありがとうございます。

想定していた機能はHSP3用の簡単にサブクラス化を行えるプラグイン機能でして、HSP3側のラベルでreturnをしたときに引数でTRUE(1)が指定されていれば、DLL側でもCallWindowProc()を行わずにreturn TRUE;をしたいと思っていました。

しかし現状ではHSP3側のラベルでreturnに指定された引数をDLL側から取得することは難しいようなので、別途CallWindowProc()を行わないフラグ設定用の命令を用意するのが手っ取り早そうですかね…

waitやstopに関しては、サブクラスラベルでは行わないようにヘルプなどに注意を載せたいと思います。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.92594への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2021(c) All rights reserved.