2011-06-23 3 views
0

私は外部アプリウィンドウのHWNDを持っています。 私のアプリケーションから、メッセージを送信する(または投稿する)必要があります 100pxの下のウィンドウをスクロールすると、スクロールオフセットが100pxでなければなりません。ウィンドウを100pxまでスクロール

どのようにすることができますか? SB_LINEDOWNでWN_VSCROLLを送信しようとしましたが、100pxを設定するにはどうすればよいですか?どのようにして ピクセルがSB_LINEDOWNまでスクロールダウンするのですか?

UPD2:

私は

 SCROLLINFO si; 
    ZeroMemory(&si, sizeof(si)); 
    si.cbSize = sizeof(si); 
    si.fMask = SIF_ALL; 

    if (GetScrollInfo(h, SB_VERT, &si)) 
    { 
     si.nPos += 123; 

     SetScrollInfo(h, SB_VERT, &si, TRUE); 
     SendMessage(h, WM_VSCROLL, MAKEWPARAM(SB_THUMBTRACK, si.nPos), 0); 
    } 
    else 
    { 
     printf("no GetScrollInfo! %d", ::GetLastError()); 
    } 

を試してみて、printfの "ノーGetScrollInfo 1447!"(1447 ERROR_NO_SCROLLBARSは別名 "ウィンドウがスクロールバーを持っていない" されています)が、「インターネットを受け取りますExplorer_Server "にはスクロールバーがあります!

答えて

0

WM_VSCROLLは、あなたが望むことを行う精度が欠けています。しかし、あなたはSetScrollPos()であなたが望むことをすることができるはずです。 GetScrollInfo()を使用して、親指をどれだけ移動させるかを計算する必要があります。

私は上記の方法で正確にするのは難しいと思います。達成しようとしていることは何ですか?おそらくスクロールをエミュレートするよりも、それを達成するためのより良い方法があります。

+0

plz私の更新を参照してください。実際の作業ではスクロールInternet Explorerウィンドウが必要 – vinnitu

+0

IEFrameにはスクロールバーがありません。しかし、クラス名が 'Internet Explorer_Server'の子ウインドウには、その名前を持つことができます。 –

+0

申し訳ありませんが、私の間違いです - 私は "Internet Explorer_Server" – vinnitu

関連する問題