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

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

記事リスト ( )内の数字はレス数
NomalWindowsMediaPlayerで次のURLを指定しても反映されない。(2) | Nomal"−"を縦書きにしたい(9) | Nomal.NET6.0 のWinFormにWPFのユーザーコントロールを配置したい(4) | NomalDataGridViewの列にコンボボックスを表示する(2) | Nomalデータグリッドビューの特定の列ヘッダの色(2) | NomalVB-Report10→11への移行(4) | Nomalデフォルトプリンタの用紙向き変更(0) | NomalASP.net デバッグ時の .js ファイルの変更が反映されない(1) | NomalpictureBoxとlabelの重ね合わせ(2) | NomalWindowsエクスプローラへのドロップ先フォルダの取得(4) | Nomal入力値を元に描画させたい(2) | NomalVBで開いたExcelでのイベントを取得するには(4) | NomalデザイナでSystemColorsのような色一覧から選択できるようにしたい(0) | NomalTaskの入れ子の待ち方2(4) | NomalTaskの入れ子の待ち方(5) | NomalVisualStudio2019 以降の検索ダイアログが正常に動作しない(2) | NomalUsingの使い方が間違っている?(4) | Nomal//./の意味は?(2) | Nomalバイナリーファイルの結合と分解(2) | NomalVSTOとWebView2の共存って可能?(2) | Nomal表の最後の行の下にDropできない(1) | NomalCookieの勉強を始めました。(2) | NomalDataGridViewの特定セルにボタンを配置する方法(3) | NomalDataGridViewのセル結合部分にボタンを表示する方法(3) | Nomal複数のPageに分かれる場合のスクレ―ピング(6) | NomalTask.Runの使い方(4) | NomalPictureBox のサイズを設定する(2) | NomalProcessクラスMainModuleプロパティでアクセス拒否(3) | NomalLINQでControlsをEnable=Falseに設定(3) | Nomalランダムファイルを高速化させたい(5) | Nomalプロセス間の通信(相互)(2) | NomalC#をVBに変換する方法が分かりません(1) | NomalPictureBoxに動的に画像を表示する(1) | NomalYahooのHPで、検索文字の入力ができない(3) | NomalWebView2のEncodeの問題?(5) | NomalWinFormでChromeをSeleriumで操作しているが、Closeの仕方(2) | Nomal印刷部数の固定(1) | NomalWinformでのDataGridView Comboboxのデータ追加削除が出来ない(3) | Nomalプログラムについて。(2) | Nomal拡張子関連付けのサンプルで削除時 例外発生(1) | Nomalユーザーコントロールをフォームで使用した時のエラー(6) | NomalマルチページTIFFをSelectActiveFrameでページ指定するとエラーが発生する(12) | Nomal画像の大きさを取得するには(4) | Nomalファイルがドライブ内で占有する容量(3) | NomalC#FormのXボタンイベントで、e.Cancel が使えない(2) | NomalAxWindowsMediaPlayerでプレイリストの途中から再生するには(2) | NomalWebView2でJavaScriptの実行の終了イベント(4) | NomalDataTableのDataRowVersion毎のInt型値の比較がうまくいかない(5) | NomalGPTかMBRを判断したい(2) | Nomalアセンブリ言語について。(1) | Nomalマクロについて。(3) | NomalDLL内のスレッドからイベントを発行すると、受信したフォームでラベルが更新できない(3) | Nomalアセンブリ言語について。(20) | Nomalシステムコールについて。(2) | Nomal Parallel.Forで思ったより早くならない(5) | NomalAngleSharp.Scripting.JavaScriptの使い方(2) | NomalDataAdapterで2回目のUpDateが出来ない(6) | NomalForm1イベントの選択が出来なくなりました。(9) | Nomalデザーナー時の継承先formのサイズ(0) | Nomalコンソールではなくテキストボックスに文字列を出力したい(7) | NomalAngleSharpのクエリー文2(4) | Nomalコーディングについて。(3) | Nomaldll修正時、それを参照しているexeのリビルド要否(2) | NomalAngleSharpのクエリー文(2) | Nomalデフォルトプロパティを使いたい(6) | Nomalテキストボックスでの制御(7) | NomalUSBカメラをピクチャボックスに表示(3) | Nomal二次元配列内の文字の置き換え(3) | Nomalcolor型を引数にする方法(2) | NomalVSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について(6) | NomalInputボタンが押せない(4) | NomalWebBrowserのDocumentCompletedイベントの切り替え(3) | NomalEndConnectでのエラー(2) | Nomalボタンクリック時のLeaveイベントについて(1) | Nomalエクセルのデータを配列に読込んだ時の配列要素番号について(2) | Nomalorder by で抽出したデータをDataTableに入れてForEachでDataRow取得した際の順番(2) | Nomal非同期プログラミング時のConsole.WriteLineの動作(4) | NomalC#からストアドにDecimalを渡すと値が丸められる(4) | Nomalインスタンスの型を文字列で指定したい(2) | NomalSendKeys.Sendが効いていない(2) | Nomal他のプロジェクトのコントロールがツールボックスに表示されない(3) | Nomal複数のテキストボックス間のTextChangedイベントが相互干渉しないようにしたい(9) | Nomal呼び出し元によってWebApi側の処理速度に差が出る(1) | NomalPanelのDock=Topだとうまくいかない。代替案。(2) | Nomal.NetでのIPv6の比較(5) | Nomal.Net 5.0 におけるDLL参照問題?(7) | Nomal追加コントロールのtabindex値を既存の間に設定する方法(1) | NomalVB.net非同期処理でtextboxに出力したい(2) | NomalToolStripStatusLabelの空白部分を埋めたい(2) | NomalOracle への OleDb 接続に失敗する(3) | Nomal正規表現で株価を取得したい(1) | NomalVB.NETで作成したDLLをVB6.0から呼び出す(3) | Nomalデザイナで編集・チェックアウトキャンセルすると(3) | Nomal親スレッドへ処理の移譲(7) | NomalクラスによるGetBytes関数のエンディアンの違い(2) | Nomal[VB.NET]Excelのプロセスが終了しない(2) | NomalC#をVBに変換した際の強制的な参照渡し(2) | Nomal.Net 5.0 におけるServiceControllerの代替クラス(3) | Nomal新たにshowしたフォームでのボタンのクリック(5) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(4) |



■記事リスト / ▼下のスレッド
■34709 / 親記事)  Inputボタンが押せない
□投稿者/ わん 一般人(6回)-(2021/05/09(Sun) 14:53:05)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    連続投稿失礼します。
    
    WebBrowser.Document内に下記のinputタグがあります。コードからこのボタンのOnClickイベントを発生させたいのですが、上手く行きません。
    <input type="image" src="https://xxxxxxxxxxx.gif" name="ACT_login" alt="ログイン" title="ログイン" class="ov" width="152" height="42" onclick="changeNWEBFLG();">
    
    <script language="JavaScript">
      function changeNWEBFLG() {
        changeJSFLG();
        changeBWFLG(); &#128072;ここでブレークポイントを設定
      }・・・・・・・
    
    Edgeの開発者ツールで、Event Listenersを見ると
    Clickの中に、input.ov Remove ETGate:2816とあります。
    
    ブレークポイントを設定して実際のボタンをクリックするとブレークポイントに飛んでくるので、OnClickイベントで、changeNWEBFLGがよびだされているのは、間違いなさそうです。
    
    試したコードは次のようなものですが、どれも上手く行きません。
    ※適正は別としてNetで色々ググった結果。
    @ WebBrowser1.Document.InvokeScript("changeNWEBFLG();")
    A WebBrowser1.Navigate("javascript:changeJSFLG() ;")
    B Dim doc = WebBrowser1.Document.DomDocument
            Dim evt = CallByName(doc, "createEvent", CallType.Method, "HTMLEvents")
            CallByName(evt, "inputEvent", CallType.Method, "change", True, False)
            SelectElement.InvokeMember("dispatchEvent", evt)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(evt)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(doc)
    
    Bについては、コピペして、編集したつもりですが、何をやっているのか?全く理解できていません。
    
    どなたか?詳しい方いらっしゃいましたら教えて頂けないでしょうか?宜しくお願い致します。
    

違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34711 / ResNo.1)  Re[1]: Inputボタンが押せない
□投稿者/ Hongliang 大御所(602回)-(2021/05/10(Mon) 11:17:52)
  • アイコン一番単純なのは、InvokeMemberでclickすることですが。
    Dim element As HtmlElement = ... ' Documentからidやnameを使って目的のinput要素を取得
    element.InvokeMember("click")

    問題ないかどうかはそのサイトの作り次第です。
違反を報告
引用返信
■34712 / ResNo.2)  Re[2]: Inputボタンが押せない
□投稿者/ わん 一般人(7回)-(2021/05/10(Mon) 23:09:05)
  • アイコンNo34711に返信(Hongliangさんの記事)

    教えて頂いた内容で、出来ました。
    凄く悩んでいたので、大変助かりました。
    有難うございます。

違反を報告
引用返信
■34715 / ResNo.3)  Re[3]: Inputボタンが押せない
□投稿者/ わん 一般人(12回)-(2021/05/10(Mon) 23:13:56)
  • アイコン解決済みボタンを押し忘れました。
違反を報告
引用返信
■34716 / ResNo.4)  Re[4]: Inputボタンが押せない
□投稿者/ わん 一般人(13回)-(2021/05/10(Mon) 23:15:01)
  • アイコン再び忘れ!
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34708 / 親記事)  WebBrowserのDocumentCompletedイベントの切り替え
□投稿者/ わん 一般人(5回)-(2021/05/09(Sun) 14:29:13)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    WebBrowserを使ってインターネットからデータを取得するプログラムを作っています。DocumentCompletedで、読み込み完了を確認してからデータを抽出しているのですが、ページを進めるにあたり、DocumentCompletedの内容が複雑になってきます。
    そこで、AddHandlerとRemoveHandlerで、イベント先を更新しながら進めようと考えています。
    【質問】
    WebBrowserのDocumentCompletedに紐づけられている全てのLink先を削除する方法が分かりません。何か?いい方法はありますでしょうか?
    現在は、AddHandlerする予定のもの全てをとりあえず削除するようにしています。(エラーにはならないので・・・)
    また、Link先の一覧を取得する方法ってありますか?
    詳しい方、いらっしゃいましたら教えて頂けないでしょうか?宜しくお願い致します。
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34710 / ResNo.1)  Re[1]: WebBrowserのDocumentCompletedイベントの切り替え
□投稿者/ Hongliang 大御所(601回)-(2021/05/10(Mon) 11:07:40)
  • アイコン「Link先」というのはイベントに登録されたイベントハンドラのことだと思いますが、これを外部から取得する方法は基本的にはありません。
    // リフレクションを使えば不可能ではないですが。

    AddHander/RemoveHandlerを繰り返すのは個人的にはかえって見通しが悪くなるように思います。
    どんな感じに実装されているのか分かりませんが、例えばDocumentCompletedイベントハンドラ自体は単純にe.Urlに対してswitch文で分岐させ、実際の処理は独立したメソッドにする、ぐらいでもいいんじゃないかなと思います。
    慣れてくればDictionary<string, Action>使うなどの多少の技もありますが…。
違反を報告
引用返信
■34713 / ResNo.2)  Re[2]: WebBrowserのDocumentCompletedイベントの切り替え
□投稿者/ わん 一般人(8回)-(2021/05/10(Mon) 23:11:33)
  • アイコンNo34710に返信(Hongliangさんの記事)
    丁寧に教えて頂き有難うございます。

    冷静に考えてみると、おっしゃる通りだと思います。
    後々に見通しが悪くなるデメリット。
    共感致します。Case文で処理を考えてみます。
    また、困ったら、助けてください。
    有難うございました。

違反を報告
引用返信
■34714 / ResNo.3)  Re[3]: WebBrowserのDocumentCompletedイベントの切り替え
□投稿者/ わん 一般人(9回)-(2021/05/10(Mon) 23:12:02)
  • アイコン解決済み
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34706 / 親記事)  EndConnectでのエラー
□投稿者/ ふかせ 一般人(1回)-(2021/05/06(Thu) 15:48:38)
  • アイコン環境/言語:[OS:windows10 Framework1.1 使用言語:VB.NET] 
    分類:[.NET] 

    こんにちは。
    Socketで非同期通信を行っています。

    BeginConnectから呼び出されるConnectCallback内のEndConnectで発生するエラーを回避したいです。


    現在の形は
    Private Sub ConnenctCallback(ByVal ar As System.IAsyncResult)

    socket = CType(ar.AsyncState, Socket)

    try
    socket.EndConnect()  ←エラー発生
    (中略)
    catch
    socket.BeginConnect() ←リトライ
    End try

    End Sub

    としていて、サーバーの起動が完全に完了する前の状態でEndConnectエラーが発生します。
    サーバーの起動が完全に完了するとEndConnectは完了します。

    try catchを使用せずに、サーバーの起動が完了してからEndConnectやConnectCallback自体を走らせたいのですが、方法をご教示頂けませんでしょうか。

    エラー内容は
    対象のコンピューターによって拒否されたため、接続できませんでした。 192.168.32.86:10000
    との表示です。

    つたない説明で申し訳ありません。

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34707 / ResNo.1)  Re[1]: EndConnectでのエラー
□投稿者/ Hongliang 大御所(600回)-(2021/05/08(Sat) 20:22:49)
  • アイコンどうしようもないので、現状通りTry-Catchで処理してください。
    // Catchした例外の内容はチェックしたほうがいいと思います。
違反を報告
引用返信
■34726 / ResNo.2)  Re[2]: EndConnectでのエラー
□投稿者/ ふかせ 一般人(2回)-(2021/05/13(Thu) 17:32:02)
  • アイコンNo34707に返信(Hongliangさんの記事)
    > どうしようもないので、現状通りTry-Catchで処理してください。
    > // Catchした例外の内容はチェックしたほうがいいと思います。


    そうでしたか。。。
    お答え頂きありがとうございます!!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34704 / 親記事)  ボタンクリック時のLeaveイベントについて
□投稿者/ ペン 一般人(1回)-(2021/04/28(Wed) 19:44:45)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

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

    スプレッドの選択行に対して処理を行うボタンを設置しており、スプレッドへのフォーカスが外れた際にはボタンを非活性にしようとしています。
    しかし、先にスプレッドのLeaveイベントが発生してしまうため、ボタンのClickイベントが発生せず困っています。

    何か良い解決策をご存じの方がいらっしゃればご教授頂きたいです。
違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■34722 / ResNo.1)  Re[1]: ボタンクリック時のLeaveイベントについて
□投稿者/ shu 大御所(494回)-(2021/05/12(Wed) 15:46:53)
  • アイコンNo34704に返信(ペンさんの記事)

    スプレッドのLeaveイベント時のアクティブなコントロールはボタンに
    なっていますでしょうか?であればボタンクリック時完了時にボタンからフォーカスを外しenabledを設定するとよいかと思います。
    アクティブコントロールがボタンとなっていない場合にはその他のコントロールへのフォーカス移動時の処理で行う必要があるかと思います。
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■34701 / 親記事)  エクセルのデータを配列に読込んだ時の配列要素番号について
□投稿者/ 雛鳥 一般人(1回)-(2021/04/27(Tue) 14:15:54)
  • アイコン環境/言語:[Win10 VS2019 .Net Flamework 4.7.2] 
    分類:[.NET] 

    お世話になります。

    ExcelのデータをOjbect型の二次元配列に読み込んだ際、
    ウォッチで取得したデータを確認すると
    配列の要素番号が1から始まっています。

    なぜ0始まりではなく、1始まりなのでしょうか?
    ご存知の方がいらっしゃいましたら、教えていただきたいです。

    以下、テストを行ったソースです。

    Private Sub test()
    Dim xlApp As New Microsoft.Office.Interop.Excel.Application
    Dim xlBooks As Excel.Workbooks
    Dim xlBook As Excel.Workbook
    Dim xlStData As Excel.Worksheet
    Dim xlRange As Range

    Dim excelData(,) As Object
    Dim filePath As String = "読み込むエクセルのファイルパス"

    'ファイルオープン
    xlBooks = xlApp.Workbooks
    xlBook = xlBooks.Open(filePath)
    xlStData = xlBook.Worksheets(1)

    'Excelデータを取得する
    xlRange = xlStData.Range("A1", "D6")
    excelData = CType(xlRange.Value, Object(,))

    'ファイルクローズ
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlStData)
    xlBook.Close(False)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
    xlApp.Quit()
    xlApp.DisplayAlerts = True
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

    GC.Collect()
    End Sub
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34702 / ResNo.1)  Re[1]: エクセルのデータを配列に読込んだ時の配列要素番号について
□投稿者/ 魔界の仮面弁士 大御所(1330回)-(2021/04/28(Wed) 04:30:18)
  • アイコンNo34701に返信(雛鳥さんの記事)
    > なぜ0始まりではなく、1始まりなのでしょうか?

    Excel 側の仕様です。

    たとえば xlBook.Worksheets(1) が 1 ベースなのは、既定のシート名が
    Sheet1 から始まるので、あえて 0 ベースにしていないのだと想像されます。

    また、複数範囲を含む Range オブジェクトの Value プロパティは、
    行番号や列番号は 1 から始まるという事情もあり、伝統的に
    1 ベースの配列を返すようになっているのでしょう。

    なお、Property の Get 時には 1 ベースの配列が返されるだけであり、
    Property の Let 時には、1 ベース以外であっても構いません。


    ところで、ちょっと気になったのが解放処理。
    ReleaseComObject によって、COM の参照カウントを減ずるまでは良いですが、
    そのあとで GC.Collect() を使うのであれば、今のコードは逆効果になる可能性があります。

    参照が解放されていない状態で GC.Collect が呼ばれても、そのオブジェクトは解放されませんので、
    確実に回収させたいのであれば、ReleaseComObject の後で
     xlBook = Nothing
    などの参照を解放しておいてください。
    その後で、GC.WaitForPendingFinalizers() と GC.Collect() を呼ぶようにします。
    ※あるいは、変数がスコープ外になってからガベージコレクトを呼ぶようにする

    https://social.msdn.microsoft.com/Forums/ja-JP/5deec897-a897-404b-a610-f7d894fde1b3/office?forum=officesupportteamja
    https://social.msdn.microsoft.com/Forums/ja-JP/0d9c6273-bade-4f6a-a0de-5adb748d15eb/office?forum=officesupportteamja


    ガベージコレクトが行われた場合、その時点で参照中だったオブジェクトに対しては
    ジェネレーション昇格が発生します。本来は、ジェネレーション 0 がいっぱいになった時点で
    自動的に回収処理が走るのですが、無計画に GC.Collect してしまうと、Gen 0 から削除されるどころか
    むしろ Gen 1 に移動してしまい、自動起動されるガベージコレクトで回収されにくくなります。
    https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/fundamentals#generations
違反を報告
引用返信
■34703 / ResNo.2)  Re[2]: エクセルのデータを配列に読込んだ時の配列要素番号について
□投稿者/ 雛鳥 一般人(2回)-(2021/04/28(Wed) 14:25:29)
  • アイコンNo34702に返信(魔界の仮面弁士さんの記事)

    > Excel 側の仕様です。
    ずっと疑問で調べていたのですが、Excel 側の仕様なんですね…
    すっきりしました。
    教えてくださり、ありがとうございます!

    > ReleaseComObject によって、COM の参照カウントを減ずるまでは良いですが、
    > そのあとで GC.Collect() を使うのであれば、今のコードは逆効果になる可能性があります。
    解放処理へのご指摘もありがとうございます。
    ガベレージコレクトを行った際の一連の動作について 大変勉強不足でした…
    ご指摘いただいた通り、参照を解放してからGC.WaitForPendingFinalizers、GC.Collectを呼び出すよう修正しようと思います。

    参考サイト等も教えていただき、本当に助かりました。
    ありがとうございます!
解決み!
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -