HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
0927
かけたおちゃわんHSP3でインターネットブラウザを作りたい9解決


かけたおちゃわん

リンク

2025/9/27(Sat) 07:12:48|NO.104029

ブラウザとしてWEBページをレンダリングし、リンクを踏めば遷移し、掲示板の書き込みが
できるようなインターネットブラウザを作りたいと考えています。
特にHSP側で作成するモチベとして(ブラウザのプラグインとしての開発でないモチベとして)
アンケートサイト等で質問の内容を吟味し自動で回答を作って回答することを目標にしており
特にマウス操作やキーボード操作においてはブラウザのプラグインよりHSP3でブラウザを
作り上げたほうが確実であるからと感じたからです。

ですが、HSP3でインターネットブラウザを作るという事例を見つけることができず、
どこから手を付けてよいかわからない状況です。
HSP3でインターネットブラウザを作ろうという記事はどこかで見た覚えがありますが、
InternetExplorerを使ったものであり、現行のものにそぐわないものと思います。
どなたかご存知ないでしょうか。



この記事に返信する


zrs90(5さい)

リンク

2025/9/27(Sat) 08:03:46|NO.104030

この方のプラグインを使ってブラウザを作れば良いのかなと
ただ記事が最新かは分かりませんが...

WebView2 1.0.1150.38
https://hiro239415.hatenablog.com/entry/2022/04/01/192105



zrs90(5さい)

リンク

2025/9/27(Sat) 14:40:54|NO.104033

追記(NO.103040)
「WebView2」でサイト内検索

作者さんの旧サイトは25/10/1で廃止になるので
NO.104030で書いた「移転先サイト」で拾わないと
ダメです。下記にモジュール化する手順等が書かれています

https://www.hsp.tv/play/pforum.php?mode=pastwch&num=99573



かけたおちゃわん

リンク

2025/9/27(Sat) 18:54:14|NO.104040

ご回答ありがとうございます。そのようなものがあったのですね。
幸いにも未だ9月であったため、サンプルを入手し、動かすことができました。
「戻る」「進む」等のボタンの使用予定はないため、現時点でとても良いと感じています。

ただ、このモジュールにはページのソースコードを格納している変数が見当たりません。
最終的にアンケートサイトの回答生成を目標にしているので、プログラム側でソースコードを
閲覧できれば良いと思ったのですが、そのような方法はないでしょうか?



ABATBeliever

リンク

2025/9/27(Sat) 19:43:14|NO.104041

>「アンケートサイト等で質問の内容を吟味し自動で回答を作って回答」
というのは、最近はやりのAIブラウザのようなことでしょうか?(PerplexityのComet Browser)

プログラム側でページのソースコードを参照するのはWebView2を使うブラウザでは多分難しいと思われます。
その場合はexecでcurl/wgetを呼び出すか、hspinetでページのhtmlを取得し、
何とか頑張って質問部分を取り出し、
hspinetでGemini/OpenAIのAPIを叩く という感じになると思います。
ただ、多分これならPythonで書いた方が動くかもしれません....。

>ブラウザとしてWEBページをレンダリングし、リンクを踏めば遷移し、掲示板の書き込みが
できる
だけならば、そのHiroさんのリンクのSample2で作れます。



TOMATO

リンク

2025/9/27(Sat) 23:44:22|NO.104043

>プログラム側でページのソースコードを参照するのはWebView2を使うブラウザでは多分難しいと思われます。

ExecuteScirptで「document.documentElement.outerHTML」とかすれば取れると思うよ。
ExecuteScirptはJavaScriptがそのまま実行できるので、
ChatGPTなんかでJavaScriptで××がやりたいので書いてくださいと質問結果を
そのまま張り付ければいろいろできるんじゃないかなぁ…と。



かけたおちゃわん

リンク

2025/9/28(Sun) 02:40:14|NO.104044

> ExecuteScirptで「document.documentElement.outerHTML」とかすれば取れる

まさにやりたいことがExecuteScirptで「document.documentElement.outerHTML」で
内容を取り出すことなのですが、このサンプルにどうやって付け足して動かすのか
全く想像がつきません。どのようにすればよいでしょうか?

> 何とか頑張って質問部分を取り出し、
> hspinetでGemini/OpenAIのAPIを叩く という感じになると思います。

上記のようにExecuteScirptで「document.documentElement.outerHTML」等としてソースコードを
HSP3のこのブラウザプログラム内で使える文字列変数として取り出せたならば、
あとの質問部分の取り出しや回答の生成は自分で良い方法を考えるつもりですので、
現在のところはソースコードを取り出す方法さえあれば良いことにします。



MIZUSHIKI

リンク

2025/9/28(Sun) 17:26:57|NO.104048

wv2s.dll, mod_wv2s.hsp を入手したと仮定しますが、これで出来ると思います。

#include "mod_wv2s.hsp" // webview2最小サンプル WV2Env 0, 0 env = stat if env { WV2Ctrl env, hwnd ctrl = stat if stat { WV2SetVisible ctrl, 1 WV2SetSize ctrl, 0, 0, ginfo_winx, ginfo_winy surl = "https://www.google.co.jp/" WV2Navigate ctrl, surl // view取得 (Hiroさんのサンプルに出てくるcurViewに相当するもの) prm = varptr(view) ComCall ctrl, 25/*"get_CoreWebView2"*/, prm, 1 } } onexit *ONEXIT_ oncmd gosub *EVENT_ExecuteScript, 0x9010 ; WV2HdlNew用の衝突しない番号を指定(0x8000〜0xBFFFまで) WV2HdlNew 2/*type:HW*/, hwnd, 0x9010 resNew_exec = stat ; ExecuteScriptするときに使用 // ExecuteScript用ウィンドウ作成 screen 1, 320,300, 12, ginfo_wx2+20, ginfo_wy1 objsize ginfo_sx, 20 button gosub "ExecuteScript", *BTN_EXEC bufRes="" : ysize = (ginfo_sy-20)/2 sdim bufExec, 1024 bufExec="document.body.style.backgroundColor=\"#abc\";\ndocument.documentElement.outerHTML;" mesbox bufExec, ginfo_sx,ysize, 5 mesbox bufRes, ginfo_sx,ysize, 4 : idMbRes = stat gsel 0 stop *BTN_EXEC if view == 0 : return // Unicode(utf-16)に変換 sdim bufTmp, (strlen(bufExec)+1)*2 cnvstow bufTmp, bufExec // ExecuteScript実行 prm = varptr(bufTmp), resNew_exec ComCall view, 29/*"ExecuteScript"*/, prm, 2 return // EVENT_ExecuteScript内で使用する関数 #uselib "kernel32.dll" #func lstrcpyW "lstrcpyW" wptr,wptr #func lstrlenW "lstrlenW" wptr #uselib "combase.dll" #func WindowsDeleteString "WindowsDeleteString" int *EVENT_ExecuteScript // 文字列を受け取る : Unicode(utf-16) sdim bufTmp, (lstrlenW(lparam)+1)*2 lstrcpyW varptr(bufTmp), lparam vBuf = cnvwtos(bufTmp) ; shift-jisに変換 gsel 1 objprm idMbRes, vBuf ; mesboxに表示 gsel 0 // 忘れずに受け取った文字列のメモリを解放 WindowsDeleteString lparam return *ONEXIT_ if view : ComDel view if ctrl : ComDel ctrl if env : ComDel env end

本当は、WV2HdlWait を使って oncmd 無しで出来るのではないかと予想しているのですが、使い方が分かりません(-_-;)



MIZUSHIKI

リンク

2025/9/29(Mon) 21:11:40|NO.104049

すみません。
WebView2 が返してくる文字列を改めて確認したところ JSON 文字列になってますね。
文字列をデコード(エスケープ解除)してあげないといけないのですが、ちゃんとしたものは難しいです。
なので、置換で代替するのが現実的だと思います。

#module #defcfunc unescJson str src s = src // 先頭と末尾の " を削除 s = strtrim(s, 0, '"') DC12="__" wpoke DC12, 0, 0x1211 ; 使われていないであろう制御文字(DC1,DC2) strrep s, "\\\\", DC12 ; 「\\」を制御文字に置換しておく // < ← \u003C strrep s, "\\u003C", "<" // エスケープ解除 strrep s, "\\\"", "\"" strrep s, "\\n", "\n" strrep s, "\\t", "\t" strrep s, DC12, "\\" ; 置換した制御文字を元に戻す。ついでに「\\」→「\」 return s #global
これで大体はいけてそうに思います。
ただ、「\u003C」以外にも Unicode エスケープして渡してくる文字があるかもしれません。
その場合は、置換文字列の中に追加していく必要があります。



かけたおちゃわん

リンク

2025/9/29(Mon) 23:10:14|NO.104050

ありがとうございます。
JSONでも似たようなことはできると思うので、これで解決にします。
確かJSON形式はhspinetで操作できた記憶があるので、これを試そうと思います。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.104029への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2025(c) All rights reserved.