アウトプット枠をマクロからスクロールさNo.09027
ohtorii さん 19/07/14 10:33
 
お疲れさまです。

マクロからアウトプット枠をスクロールするには、どうするのが良いでしょうか?

試しに以下マクロを書きましたが何故かスクロールしないです。
//スクロールのWindowsメッセージは「Microsoft Spy++」で調べました。


# マクロ
loaddll "HmOutputPane.dll";

//アウトプット枠へ適当に長い文字を出力して、
//スクロールバーを出現させる。
#i=0;
while(#i<50){
 #ret=dllfunc("Output",hidemaruhandle(0),sprintf("                          
                        #i=%d\r\n",#i));
 #i = #i + 1;
}
//
//ここでは最終行(#i=49)が表示されています。
//

//
//ここで上にスクロールして先頭(#i=0の行)を表示したい。
//以下のコードで正しいはず・・・でもスクロールしないです(;;)
//
#h=dllfunc("GetWindowHandle",hidemaruhandle(0));
#ret=sendmessage(#h,0x0115/*WM_VSCROLL */,6/*SB_TOP*/,0);

よろしくお願いします。

[ ]
RE:09027 アウトプット枠をマクロからスクNo.09028
h-tom さん 19/07/14 14:59
 
h-tom です。

>//ここで上にスクロールして先頭(#i=0の行)を表示したい。
>//以下のコードで正しいはず・・・でもスクロールしないです(;;)
>//
>#h=dllfunc("GetWindowHandle",hidemaruhandle(0));
>#ret=sendmessage(#h,0x0115/*WM_VSCROLL */,6/*SB_TOP*/,0);
スクロールバーを持っているのは、"#h"の子ウィンドウなので、
そちらにメッセージを送れば、スクロールしますよ。

[ ]
RE:09028 アウトプット枠をマクロからスクNo.09029
ohtorii さん 19/07/15 19:58
 
お疲れさまです。

子ウインドウはどのように取得するのが良いでしょうか?

秀丸マクロ・dengakuDLL・ht_tool.dllのヘルプで探しましたが該当する機能が見つ
かりませんでした。

よろしくお願いします。

[ ]
RE:09029 アウトプット枠をマクロからスクNo.09030
h-tom さん 19/07/15 21:39
 
h-tom です。

>秀丸マクロ・dengakuDLL・ht_tool.dllのヘルプで探しましたが該当する機能が見つか
>りませんでした。
・ウィンドウクラス名は、Spy++ 使えばわかるでしょう。
・ht_tools.dll の "FINDWINDOW" を使えば、指定したウィンドウの子ウィンドウから、
  指定したウィンドウクラス名をもつウィンドウを検索出来ます。

//ここで上にスクロールして先頭(#i=0の行)を表示したい。
//以下のコードで正しいはず・・・でもスクロールしないです(;;)
//
#ht_tools = loaddll("ht_tools.dll");
#h = dllfunc("GetWindowHandle", hidemaruhandle(0));
#edit = dllfunc(#ht_tools, "FINDWINDOW", #h, "Edit","");
freedll #ht_tools;
if(#edit != 0){
    #ret = sendmessage(#edit, 0x0115 /*WM_VSCROLL */, 6 /*SB_TOP*/, 0);
}

[ ]
RE:09030 アウトプット枠をマクロからスクNo.09031
秀丸担当 さん 19/07/16 09:27
 

アウトプット枠のエディットコントロールは、子ウィンドウになっているので、確か
にh-tomさんの手法を使う必要がありました。
ウィンドウ構成は今後も同じかどうかわからないのと、現状でも、
#ret=dllfunc("Push",hidemaruhandle(0));
とするとウィンドウ構成が変わってしまうので、先頭と最後にカーソル移動するため
のコマンド値を設けようと思います。

[ ]
RE:09031 アウトプット枠をマクロからスクNo.09032
ohtorii さん 19/07/16 17:38
 
お疲れさまです。

*h-tomさんへ
動作することを確認しました、助かりましたありがとうございます。
秀丸エディタ側でスクロール機能が実装されるまで、回避策として使用させていただ
きます。


*サイトー企画さんへ
ウインドウを検索するのは秀丸エディタの内部実装に依存するため筋が良くないです。
先頭と最後に移動する機能だけでも実装していただけると私はありがたいです。

よろしくお願いいたします。

[ ]