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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0811
OBSRV TEST特定のプログラムを最前面に移動させる方法について4解決


OBSRV TEST

リンク

2024/8/11(Sun) 02:12:31|NO.102030

いつもお世話になっています。
当方は、BIOHAZARD OUTBREAKというゲームの改造ツールをHSPで作っている者です。

毎度の如くお知恵を拝借したくよろしくお願いいたします。

HSPで開発中のツールで、AFSExplorer.exeという別のアプリケーションを起動したいのですが、ボタンが押された時に
exec "C:\\TOOL\\AFSExplorer.exe"
を実行すると、なぜかこのアプリがHSPで作っているソフトの後ろに隠れてしまいます。
他のアプリ(なんでも良いが例えばnotepad.exeなど)は、最前面に正しく表示されます。
この "AFSExplorer.exe"というツール(誰が作ったのかわからないもの)の特性のようです。

簡単なテストプログラムで、exec "AFSExplorer.exe"を実行してもHSPのスクリーンの後ろになってしまいます。

どうやったらこのアプリを最前面に表示できるようになるのかがわかりません。
タスクバーなどから隠れているタスクを呼び出せば別に問題はないのですが、なにか釈然としません。

このような状態となります。
https://youtu.be/lrZ6Vg95jb0

例えば、このアプリを起動した後の1秒後とかにプログラムで最前面に移動させる方法などはありますがでしょうか?
過去ログとかを探してみたのですが、よくわからないのです。
当方、WindowsAPIがよくわからず、四苦八苦しています。(プロセスIDとかよくわかっていないのです)

初心者でもわかるような説明をしてくださると大変助かります。
よろしくお願い致します。



この記事に返信する


沢渡

リンク

2024/8/11(Sun) 02:48:20|NO.102031

FindWindowでウィンドウ名からウィンドウハンドルを検索し、
SetWindowPosで前面に出す方法はどうでしょうか。

#include "user32.as" test_flag=0 //二重にサブルーチンを呼ぶのを防ぐためのもの。 button gosub "起動",*test stop *test if test_flag : return test_flag=1 exec "afsexplorer.exe" flag=0 //起動が成功したフラグ repeat 5 await 1000 //起動するまで1秒待ってみる FindWindow 0,"AFSExplorer" //ウィンドウタイトルでウィンドウハンドルを検索 h_tgt=stat if h_tgt : flag=1 : break loop //該当なしならさらに1秒待つ。5回繰り返してダメなら失敗。 if flag { SetWindowPos h_tgt,-1,0,0,0,0,3 //ウィンドウを「常に最前面」の状態にする SetWindowPos h_tgt,-2,0,0,0,0,3 //「常に最前面」の状態を解除 } test_flag=0 return



OBSRV TEST

リンク

2024/8/11(Sun) 03:38:46|NO.102032

すばらしい!!!
いつもありがとうございます。
そのまま使わせて頂きます。

私も皆さんのお役に立てれれば良いのですが・・・



窓月らら

リンク

2024/8/11(Sun) 07:37:36|NO.102033

やってる内容としては同じなのですが、
hspext の aplsel と aplact を使っても同じことができます。
ただしこちらの方法は dll を同梱する必要がありますので
これだけの内容であれば既に提示されているAPIを直接叩く方法のが良さそうです。



OBSRV TEST

リンク

2024/8/11(Sun) 08:13:10|NO.102034

>hspext の aplsel と aplact を使っても同じことができます。

なるほど、勉強になります。ありがとうございます。



記事削除

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

NO.102030への返信

マスコット

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

名前

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

削除用パスワード

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

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

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