ページトップと
ページ末端を表示しようと思い
TWebBrowserのスクロールバーのコマンドがわからないので
HomeやEndキーで同じことができると思いましたがキーを受け付けてくれません
PageDownでコード書きましたが Memoは動作しますがTWebBrowserは動作しません
TWebBrowser.HWNDの説明に Web ブラウザの Window ハンドルへのアクセスを提供します。
とあるので
SendMessage(WebBrowser1.HWND, WM_KEYDOWN ,VK_END , 0);
を送るとエラーで落ちます。
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
s := 'c:\BOOTLOG.TXT';
WebBrowser1.Navigate(s);
Memo1.Lines.LoadFromFile(s);
Memo1.ScrollBars := ssBoth;
end;
procedure TForm1.Button2Click(Sender: TObject);
var Msg : TMessage;
begin
msg.WParam := VK_NEXT; // PageDown
msg.LParam := 0;
WebBrowser1.Perform(WM_KEYDOWN,Msg.WParam,Msg.LParam);
Memo1.Perform(WM_KEYDOWN ,Msg.WParam,Msg.LParam);
end;
どうやったらTWebBrowserの画面をコードでスクロールできるのでしょうか?
ハンドルの数字を確認しようと
Caption := InttoStr(WebBrowser1.HWND);
でアクセスするだけでエラー起こりました
謎です。
別アプリからハンドルとってClassName[Internet Explorer_Server]
エディットボックスに入力したらTWebBrowserにメッセージおくれ
スクロールできました。
SendMessage(StrToInt(Edit1.Text), WM_KEYDOWN ,VK_END , 0);
TWebBrowserを使っているアプリ自身から
TWebBrowserのハンドルを取る方法を教えてください
最初の質問のスクロールということであれば,この掲示板の
koma2さんの04-03-18 15:15の発言が参考になりませんか.
TWebBrowserで検索すればでてくると思いますが...
記載してあるところがみつからないので
とりあえず表示しているときにボタンでスクロールしたいだけ+
他の人が使うことはないので
TWebBrowserに上に他のWindowがのっていないことを前提に下記ですませることにしました
var
Pt : TPoint;
begin
Pt := WebBrowser1.ClientRect.TopLeft;
Pt := WebBrowser1.ClientToScreen(Pt);
SendMessage(WindowFromPoint(Pt), WM_KEYDOWN ,VK_END , 0);
end;
>記載してあるところがみつからないので
あれまっ,ゴメンなさい.今TWebBrowserで検索したらでないですね.
で,Koma2で検索したら見つかりました.既に解決済みということですが,
参考まで,
https://www.petitmonte.com/bbs/answers?question_id=1451
こっちだとTOleControl(WebBrowser1).Visible := Falseでも反応しました♪
function GetWebBrowserHandle(Web1 : TWebBrowser) : hwnd;
// 0 ロードされていない。
// それ以外たぶん WebBrowserHandle
var
Pt : TPoint;
h : hwnd;
begin
Pt := Point(0,0);
h := ChildWindowFromPoint(Web1.Handle,Pt);
h := ChildWindowFromPoint(h,Pt);
if (Web1.Handle = h ) then Result := 0
else Result := h;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
h : hwnd;
begin
h := GetWebBrowserHandle(WebBrowser1);
if (h>0) then
SendMessage(h, WM_KEYDOWN ,VK_END , 0);
end;
>参考まで,
>https://www.petitmonte.com/bbs/answers?question_id=1451
探してくれてありがとうございます。
そちらの方も試してみようと思います
教えていただいたコードで初期位置設定できました♪
ありがとうございました。
uses
SHDocVw,MSHTML;
OleVariant(WebBrowser1.Document as IHTMLDocument2).body.ScrollTop := 1020;
OleVariant(WebBrowser2.Document as IHTMLDocument2).body.ScrollTop := 620;
OleVariant(WebBrowser3.Document as IHTMLDocument2).body.ScrollTop := 400;
ツイート | ![]() |