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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0502
mariウィンドウタイトルの取得8解決


mari

リンク

2008/5/2(Fri) 11:54:19|NO.15587

現在稼動中のアプリケーション名を取得したいので
ヘルプを読みながら以下のスクリプトを作ってみたのですが
いくつか疑問に残ることがあるのでここで質問させていただきたいです。


#include "hspext.as" sdim win_title,32000 mesbox win_title,640,480,2 repeat aplsel "",id win_title+="("+id+")"+refstr+"\n" id+=1 if stat=1:break await loop objprm 0,win_title stop


まず、aplselについてですが

aplsel "",p1
で検索IDがp1のウィンドウを取得できると書いてありましたが
statが0なのに、ウィンドウタイトルが空白で取得されるのはなぜなんでしょうか?


後、私としてはアプリケーション名だけを取得したいのに
色々な稼動中のタスク?とかも取得してしまうので、
稼動中のアプリケーションのウィンドウタイトルだけを取得する場合は
どうすればよろしいのでしょうか?


最後の質問ですが、ヘルプには
>ウィンドウの検索に失敗した場合は、システム変数 statに1が代入される
とありますが、statに1が代入された時はその検索ID以降のウィンドウは存在しない
という解釈でよろしいのでしょうか?

ご教授お願いします。



この記事に返信する


ANTARES

リンク

2008/5/2(Fri) 21:54:51|NO.15600

>statが0なのに、ウィンドウタイトルが空白で取得されるのはなぜなんでしょうか?
 そのウィンドウにウィンドウタイトルが付けられていないからでしょう。
あるいは空白またはヌルストリング(長さ0の文字列)というウィンドウタイトルが
付けられているからでしょう。

>ウィンドウの検索に失敗した場合は、システム変数 statに1が代入される
>とありますが、statに1が代入された時はその検索ID以降のウィンドウは存在しない
>という解釈でよろしいのでしょうか?
 sample\hspext\aplkey3.hspがそういう前提で作られているので、
基本的にはそういう考え方でよいと思われますが、
100%そうだとは言い切れないように思います。



As

リンク

2008/5/2(Fri) 22:48:12|NO.15602

 ウィンドウタイトルが無記名のままでウィンドウクラスのみが登録されているウィンドウも
中には存在します。通常は非表示のままですが以外と多くのウィンドウが作成されているものです。

例えば、ウィンドウズのメモ帳に使われているエディットコントロールは 起動時には何も入力
されていませんが、この状態のウィンドウも同様にタイトルが無記名のウィンドウとなります。

一応取得はできているのでエラーではないですね。



mari

リンク

2008/5/3(Sat) 01:23:58|NO.15612

ANTARESさん、ASさん
ご教授ありがとうございます!

空白でタイトルが取得される理由が分かり、スッキリしました!
これはエラーではなくて、ただタイトルが無記名であっただけだったのですね。


>sample\hspext\aplkey3.hspがそういう前提で作られているので、
>基本的にはそういう考え方でよいと思われますが、
>100%そうだとは言い切れないように思います。

サンプルスクリプト「aplkey3.hsp」を拝見したところ
確かに
if stat:break

としているので、そういう考え方でとりあえず解釈しておきます 後、とても基本的な質問かもしれませんが
if stat:break
if stat!0:break
は 同じ意味なんでしょうか?



flory

リンク

2008/5/3(Sat) 02:31:04|NO.15613

条件式について考えてみるべし。if文系禁止ゲームの考察スレなんか勉強になるかも。

具体的には、

a = 123
mes (a = 123) b = 456 mes (b ! 456) c = 0 ;いろいろ数値を変えてみよう if c = 0 : mes "YES," + (c = 0) : else : mes "NO," + (c = 0) if c ! 0 : mes "YES," + (c ! 0) : else : mes "NO," + (c ! 0) if c : mes "YES," + c : else : mes "NO," + c



mari

リンク

2008/5/3(Sat) 09:44:23|NO.15614

floryさん、
ご教授ありがとうございます


c = 0 ;いろいろ数値を変えてみよう if c = 0 : mes "YES," + (c = 0) : else : mes "NO," + (c = 0) if c ! 0 : mes "YES," + (c ! 0) : else : mes "NO," + (c ! 0) if c : mes "YES," + c : else : mes "NO," + c
でCを0からいろいろな数値に変えた所、
if C!0とif cの結果は同じでした!
つまり、C=0以外の時はif cは"NO"になるようですね。


あと、とても興味深かったのは

a = 123 mes (a = 123)
で正ならば1が返り、偽ならば0が返るのですね!
このような判定の方法は知りませんでしたので、とても勉強になります。

if文系を禁止して移動のスクリプトを考えてみましたが
こんな感じでいいんでしょうか?

px=300:py=200 repeat redraw 0 color:boxf getkey left,37:px-=(left!0) getkey up,38:py-=(up!0) getkey right,39:px+=(right!0) getkey down,40:py+=(down!0) pos px,py:color 255*(up!0),255,255:mes "↑" pos px-10,py+10:color 255*(left!0),255,255:mes "←" pos px+10,py+10:color 255*(right!0),255,255:mes "→" pos px,py+20:color 255*(down!0),255,255:mes "↓" redraw 1 await loop



SYAM

リンク

2008/5/3(Sat) 10:12:50|NO.15615

>つまり、C=0以外の時はif cは"NO"になるようですね
実験したなら多分書き間違いだと思うんですが、逆ですよね?


およそ、HSPでいう「式」というものには次のような性質があります。

・「式」は、すべて「式の値」を持ちます。たとえば 1+2 という式は、 3 という「式の値」を持ちます。

・代入ではない(計算の途中で出てくる)等式や不等式も式です。
・等式や不等式の「式の値」は、成り立ってれば 1 、成り立ってなければ 0 です。

で、HSPでいう「条件」には次の性質があります。
・条件(成り立っているかどうか)を数字で表す場合、0 は「成り立っていない」、それ以外は「成り立っている」という意味です。


なので、if はその後の条件について、「式の値」が 0 かどうかしか見てません。


スクリプトは、横方向についてだけ書くと

getkey left,37 getkey right,39 px=px+(right-left)*speed
とも書けます。見ればわかると思いますが、speed>0である必要があります。



As

リンク

2008/5/3(Sat) 20:29:02|NO.15619

式というのは評価されてはじめて値を持つようになります。

例えば、1+1 式でありその評価は2になることは当然のことです。

同様に 1=1 という式は 左辺の値と右辺の値が同じであるため、その評価は1になります。

前者は足し算だ、後者はイコールだ、というように区別するのではなくどの式も同じように
評価され値を示すものです。

私もこれがわかるようになるまで、四則演算ばかりにこだわり考えてきました。しかし、
どれも同じ式として扱うようになれば、プログラムの幅は今まで以上に広がるとおもいます。



mari

リンク

2008/5/3(Sat) 22:54:38|NO.15620

SYAMさん、Asさん
ご教授ありがとうございます

>>つまり、C=0以外の時はif cは"NO"になるようですね
>実験したなら多分書き間違いだと思うんですが、逆ですよね?
あっ・・すいません。逆でした。

式のもつ性質というのは、
一見簡単なようで深く考えると難しいですね。

>式というのは評価されてはじめて値を持つようになります。
>例えば、1+1 式でありその評価は2になることは当然のことです。
>同様に 1=1 という式は 左辺の値と右辺の値が同じであるため、その評価は1になります

>前者は足し算だ、後者はイコールだ、というように区別するのではなくどの式も同じように
>評価され値を示すものです。

なんとなく感覚的には分かるのですが
なんだかこういう概念は、ちょっと理解しにくいですね・・・。




ご教授してくださった皆様、本当にありがとうございました!



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