DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomalシステムドライブ以外へのページング設定が反映されない(5) | Nomalブラウザでコピーした透過PNGを貼り付けたい(4) | Nomalforeachでループ回数を取得(2) | Nomalbitmapが保存できない(2) | Nomal特定ピクセルで画像を読み込みたい(2) | NomalDataGridViewでAlt+Enterで改行したい(2) | Nomal全角シフト中にアクセスキーが効かない(5) | NomalDataAdapter.Updateで構文エラー(6) | Nomal抽象クラスで実装したクラスの情報を知る(3) | Nomal画面遷移(モーダルとモードレス)(2) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | Nomal兆億万表記の文字列を数値に変換できる?(3) | NomalLinqにおける明示的型指定の方法(3) | Nomal2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)(2) | Nomalコンソールアプリで、WebView2の利用(2) | NomalEntity Frameworkは、使えるか?(2) | Nomalデータベースからのテーブル名一覧の効率的な取得方法(3) | NomalC#のlong型でオーバーフローになる(2) | Nomal正規表現のパターン表記方法(2) | NomalWebView2によるスクレ―ピング(4) | Nomalこういた物を作れますか?(2) | Nomalツールボックスにtableadapterが表示されない(1) | NomalC# Chart X軸上のグラフ表示(3) | NomalVB.NETでBluetoothデバイスの電池残量を取得する方法(3) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomal重なったPictureBox同士を透過する方法(7) | NomalWindowsフォームデザイナについて(3) | Nomalvb.netでExcelファイル操作(7) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | NomalVB2022でクリスタルレポートが開けない(2) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalDrawstringでの透過文字作成(3) | NomalSpinWait()を使う理由(2) | Nomalantecedentってなんですか?(2) | Nomalワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る(3) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalテーブルを順番通りに直すプログラムを外部で読み込めるようにしたいです。(4) | NomalJSONの複雑な入れ子内部の値を取りたい。(3) | Nomalグリッド表示レコードをJSONに変換(5) | Nomalシステム時計の設定(3) | NomalSeleniumで開いているページのTableを編集したい(5) | Nomalソケット通信入門 ひらがな(4) | NomalVisual Basicでエラーが出る(3) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalRGB値の所得(2) | Nomal時間変数(文字列)の扱い(4) | NomalVB.net からAccessDBへの接続(2) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | NomalPictureBoxの画像を連続保存(11) | NomalDataGridViewの特定セルにボタンを配置する方法(5) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | Nomalラジオボタンの一括設定(7) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalクリックイベントでexeを作成できるか(2) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | Nomalアセンブリ情報が載らない(1) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | Nomalc#で日付型の定義の仕方で質問があります。(2) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | NomalLableのカラー色を文字変数から変更したい(5) | NomalLabelで文字単位の背景色(7) | NomalTEXTBOXのプロパティを文字列に(7) | Nomalタブレット等でスワイプによるスクロールを実装(2) | NomalPDFをフォーム上で表示させる方法につきまして(6) | NomalChart X軸上の描画を切り替えたい(0) | NomalRichTextBoxへのドラッグ&ドロップしたExcelファイルの扱い(3) | Nomal特定のPCだけ発生する「パディングは無効なので削除できません」のエラーの原因(6) | NomalASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする(4) | NomalDatagridViewでファンクションキーを止めたい(5) | Nomal表示動作が重くなる(3) | Nomalbitmapを複数スレッドで処理したい(2) | NomalLoadOptionのパラメータの意味(3) |



■記事リスト / ▼下のスレッド
■35437 / 親記事)  Drawstringでの透過文字作成
□投稿者/ はる 一般人(14回)-(2023/06/05(Mon) 10:56:56)
  • アイコン環境/言語:[Windows11 64bit .Net6.0 c#] 
    分類:[.NET] 

    お世話になっております。

    https://dobon.net/vb/dotnet/graphics/alphabland.html
    を参考に透過の枠ないに透過文字を描画したいんですが、
    フォントサイズが小さくなると文字が透過になりません

    背景があるとフォントサイズか小さくても透過になります。
    背景は設定できないのでサイズが小さくても透過にする方法はありませんか?
    よろしくお願いします。

    添付の画像は
    一番上が68P
    真ん中が66P
    一番下が66P+背景あり
    です
304×283 => 250×232
イメージ
1685930216.jpg
/14KB
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■35438 / ResNo.1)  Re[1]: Drawstringでの透過文字作成
□投稿者/ はる 一般人(15回)-(2023/06/05(Mon) 11:24:01)
  • アイコン追記です

    帳票作成時にコピー不可みたいに描画したいので
    背景は設定できないんです。()

    文言が条件によって変わるので画像をあらかじめ作成せずプログラムでてきないかとおもいまして。
違反を報告
引用返信
■35439 / ResNo.2)  Re[1]: Drawstringでの透過文字作成
□投稿者/ 魔界の仮面弁士 大御所(1548回)-(2023/06/05(Mon) 13:23:38)
  • アイコン
    No35437に返信(はるさんの記事)
    > フォントサイズが小さくなると文字が透過になりません
    ClearType フォントは LCD 前提のサブピクセルで
    スムージング処理が行われるため、この文脈だと
    ヒンティングに失敗してしまいます。
    
    事前に、AntiAliasGridFit もしくは
    AntiAlias を指定してください。
    
    CompositingQuality.HighQuality は背景がない場合は
    無意味ですが、背景ありのために残しておいても良いでしょう。
    
    Save / Restore はお好みで。
    
    using (var bmp = new Bitmap(280, 180))
    using (var g = Graphics.FromImage(bmp))
    using (var p = new Pen(Color.FromArgb(128, Color.Red), 12))
    using (var b = new SolidBrush(Color.FromArgb(128, Color.Yellow)))
    using (var f = new Font("Arial", 30))
    {
        g.Clear(Color.Empty);
        g.DrawRectangle(p, new Rectangle(10, 60, 260, 60));
        var state = g.Save();
        g.CompositingQuality = CompositingQuality.HighQuality;
        g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
        g.DrawString("DOBON.NET", f, b, 15f, 70f);
        g.Restore(state);
        bmp.Save(@"E:\dobon35437.png");
    }

280×180 => 250×160
イメージ
dobon35437.png
/3KB
違反を報告
引用返信
■35440 / ResNo.3)  Re[2]: Drawstringでの透過文字作成
□投稿者/ はる 一般人(16回)-(2023/06/05(Mon) 13:53:59)
  • アイコンNo35439に返信(魔界の仮面弁士さんの記事)
    > ■No35437に返信(はるさんの記事)


    できました!!
    ありがとうございます。
    お世話になりました。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35430 / 親記事)  SpinWait()を使う理由
□投稿者/ Wan 付き人(79回)-(2023/05/31(Wed) 10:26:19)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    MicroSoftの解説に、次のようなコードが記載されています。
    
    https://learn.microsoft.com/ja-jp/dotnet/standard/parallel-programming/how-to-cancel-a-task-and-its-children
    
    この中に、次のように、SpinWait()を使っている部分があります。
    
    For i As Integer = 0 To maxIterations
      Dim sw As New SpinWait()
        For j As Integer = 0 To 100
          sw.SpinOnce()
        Next
      (・・・省略・・・)
    Next
    
    多分?少し時間稼ぎしているだけのように思えますが、ワザワザSpinWait()を使う理由ってありますか?Thread.Sleep()でもいいような?気がします。
    
    詳しい方、教えて頂けませんか?
    

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35431 / ResNo.1)  Re[1]: SpinWait()を使う理由
□投稿者/ Hongliang 大御所(641回)-(2023/05/31(Wed) 13:29:17)
  • アイコン' Do a bit of work. Not too much.
    とコメントにあるように、少しだけの仕事を表すダミーコードです。
    Sleep系の場合スレッドコンテキストの切り替えとかが起こるので、実際のアプリで書く「意味のあるコード」に対するサンプルコードとしての完全な代替にはなりません(完全な代替は必要ないというケースがほとんどですけども)。
違反を報告
引用返信
■35432 / ResNo.2)  Re[2]: SpinWait()を使う理由
□投稿者/ Wan 付き人(80回)-(2023/06/02(Fri) 17:36:13)
  • アイコン「スレッドコンテキストの切り替えとかが起こる」という部分など、私の理解できる
    を超えていますが、意味があって使われていることが判りました。

    ありがとうございました。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35426 / 親記事)  antecedentってなんですか?
□投稿者/ Wan 付き人(77回)-(2023/05/22(Mon) 08:37:08)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    MicroSoftの解説に、次のようなものがあります。
    「継続タスクを使用したタスクの連結」
    https://learn.microsoft.com/ja-jp/dotnet/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks
    この中に、次のようなコードの記載があり、taskA.ContinueWith(Sub(antecedent)の部分で、ラムダ式にantecedentという引数が渡されています。
    しかし、Main()の中に、antecedentという変数は宣言されていません。
    どこから?発生したのでしょうか?
    Imports System.Threading.Tasks
    Module Example
    Public Sub Main()
          Dim taskA As Task(Of DayOfWeek) = Task.Run(Function() DateTime.Today.DayOfWeek)
          Dim continuation As Task = taskA.ContinueWith(Sub(antecedent)
                                                              Console.WriteLine("Today is {0}.", antecedent.Result)
                                                          End Sub)
          continuation.Wait()
        End Sub
    End Module
    VisalStudioにコピペして、「antecedent」の部分にカーソルを当てると、antecedent As Task(Of DayOfWeek)となっており、
    taskAを指しているようです。
    メソッドチェンの親を指すのでしょうか?
    
    詳しい方、宜しくお願い致します。
    

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35427 / ResNo.1)  Re[1]: antecedentってなんですか?
□投稿者/ Hongliang 大御所(640回)-(2023/05/22(Mon) 09:50:42)
  • アイコン
    そこはいわばメソッドの引数部分なので、変数が先行していないのは当然です。
    ラムダ式ではなく、メソッドとして独立させたら分かりやすいと思います。
    ラムダ式だとtaskAをキャプチャすればいいじゃん、となって、
    ContinueWithの引数として与えられる意味がよく分からなくなるでしょうしね。
    
    Sub Main()
        Dim taskA As Task(Of DayOfWeek) = Task.Run(Function() DateTime.Today.DayOfWeek)
        Dim continuation As Task = taskA.ContinueWith(AddressOf NextAction)
        continuation.Wait()
    End Sub
    
    Sub NextAction(ByVal antecedent As Task(Of DayOfWeek))
        Console.WriteLine("Today is {0}.", antecedent.Result)
    End Sub

違反を報告
引用返信
■35428 / ResNo.2)  Re[2]: antecedentってなんですか?
□投稿者/ Wan 付き人(78回)-(2023/05/23(Tue) 08:31:05)
  • アイコンHongliang様
    御指南ありがとうございます。
    デリゲートの理解不足が原因だと分かりました。
    今一度、勉強し直します。
    大変助かっております。ありがとうございます。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35422 / 親記事)  ワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る
□投稿者/ けい 一般人(8回)-(2023/05/12(Fri) 19:05:52)
  • アイコン環境/言語:[Windows10、VB.NET2022] 
    分類:[.NET] 

    お世話になります。

    ヤフーのアカウントで、
    開発用のテストアカウントを設け、
    ヤフーのWebAPIを使用するのに必要な、
    「クライアントID」を割り振ってもらっています。

    また、認証を求めるWebAPIを使用するのに必要な、
    アクセストークンという認証文字列を受け取るためのURLである、
    「コールバックURL」を指定しています。

    ヤフーのアクセストークンを取得するためのアクセス先が、
    「Authorizationエンドポイント」と言い、接続先は、
    URL: https://auth.login.yahoo.co.jp/yconnect/v2/authorization
    サポートするHTTPメソッド: GET/POST
    です。

    (参照)
    Authorizationエンドポイント
    https://developer.yahoo.co.jp/yconnect/v2/authorization_code/authorization.html

    プログラムにおいては、
    Form1上のButton1をクリックすると、
    このURLに接続し、自動ログインがなされ、
    アクセストークン情報を含むJSONデータが返り、
    RichTextBox1に表示するようにしたいです。

    そこで、次のようなコードを記述しました。

    ---------------------------------------------

    Imports System.IO
    Imports System.Text

    Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs)
    Handles Button1.Click

    Dim TargetURL As String

    TargetURL="https://auth.login.yahoo.co.jp/yconnect/v2/authorization?client_id=<クライアントID>&response_type=token(or code)&scope=openid&redirect_uri=<コールバックURL>&output=json"

    Using client As New System.Net.Http.HttpClient()
    Using response1 As System.Net.Http.HttpResponseMessage = client.GetAsync(TargetURL).Result

    Dim responseBody1 As String = response1.Content.ReadAsStringAsync().Result
    RichTextBox1.Text = responseBody1.ToString

    End Using
    End Using

    End Sub

    End Class

    ---------------------------------------------

    これを実行しますと、
    RichTextBox1には、JSONデータではなく、
    ヤフーのログイン画面のHTMLが返ります。
    自動ログインができていません。

    ここで、TargetURLも文字列を、ブラウザのURL欄に手動で入れて実行すると、
    ヤフーのログイン画面が表示されます。
    ヤフーのログインでは、パスワードが固定ではなく、
    ユーザーIDを入力したら、ワンタムパスワードを発行し、
    メールまたはスマホのSMSに届いたパスワードを画面に手入力して、
    ログインします。
    そうすると、指定していた「コールバックURL」のサイトがリダイレクト表示され、URL欄に、「#access_token=」とアクセストークンが表示されます。

    この一連の手続きを手動ではなく自動で行いたいので、
    次のようなコードを検討しました。

    「TargetURL=」の後ろの部分です。

    ワンタイムパスワード認証は、Basic認証ではないのかもしれませんが、
    まずは書いてみました。

    (参照)
    https://teratail.com/questions/373083
    ---------------------------------------------

    'Basic認証するユーザ名とパスワード
    Dim userName = "<ユーザーID>"
    Dim userPassword = ""

    'リクエストの生成
    Dim request = New HttpRequestMessage
    request.Method = HttpMethod.Post
    request.RequestUri = New Uri(TargetURL)

    'Basic認証ヘッダを付与する
    request.Headers.Authorization
    =
    New System.Net.Http.Headers.AuthenticationHeaderValue
    ("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes
    (String.Format("{0}:{1}", userName, userPassword))))

    'リクエストの送信
    Dim httpClient = New HttpClient()
    Dim response2 = httpClient.SendAsync(request)
    RichTextBox2.Text = response2.ToString

    ---------------------------------------------

    これを実行しますと、
    RichTextBox2には、
    次のような文字列が返ります。

    System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpResponseMessage,System.Net.Http.HttpClient+<<SendAsync>g__Core|83_0>d]

    上記のコードでは、
    userPassword = ""
    のため、当然ログインができないのだと思いますが、
    ワンタイムパスワードをここでどのように記述すればよいのか、
    わかりませんでした。

    また、PostAsyncを使用する気もすればよい気もするのですが、
    ここでの使い方が分かりませんでした。

    (参照)
    HttpClient.PostAsync メソッド
    https://learn.microsoft.com/ja-jp/dotnet/api/system.net.http.httpclient.postasync?view=net-8.0

    WebRequestでPOSTする方法はネットに例があったのですが、
    廃止されているとのことでした。

    (参照)
    認証が必要なページをダウンロードする
    http://dobon.net/vb/dotnet/internet/usecredentials.html
    WebRequest、WebClient、ServicePoint は廃止されている
    https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/networking/6.0/webrequest-deprecated

    以上、長くなってしまいましたが、
    ワンタイムパスワードを使用するサイトに自動ログインしてアクセストークンを含むJSONデータを取得するには、どのようにしたらよいか。

    可能な範囲でご指導いただきたく、どうぞよろしくお願い申し上げます。


違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■35423 / ResNo.1)  Re[1]: ワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る
□投稿者/ Azulean 大御所(537回)-(2023/05/12(Fri) 21:47:13)
  • アイコン2023/05/12(Fri) 21:48:42 編集(投稿者)

    No35422に返信(けいさんの記事)
    > ワンタイムパスワードを使用するサイトに自動ログインしてアクセストークンを含むJSONデータを取得するには、どのようにしたらよいか。
    >

    結論から言えば「できません」。


    この authorization のサイトをユーザーに表示し、ユーザーがIDやパスワード、ワンタイムパスワードを入力し、アプリケーションがアクセスすることを認めるというのが認証プロセスです。
    これは自動化できません。

    通常、初回(や一定期間経過後)にこの画面を表示してユーザーに権限を求め、以降は得たアクセストークンで処理を実行するように作ります。
    いわゆる OAuth 認証に当たります。
    (アプリケーションに、IDやパスワードを晒すことなく、権限を許可できる仕組み)
違反を報告
引用返信
■35424 / ResNo.2)  Re[2]: ワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る
□投稿者/ けい 一般人(9回)-(2023/05/12(Fri) 22:31:29)
  • アイコンNo35423に返信(Azuleanさんの記事)

    ありがとうございます。

    自動化できない場合、手動でログインした後の状態で、アクセストークンを、ブラウザ経由(マウスでURL表示部分のアクセストークン部分を選択、コピペ)ではなく直接取得する方法がありますでしょうか。

    ブラウザ経由の場合は、例えば、WebBrowserコントロールで画面を表示すれば、URLを取得しやすいようですが、現在このコントロールは終了の方向であるようですね。
    WebView2コントロールというものがあるようで、こちらでテストしてみます。


違反を報告
引用返信
■35425 / ResNo.3)  Re[3]: ワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る
□投稿者/ けい 一般人(10回)-(2023/05/16(Tue) 17:20:49)
  • アイコンNo35423に返信(Azuleanさんの記事)

    お世話になります。

    ブラウザはEdge、コントロールはWebView2を使うことにしました。
    他のブラウザでWebView2を使う方法は調べきれていません。

    (参照)
    Microsoft Edge WebView2
    https://learn.microsoft.com/ja-jp/microsoft-edge/webview2/

    上記のTargetURLをWebView2コントロールに指定して、
    ヤフーのログイン画面を開き、
    届いたワンタイムパスワードでログインします。

    リダイレクトされたサイトのURLにアクセストークンが含まれており、
    それを取得します。

    コードは以下のようになりました。
    WebView2は初期化が必要であること、
    URLを取得する場合は、
    WebView2_NavigationCompleted=Trueになってからでないと取得できない、
    ということでした。

    -------------------------------------

    Async Sub InitializeAsync()
    Await WebView2.EnsureCoreWebView2Async(Nothing)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '初期化
    InitializeAsync()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs)
    End Sub Button1.Click
    'サイトを開く
    WebView2.CoreWebView2.Navigate(TargetURL2)
    End Sub

    Module Hensu
    'パブリック変数宣言
    Public intNavigationState As Integer
    End Module

    Private Sub WebView2_NavigationStarting(sender As Object, e As CoreWebView2NavigationStartingEventArgs) Handles WebView2.NavigationStarting
    intNavigationState = 0 'サイト表示開始
    End Sub

    Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView2.NavigationCompleted
    intNavigationState = 1 'サイト表示完了
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs)
    End Sub Button2.Click
    Dim strResponse As String
    If intNavigationState = 1 Then
    'URLを取得する。
    strResponse=WebView2.CoreWebView2.Source
    End If
    End Sub

    -------------------------------------

    ここで得られたstrResponseから、アクセストークンを抽出できました。

    ご指導ご教示を誠にありがとうございました^^。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▲上のスレッド
■35416 / 親記事)  style.displayだと効率悪いから違うやり方をしたいです。
□投稿者/ えっぴー 一般人(1回)-(2023/05/11(Thu) 13:00:19)
  • アイコン環境/言語:[javascript] 
    分類:[その他] 

    style.displayだと効率悪いから違うやり方をしたいです。
    以下はhtmlです。
    なぜ効率悪いかというと、
    一つ一つ、
    セレクトごとに、
    document.getElementById('Box1').style.display = "";と、
    document.getElementById('Box1').style.display = "none";
    を書かなければならないからです。
    構文が長くなってしまい、非効率です。
    しかし、document.getElementById自体1つしか書けないのです。
    for文を使う必要があるのです。
    ご教授願えたら幸いです。
    <div class="col-auto my-1">
    <label for="sample">選択してください</label>
    </div>
    <div class="col-auto my-1">
    <select class="form-control" id="sample" onchange="viewChange();">
    <option value="select1">one</option>
    <option value="select2">two</option>
    <option value="select3">three</option>
    </select>
    </div>
    <div class="col-auto my-5">
    <div id="Box1" class="my-5">
    <p>one</p>
    </div>
    <div id="Box2" class="my-5">
    <p>two</p>
    </div>
    <div id="Box3" class="my-5">
    <p>three</p>
    </div>
    </div>
    <script>
    function viewChange(){
    if(document.getElementById('sample')){
    id = document.getElementById('sample').value;
    if(id == 'select1'){
    document.getElementById('Box1').style.display = "";
    document.getElementById('Box2').style.display = "none";
    document.getElementById('Box3').style.display = "none";
    }else if(id == 'select2'){
    document.getElementById('Box1').style.display = "none";
    document.getElementById('Box2').style.display = "";
    document.getElementById('Box3').style.display = "none";
    }
    else if(id == 'select3'){
    document.getElementById('Box1').style.display = "none";
    document.getElementById('Box2').style.display = "none";
    document.getElementById('Box3').style.display = "";
    }
    }

    window.onload = viewChange;
    }
    </script>
    javascript全文を書いていただければ幸いです。
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35417 / ResNo.1)  Re[1]: style.displayだと効率悪いから違うやり方をしたいです。
□投稿者/ 魔界の仮面弁士 大御所(1544回)-(2023/05/11(Thu) 13:27:36)
  • アイコン2023/05/11(Thu) 13:31:57 編集(投稿者)

    No35416に返信(えっぴーさんの記事)
    > style.displayだと効率悪いから違うやり方をしたいです。
    そもそもなぜ、style を直接操作したいのでしょうか。
    基本的には css クラスで操作する設計にするべきだと思いますが…。
    https://ja.javascript.info/styles-and-classes

    CSS や JS 向けのフレームワークを使うにせよ使わないにせよ、
    広域的操作であれば class / className で調整した方が便利かと。


    > セレクトごとに、
    > document.getElementById('Box1').style.display = "";と、
    > document.getElementById('Box1').style.display = "none";
    > を書かなければならないからです。
    短縮表記だけの話なら、
     const $id = document.getElementById;
    みたいにエイリアスを用意して、
     $id('box1').style.display = 'none';
    などとは書けますね。

    あるいは CSSStyleDeclaration オブジェクト自体をキャッシュした
     let boxStyle = document.getElementById('Box1').style;
    などを用意しておけば、以降は
     boxStyle.display = 'none';
    と書くことはできますが…いずれにせよ、style は積極的に使うべきでなく、
    基本的には CSS クラスで制御するようにし、それで処理しきれない要素に
    限定して、style の直接操作を試みた方が良いでしょう。


    > しかし、document.getElementById自体1つしか書けないのです。
    document.querySelector
    document.querySelectorAll
    を使わないのは何故ですか? (CSS セレクター指定)
    https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Selectors
違反を報告
引用返信
■35418 / ResNo.2)  Re[2]: style.displayだと効率悪いから違うやり方をしたいです。
□投稿者/ えっぴー 一般人(2回)-(2023/05/11(Thu) 14:00:44)
  • アイコン全文と言いました。
    僕は天才のように、断片的な情報から組み合わせて、完成したものを作る能力はございません。
違反を報告
引用返信
■35419 / ResNo.3)  Re[3]: style.displayだと効率悪いから違うやり方をしたいです。
□投稿者/ 福ちゃん 一般人(3回)-(2023/05/11(Thu) 17:34:17)
  • アイコンもういいです。
    あなたを役立たずとみなします。
解決み!
違反を報告
引用返信
■35420 / ResNo.4)  Re[4]: style.displayだと効率悪いから違うやり方をしたいです。
□投稿者/ 魔界の仮面弁士 大御所(1545回)-(2023/05/11(Thu) 18:32:47)
  • アイコン
    No35418に返信(えっぴーさんの記事)
    > 全文と言いました。
    https://codepen.io/benshi-orator/pen/poxVZbg


    No35419に返信(福ちゃんさんの記事)
    > もういいです。
    解決済みチェックの「スレッドを閉じる目的ではチェックしないでください!」
    と書かれた赤文字を読まれましたか?

    掲示板の投稿ルールを守って利用してください。
    https://dobon.net/vb/bbs/index.html

違反を報告
引用返信
■35421 / ResNo.5)  【注意】ルールをお守りください
□投稿者/ 管理人 一般人(1回)-(2023/05/12(Fri) 03:16:45)
  • アイコンえっぴーさんの今までのご投稿(別のお名前でのご投稿もありますが)を拝見させていただくと、明らかに書き込みのルールが守られていません。

    書き込みのルールについて
    https://dobon.net/vb/bbs/index.html

    しかし、それ以前の問題として、No35419 のご投稿は、人を侮辱した内容であり、あまりにひどいです。よって、大変申し訳ありませんが、えっぴーさんのご投稿を一時的に禁止させていただきます。

    今後はルールをお守りいただけると約束していただけるのであれば、投稿禁止を解除させていただきますので、その場合は管理人へご連絡ください。

    なお、さらなる迷惑行為が行われた場合は、さらに厳しい対応をとらせていただくことになってしまうかもしれませんので、絶対にやめてください。

    以上です。よろしくお願いいたします。
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]






Mode/  Pass/


- Child Tree -