実行環境の判別方法No.01541
h-tom さん 07/10/25 23:07
 

h-tom です。

実行環境というのは、hidemaru.exeなのか、maruo.exeなのかということです。

「複数デスクトップ保存マクロ」を"maruo.exe"で動かす場合、レジストリの
場所を、「Hidemaru\Env」から「Maruo\Env」に変更する必要があると、連絡を
もらったのですが、マクロ実行中に判別する方法って何かありますか?

とりあえず、考えついたのは以下の方法です。
1.レジストリアクセス時、resultをみて切り換える。
 「Hidemaru\Env」でエラーなら、「Maruo\Env」へ
2.gettitleでキャプションを取得し、"- 秀丸"の有無を調べる。

まぁ、gettitle使うのがいいのかなと、思ってますが。

[ ]
RE:01541 実行環境の判別方法No.01542
秀丸担当 さん 07/10/26 11:07
 

>とりあえず、考えついたのは以下の方法です。
>1.レジストリアクセス時、resultをみて切り換える。
> 「Hidemaru\Env」でエラーなら、「Maruo\Env」へ
>2.gettitleでキャプションを取得し、"- 秀丸"の有無を調べる。

英語版かどうかを判断するキーワードは無いです。
レジストリは、日本語版と英語版の両方を入れている場合には両方あるので、
gettitleで判断するしかないと思います。

[ ]
RE:01541 実行環境の判別方法No.01543
秀丸担当 さん 07/10/26 11:10
 

あと、一つ思いついたのが
if( existfile(hidemarudir +"\\maruo.exe") )
で判断するというのではどうでしょうか。

[ ]
RE:01542 実行環境の判別方法No.01544
K'zawa さん 07/10/26 11:48
 
秀丸担当さん、こんにちは。
K'zawaです。横から失礼します。

>英語版かどうかを判断するキーワードは無いです。

英語版に限らず、マクロを実行しているのが何か分かるキーワードが
一つあれば便利だと思います。

通常版、英語版、浮動少数点版、
さらには秀丸メールの本体/エディタ/検索シテ一覧ウインドウまで含めて
一つのキーワードで判断出来たら便利かなと。

[ ]
RE:01544 実行環境の判別方法No.01545
秀丸担当 さん 07/10/26 14:33
 

>通常版、英語版、浮動少数点版、
>さらには秀丸メールの本体/エディタ/検索シテ一覧ウインドウまで含めて
>一つのキーワードで判断出来たら便利かなと。

浮動小数点数版については、キーワードを追加しようかと検討したのですが、い
ままでif(1/2){...}で判定していたマクロで setfloatmode 1; を追加するだけ
で今までのマクロも使えるようにし、追加しませんでした。
秀丸メールでは IsHidemaruMail 等で判断できるようです。
英語版だけ明確な方法が無いですが、とりあえずgettitleかexistfileで対応で
きるのではないかと。

[ ]
RE:01545 実行環境の判別方法No.01546
K'zawa さん 07/10/26 19:25
 
秀丸担当さん、こんにちは。
K'zawaです。

>浮動小数点数版については、キーワードを追加しようかと検討したのですが、い
>ままでif(1/2){...}で判定していたマクロで setfloatmode 1; を追加するだけ
>で今までのマクロも使えるようにし、追加しませんでした。
>秀丸メールでは IsHidemaruMail 等で判断できるようです。
>英語版だけ明確な方法が無いですが、とりあえずgettitleかexistfileで対応で
>きるのではないかと。

出来ることは出来るのですが、本格的に選別しようとすると、
かなり面倒なんですよね。
また、秀丸リーダーの読み上げマクロに、
(本来必要のない)tkinfo.dllを判定のためにだけ探しに行かせると、
読み上げが遅れて使い物になりませんでした。
(ディスクアクセス状態の影響をもろに受ける)
仕方ないのでversionキーワードで代用してますが、
これがversionではなく、専用のキーワードで、秀丸エディタの種類なんかも
全て判断出来ればよいのに…と常々思っていた訳です。

まあ、秀丸エディタだけの話でもないし、
秀丸メール側では、「関数がある。」と言われてしまうかも知れないので、
他に賛同者でも出てくるようであれば、検討願います。

[ ]
RE:01543 実行環境の判別方法No.01547
h-tom さん 07/10/26 23:51
 

h-tom です。

>あと、一つ思いついたのが
>if( existfile(hidemarudir +"\\maruo.exe") )
>で判断するというのではどうでしょうか。
さすがに、英語版と、日本語版を同じ場所に入れる事はないと思うので、
これでもよさそうですね。
(念のため、gettitleと併用したほうがいいかもしれませんが。)

[ ]
RE:01545 実行環境の判別方法No.01548
h-tom さん 07/10/28 10:26
 

h-tom です。

>浮動小数点数版については、キーワードを追加しようかと検討したのですが、い
>ままでif(1/2){...}で判定していたマクロで setfloatmode 1; を追加するだけ
>で今までのマクロも使えるようにし、追加しませんでした。
>秀丸メールでは IsHidemaruMail 等で判断できるようです。
>英語版だけ明確な方法が無いですが、とりあえずgettitleかexistfileで対応で
>きるのではないかと。
秀丸エディタと秀丸メールを判別するのに、findwindowclassを使ったことがある
のですが、マクロで、自分のウィンドウクラス名使用し、findwindowclassを
実行すると、必ず自分のウィンドウが見つかります。
(以下のマクロで、必ず"match!!"が表示される。)

//テストマクロ
if(findwindowclass("Hidemaru32Class") == hidemaruhandle(0)){
    message "match!!";
}else{
    message "not match!!";
}
endmacro;
//

この動作は、保証された動作なのか、良くわからないんですよね。
(アクティブなウィンドウなので、最初に見つかりやすいだけで、確実ではない?)

で、ウィンドウハンドルは"hidemaruhandle"で取得できるので、ハンドルから
クラス名が取得できれば、秀丸エディタと秀丸メールの区別は出来ますし、
秀丸メール本体か、メールエディタかも判断できます。
ついでに、(今のところ)すべてに一致しないければ、おそらくメール一覧だと
判断できるかな?

ということで、
・ウィンドウハンドルから、ウィンドウクラス名を取得する関数
・指定されたウインドウ(ハンドル)のキャプションを取得する関数
が、あるといいですね。

[ ]
RE:01546 実行環境の判別方法No.01550
秀丸担当 さん 07/10/29 13:53
 

そういう意見もあるということで、参考にさせていただきます。

[ ]
RE:01548 実行環境の判別方法No.01551
秀丸担当 さん 07/10/29 13:53
 

>この動作は、保証された動作なのか、良くわからないんですよね。
>(アクティブなウィンドウなので、最初に見つかりやすいだけで、確実ではない?)

常に手前に表示の秀丸エディタがあると、それが先に検索されるので確実ではな
いです。
tkinfo.dllのIsHidemaruMail等で判断するのがいいと思います。

>ということで、
>・ウィンドウハンドルから、ウィンドウクラス名を取得する関数
>・指定されたウインドウ(ハンドル)のキャプションを取得する関数
>が、あるといいですね。

それはそれとして、こういう関数もあったほうがいいかもしれません。
ネタとしておきたいと思います。

[ ]