投稿日 | 18/11/25-11:45 |
---|---|
投稿者 | 鳩 |
参照先 |
「ウェブブラウザ」の「【自分】をキャプチャする」を動かすことができません。
「ウェブブラウザ」での表示を画像ファイルに保存するサンプルコードがあれば教えてください。
もしくは、以下のコードの不備について、修正点をご教示ください。
--------------
ユーアールエルは、「http://www.yahoo.co.jp/」
保存ファイルは、「c:\tmp\capt.png」
窓というウィンドウを作る
その大きさを{1280, 600}に変える
窓にブラウザ1というウェブブラウザを作る
そのドッキング方向を全体に変える
そのアドレスをユーアールエルに変える
窓を表示する
ブラウザ1をキャプチャして保存ファイルへ保存する
待機する
--------------
発生するエラーは以下の通りです。
--------------
『ブラウザ1をキャプチャして』という部分で
プログラムの実行中にエラーが発生しました。
文法に間違えがないか、指定した値が正しいか、確認してください。
文法や使い方が正しいにもかかわらず、このエラーが表示される場合は、不具合の可能性があります。
発生した例外:
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
場所 System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
場所 System.Windows.Forms.Control.Invoke(Delegate method)
場所 Produire.ScriptEngine.132(22 0)
場所 Produire.TypeModel.外部手順定義.2(PTypePlugin 0, IProduireClass 1, Object[] 2, 0 3)
場所 Produire.TypeModel.PTypePlugin.10(IProduireValue 0, ICallSite 1, 16 2)
場所 Produire.Model.StaticCallExpression.Invoke(IPrototypeExpression protoExpr, 0 scope)
場所 Produire.ScriptEngine.110(IPhrase 0, IProduireValue& 1, 0 2)
[エラー番号901] [はじめ:9行目]
--------------
◆動作環境情報◆
プロデル 1.6.935
Windows 10(64)
メモリ:3.68 GB
よろしくお願いいたします。
投稿日 | 18/11/26-21:12 |
---|---|
投稿者 | 通りすがり |
参照先 |
ウィンドウに配置した部品は、あとから非同期で作成されてゆくため、キャプチャ命令が実行されるタイミングでは、まだ、出来上がっていないのが原因です。実行時にブラウザ1に中身が無いということで、
> System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
のエラーになっています(「作る」すらもまだ実行されてない ということ)
また、仮に、命令順通りに、ブラウザ1が作成が済んでいたとしても、表示する内容(コンテンツ)を、指定されたURLから読み込んで、表示(レンダリング)するには、時間がかかります。即座にキャプチャしても真っ白です。キャプチャを取りたいタイミングのイベントを利用して、タイミングを合わせてみてください。
(タイマーを使用した場合、PCの負荷状況やネットワークの負荷状況によって、真っ白だったり、途中だったり、逆に無駄に待つことになったりする可能性があります)
まずは、ブラウザ1からキャプチャする命令を、タイマーで遅らせるか、ブラウザ1のイベントを利用して、キャプチャしたい内容が描かれるまで、遅らせてみてください。
(イベントに慣れていない場合は、まずはタイマーで試してみるとよいかと思います。)
投稿日 | 18/11/26-21:53 |
---|---|
投稿者 | 鳩 |
参照先 |
> (イベントに慣れていない場合は、まずはタイマーで試してみるとよいかと思います。)
ありがとうございます。
以下の通りイベントを作ってみたところ、エラーにならずに画像を保存できました。
--------------
ユーアールエルは、「http://www.yahoo.co.jp/」
保存ファイルは、「c:\tmp\capt.png」
窓というウィンドウを作る
その大きさを{1280, 600}に変える
窓にブラウザ1というウェブブラウザを作る
そのドッキング方向を全体に変える
そのアドレスをユーアールエルに変える
そのページが読み込まれた時の手順は、画像を保存する
窓を表示する
待機する
画像を保存する手順
ブラウザ1をキャプチャして保存ファイルへ保存する
終わり
投稿日 | 18/11/27-06:49 |
---|---|
投稿者 | 鳩 |
参照先 |
ふと思ったのですが、この2行は逆にすべきですね。
> そのアドレスをユーアールエルに変える
> そのページが読み込まれた時の手順は、画像を保存する
「そのアドレスをユーアールエルに変える」が「そのページが読み込まれた時の手順は、」が実行される前に終わってしまうと「画像を保存する」が実行されないということになりそうですね。
- WebForum -