ブログ

割とコンピュータよりの情報をお届けします。

2021年3月21日

WebView2ランタイムで音声読み上げ

昔はCefSharpで試していたが,今度はWebView2ランタイムで読み上げを試してみる。(いまCefSharpがどうなっているのかは知らない)

例えばindex.htmlを作って以下のように書いておくと「こんにちは」と読み上げてくれるようになった。

<html>
<head>
    <script>
        var synthes = new SpeechSynthesisUtterance('こんにちは');
        speechSynthesis.speak(synthes);
    </script>
</head>
<body>
    TEST
</body>
</html>

Windows 10でこれができるのは当たり前でしかもSAPIも標準で使用できるのでわざわざ読み上げだけを使いたいときにWebView2ランタイムを使うことはないが,Windows 7でもこれができるなら便利である。
Windows 7では標準で読み上げできないから...WebView2ランタイムが操るMicrosoft Edgeの力を借りて読み上げを実装する ということ...

≫ 続きを読む

2021/03/21 コンピュータ   TakeMe

CefSharpよりWebView2が標準に移っていくのか?

前にWebBrowserコントロールがあまりに古いのでCefSharpを使うということでアプリを作っていたが,ようやくWebView2がやってきたらしい。

.NET Frameworkでアプリを作っているとWebアプリの要素を取り込みたくなることがある。
ところが,WebBrowserコントロールはInternet Explorerの機能を使用しているのでなかなか新しい機能を盛り込んだWebアプリの機能の仕様が難しかった。

そのため,今のところCefSharpを使っている(1)(2)(3)...等。

ところが,WebView2を使えば割と新しいWebブラウザの機能(Edge)が使用できる。
WebView2ランタイムをインストールした上で,Visual Studioのプロジェクト側ではnugetでWebView2をインストールする。

「Edgeが必要なので当面は古いWindows Embedded Standard 7デバイスの保守向け対応では使えない。ますますWindows 10向けの開発は楽になり,古いシステムへの対応が難しくなる。」
と思っていたが,一応WebView2ランタイムはWindows 7およびWindows 8も対応らしい
ただし,各バージョンのWindows用のEdgeのインストールが必要である。Windows 10以外向けのMicrosoft Edgeは昨年から配信が始まっている。

≫ 続きを読む

2021/03/21 コンピュータ   TakeMe

ZXing.netでQRコード遊び

ちょっと古いネタだけどQRコードにどれだけ文字を詰められるのかを調べていたら,nugetでないかなーと調べたらQRCoderというのが先に出てきて試していたが,オーバーフローしても何も出てこない。

Zxing.Netがの方が作り込まれている。これが一番簡単な例。

だいぶん前にQRコードを使うために使用したけど,忘れていた。そのため最初にQRCoderを使っていたがなかなか使い勝手が悪い。通常の長さの文字列なら問題ないが長くなってくるとスマホで読まなくなる現象が発生。
結局前に使ったのはどんなバーコード作成ライブラリだったのかを調べてZXingだった。そして参考ページを探した。
ZXing.NETをnugetで入れて,例えば,以下のように使用する。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ZXing;

namespace ZxingTEST
{
    public partial class Form1 : Form
    {
        private BarcodeWriter qrcode;
        public Form1()
        {
            InitializeComponent();

            qrcode = new BarcodeWriter
            {
                Format = BarcodeFormat.QR_CODE,
                Options = new ZXing.QrCode.QrCodeEncodingOptions
                {
                    ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.Q,
                    CharacterSet = "UTF-8",
                    Height = 320,
                    Width = 320,
                    Margin = 2
                }
            };
        }

        private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = qrcode.Write(this.textBox1.Text);
        }
    }
}

QRCoderではオーバーフローがどうなっているのか不明だが,ZXing.NETでは例外が返るようになっていた。正しく伝達できるかは、読み取り側のソフト次第だが日本語も書き込みできる。

≫ 続きを読む

2021/03/21 コンピュータ   TakeMe
タグ:Windows Forms