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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0118
シクロンexecを処理させるとウィンドウが一時フリーズする9未解決


シクロン

リンク

2024/1/18(Thu) 13:11:18|NO.101084

短期間で何度も質問を投げてすいません…。
今回はきちんと見直してから来たので(多分)ミスなどはないと思います。

仲間内でちょっとしたアプリを作ったのでそのランチャーを作ったのですが、
ランチャーからファイルを起動するときちんと起動はするものの、
何故か一時的にランチャーが応答なしとなってしまいます。
しばらくすれば動作するようになるのですがバグったなどと思われるのは
本意ではないので質問させて頂いた次第です。

コード

内容を伏せるために文字列を置き換えたので変数名などが変に
なっていますが気にしないで下さい。

	#packopt hide 1;初期からwindowを非表示で作成
#packopt name Leapers;Leapersのファイル名で作成 #include "hspinet.as";インターネット通信プラグインを取り込む #include "zipfile.as";ZIPファイル解凍プラグインをダウンロード title "Leapers";タイトル指定 screen 0,640,480;window作成コマンド window番号0,横px数,縦px数 sdim File`s_exelists,128;File`s_exelistsという変数(文字列可)を128B分用意する ddim temporary_variable,100 ddim File`s_amount,100;File`s_amountという変数(数字)を0〜99まで用意する sdim File`s_Place,128 mref temporary_variable,64;File`s_amountにdirlistの結果出た変数をリンクさせる dirlist File`s_exelists,"File/LEAP*.exe",1 File`s_amount=temporary_variable objsize 320,80;これから設置する物のサイズ 横px数,縦px数 pos 0,400;設置場所の起点 button "File(F1)起動",*Chek_File;ボタンにFile起動(F1)を表示 クリックで*tellへ pos 320,400 button "あいさつ(F2)",*goodbuy objsize 640,20 pos 0,380 button "ネット更新(未実装)",*check await 1 gsel 0,1;window番号0,を表示 if File`s_amount = 0:gosub*NO_File if File`s_amount >=2:gosub*Many_File *watch_point onkey goto *zyouken onexit *exit ;終了確認ダイアログ stop *NO_File dialog "実行ファイルがありません。\nファイルをどこかに移動させていないか確認してください。",1 return *Many_File dialog "実行ファイルが沢山あるお…。\間違えて色々置いていないか確認してください。",1 return *zyouken if wparam= 112: goto*Chek_File;もしF1が押されると*tellに if wparam= 113: goto*goodbuy;もしF2が押されると*goodbuyに stop *goodbuy pos 100,0 mes "こんにちは" stop *Chek_File dirlist File`s_exelists,"File/LEAP*.exe",1 File`s_amount=temporary_variable if File`s_amount = 1:goto*Open_File if File`s_amount = 0:gosub*NO_File if File`s_amount >= 2:gosub*Many_File stop *Open_File File`s_Place=dirinfo(1) File`s_Place+= "\\File\\" File`s_Place+= File`s_exelists getstr File`s_Place,File`s_Place,,, pos 0,0 mes File`s_Place exec File`s_Place,0 goto*watch_point *check pos 200,0 mes "確認チュウ(uso)" goto*watch_point *exit dialog "終了してよろしいですか?", 2, "確認" ;もし、[いいえ](stat=7)を選択したら何もせず。それ以外は[はい](stat=6) if stat = 7 : stop end



この記事に返信する


MillkeyStars

リンク

2024/1/18(Thu) 17:48:01|NO.101087

onkey は、押しっぱなしの状態も検出するためアプリケーションなど起動した後の処理が終わった後に続けて処理される場合があります。
onkey でのジャンプ先で lparam を取得し、30ビット目(0x40000000) が立っていないか確認してください。
立っていたら処理を行わずに stop するなどの処理をすれば 1押し 1処理になると思います。

*zyouken if (lparam & 0x40000000) : stop if wparam= 112: goto*Chek_File;もしF1が押されると*tellに if wparam= 113: goto*goodbuy;もしF2が押されると*goodbuyに stop



沢渡

リンク

2024/1/18(Thu) 17:53:02|NO.101088

当方で確認してみましたが、そのような現象は起きませんでしたね。
exec命令以降も特にフリーズが起きそうな処理は行っていないように見えますし。
当方ではHSP3.6を使っていますが、もし新バージョンのベータ版や、
逆に古いバージョンを使っているようなら、不具合でしょうか?
(OSはWindows11)
上手くいくかはわかりませんが、冒頭に

#include "Shell32.as"
と置いた上で、exec命令を

ShellExecute hwnd,"open",File`s_Place,"","",5
に置き換えたらどうなるでしょう?
(APIのShellExecuteは、第4パラメータには実行時のオプションを、第5パラメータには初期ディレクトリを記す。
 特にないのなら指定しなくていい)



シクロン

リンク

2024/1/18(Thu) 21:07:06|NO.101090

>MillkeyStarsさん

ご意見ありがとうございます。
確かにキーボードの押しっぱなしを考慮していませんでした。
反映して試してみたところ、押しっぱなしにすると
一個目が起動した後暫くフリーズした後多重起動したので、
これも重さの原因の一つのようです。
しかしF1一回でもボタン1押しでも同じ結果だったので、
直接の原因ではないようでした。



シクロン

リンク

2024/1/18(Thu) 21:37:30|NO.101091

>沢渡さん
ええと、ShellExecute命令の第4パラメータはexecとおなじでよろしいでしょうか。



シクロン

リンク

2024/1/18(Thu) 21:52:30|NO.101092

連投失礼します。
NO.101090について、正確には
反映前後共に多重起動はしたのですが、
反映前はタブがフリーズ後いくつも出てきたのですが
反映後はフリーズ後に起動したのは一つだけでした。
フリーズ時に入力が中断された判定になっているのかもしれません。



沢渡

リンク

2024/1/18(Thu) 22:23:29|NO.101093

>ええと、ShellExecute命令の第4パラメータはexecとおなじでよろしいでしょうか。
たとえば「notepad hsp.txt」を実行したいのなら、第3パラメータに"notepad"を、
第4パラメータに"hsp.txt"を指定するということです。



シクロン

リンク

2024/1/18(Thu) 23:25:27|NO.101094

すいません…自分なりに色々調べたのですが、
理解に暫く時間がかかりそうなので参考になりそうなリンクを張ってくれると幸いです…。



沢渡

リンク

2024/1/18(Thu) 23:36:49|NO.101095

ShellExecuteの説明はこれなのですが、どうでしょうか?
https://www.tokovalue.jp/function/ShellExecute.htm
実際のところ、やっていることはexec命令とさして変わらず、
もしexec命令に何かしら不具合があるのならこれで代用できやしないかと思って
提示したまでで、これで本当に上手くいくかどうかはわかりかねますが。
(前述しましたが、私がやった限りではexec命令でも特に不具合は起きませんでしたので)



シクロン

リンク

2024/1/19(Fri) 10:21:30|NO.101097

ありがとうございます。何とかコードを組むことができ、
実行してみたところ、フリーズすることなく実行出来ました。
過去に他の端末で作ったexecコマンドは問題なく実行出来たので
今のHSPの環境に問題が問題があるのかもしれないです。

環境としては、

windows11,23H2
HSPのバージョンは3.6,インストーラーは使わずzipを展開して使っています。
設置場所はユーザーのビデオフォルダ(なぜここに置く…。)です。



記事削除

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

NO.101084への返信

マスコット

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

名前

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

削除用パスワード

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

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

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