【要望】ファイルの更新状態についてNo.16040
tn さん 03/12/08 17:08
 
はじめまして。秀丸初心者のtnと申します。
要望&質問です。

現在、ファイルの更新状態を取得するためにはupdatedを使用する
のだと思いますが、これだと取得したいファイルをアクティブにし
ないとなりませんよね?
これを、filename等のように、
filename[XX]←xx:ハンドルorウィンドウ番号
とすることはできませんでしょうか?

いま、開いているファイルの更新状態を取得するマクロを
考えているのですが、実行するたびに画面が切り替わるので・・・

また、他に良い方法をご存知の方がいらっしゃいましたらご教授願います。


[ ]
RE:16040 【要望】ファイルの更新状態につNo.16042
秀まるお2 さん 03/12/08 17:45
 
 現状では、setactivehidemaruで切り替えて動作させるしか無いと思います。

 あるいは、もしかしてC言語でDLLを作成することが出来るなら、例えば秀丸
のウィンドウハンドルからウィンドウタイトルを取り出す関数を作成して、その
タイトル中に"(更新)"の文字が入ってるかどうか判定するという手はありますけ
ど…。

extern "C" char* _cdecl Bypass_GetWindowText( int hwnd, int cmd ) {
    static char sz[512];
    GetWindowText( (HWND)hwnd, sz, sizeof(sz) );
 return sz;
}

 みたいな関数を用意すればいいです。



■将来的な機能追加として…

 filename[...]のような対応だけでいいなら、それはそれで簡単に対応できる
と思いますが、たぶん、他のユーザー様から「じぁあ、xもyもあれもこれも…」
みたいな話が出てきたり、さらには「他の秀丸でgettextする処理を、ウィンド
ウを切り替えずに実行できないか…」みたいな話が出てきたりするんじゃないか
と思ったりします。

 例えば鶴亀メールでは、ExecAtという関数があって、任意の関数呼び出しを、
「どのウィンドウ上で実行するか」と指定できる仕組みがあります。そういう仕
組みということで検討したら便利なんじゃないかと思ったりします。つまり、

    execat( hidemaruhandle(1), "$s  filename;" );

 とか、あるいは、setactivehidemaruとは別に、アクティブウィンドウを変更
しないで単純にマクロ実行を他の秀丸に移すための、

    setmacroexechidemaru

 みたいて文を用意するとか…。

 その辺、エレガントな解決策を考えてから作業しないと、小手先的な要望消化
していったら後々混乱するような気がします。

[ ]
RE:16042 【要望】ファイルの更新状態につNo.16049
tn さん 03/12/09 10:35
 
> 現状では、setactivehidemaruで切り替えて動作させるしか無いと思います。
>
> あるいは、もしかしてC言語でDLLを作成することが出来るなら、例えば秀丸
>のウィンドウハンドルからウィンドウタイトルを取り出す関数を作成して、その
>タイトル中に"(更新)"の文字が入ってるかどうか判定するという手はありますけ
>ど…。
>
>extern "C" char* _cdecl Bypass_GetWindowText( int hwnd, int cmd ) {
>    static char sz[512];
>    GetWindowText( (HWND)hwnd, sz, sizeof(sz) );
> return sz;
>}
>
> みたいな関数を用意すればいいです。

回答有り難うございます。
この方法にチャレンジしてみます。




[ ]