[ 新規に投稿する ]

アウトプット枠をマクロからスクロールさせる方法について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);
}
[ ]

[ 新規に投稿する ]