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

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

記事リスト ( )内の数字はレス数
Nomal.NetでのIPv6の比較(5) | Nomal追加コントロールのtabindex値を既存の間に設定する方法(1) | Nomal.Net 5.0 におけるDLL参照問題?(7) | NomalVB.net非同期処理でtextboxに出力したい(2) | NomalToolStripStatusLabelの空白部分を埋めたい(2) | NomalOracle への OleDb 接続に失敗する(3) | Nomal正規表現で株価を取得したい(1) | Nomal親スレッドへ処理の移譲(7) | Nomalデザイナで編集・チェックアウトキャンセルすると(3) | NomalVB.NETで作成したDLLをVB6.0から呼び出す(3) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(4) | NomalクラスによるGetBytes関数のエンディアンの違い(2) | Nomal.Net 5.0 におけるServiceControllerの代替クラス(3) | Nomal[VB.NET]Excelのプロセスが終了しない(2) | NomalC#をVBに変換した際の強制的な参照渡し(2) | Nomal新たにshowしたフォームでのボタンのクリック(5) | Nomalリッチテキストボックスの文字を太文字にしたい(2) | NomalVB.netにおける固定長出力方法(3) | NomalDataObjectの使いまわし(5) | NomalLIstview のDataSource(2) | NomalClassの作り方(2) | NomalOpenFileDialogの初期ファイル名の表示が変(1) | NomalVB.NETのVBA化(2) | Nomal改行のコード(7) | NomalGoogle翻訳の結果の取得(2) | NomalStopwatchクラスのElapsedMillisecondsの挙動(2) | Nomal.net Chartで二重ドーナツグラフの作り方(3) | Nomalexeをショートカットから起動した場合のエラー(2) | Nomalデスクトップ と Desktop(6) | Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(3) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalDrawBezierの使い方について(7) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalGROUPBOXの複製について(vb.net)(1) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalAccess OLEでExecuteNonQuery(3) | NomalKeyDownでの右コントロールキーイベント(2) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalDataGridViewの行番号(7) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | Nomal自分自身を呼び出すのはOKですか(1) | NomalWebBrowser Control foreachで値が消える(2) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | NomalWebBrowser Controlを使って、任意の値を取得(5) | NomalEditボックスに簡体字をセットする方法(2) | NomalList型でエラーが起きてしまい・・・(1) | Nomalフォルダ内の全ての容量を取得したい(4) | NomalWebClientが上手く動かない(2) | Nomal共変性と反変性ってこういうこと?(4) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalLINQの拡張メソッドの定義(1) | Nomalこんな演算子初めて見ました。(5) | Nomalプロセスからウインドウを取得(4) | Nomalフォーム外のカーソルの変更(2) | NomalLINQのメソッド構文の書き方(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | Nomalラムダ式の勉強中(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | NomalNewの使い方間違ってますか?(4) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalC#をVBに変換(2) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalCatch時のex.StackTraceの情報(3) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalPictureBox.Locationのキャンセル(3) | NomalJOIN操作の構文エラー(4) | NomalVisualStudioでマクロ(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalRDP接続でのネットワーク帯域制限(0) | NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalDrawImage でメモリ不足エラー(3) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalCode128でバーコードが読み取れない(8) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | NomalVC++ → VB.Netに変換時に文法エラー(2) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalVb.netからAccessへの接続について(3) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal令和の日付への対応(3) |



■記事リスト / ▼下のスレッド
■34577 / 親記事)  VB.NETからRDゲートウェイを利用したリモートデスクトップ接続
□投稿者/ LOVESONY 一般人(1回)-(2020/11/20(Fri) 20:45:01)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    皆さんはじめまして。
    VB.NETからRDゲートウェイを利用したリモートデスクトップ接続を行いたいです。
    RDゲートウェイを利用する場合のリモートデスクトップの起動方法をご教示頂けますでしょうか。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34578 / ResNo.1)  Re[1]: VB.NETからRDゲートウェイを利用したリモートデスクトップ接続
□投稿者/ Azulean 大御所(519回)-(2020/11/20(Fri) 21:40:12)
  • アイコンNo34577に返信(LOVESONYさんの記事)
    > VB.NETからRDゲートウェイを利用したリモートデスクトップ接続を行いたいです。
    > RDゲートウェイを利用する場合のリモートデスクトップの起動方法をご教示頂けますでしょうか。

    リモートデスクトップクライアントを起動するということは、mstsc.exe の起動だと思います。
    「mstsc.exe /?」として起動するとコマンドライン引数の説明が表示されますので、まずはそれを確認してみてはどうでしょうか?

    その上でわからない点を具体的に質問されると良いと思います。
違反を報告
引用返信
■34579 / ResNo.2)  Re[2]: VB.NETからRDゲートウェイを利用したリモートデスクトップ接続
□投稿者/ LOVESONY 一般人(2回)-(2020/11/20(Fri) 22:03:36)
  • アイコンNo34578に返信(Azuleanさんの記事)
    > ■No34577に返信(LOVESONYさんの記事)
    >>VB.NETからRDゲートウェイを利用したリモートデスクトップ接続を行いたいです。
    >>RDゲートウェイを利用する場合のリモートデスクトップの起動方法をご教示頂けますでしょうか。
    >
    > リモートデスクトップクライアントを起動するということは、mstsc.exe の起動だと思います。
    > 「mstsc.exe /?」として起動するとコマンドライン引数の説明が表示されますので、まずはそれを確認してみてはどうでしょうか?
    >
    > その上でわからない点を具体的に質問されると良いと思います。

    ありがとうございます。
    早速調べてみました。
    mstsc.exeを使ってRDPを実行できそうなのですが、ユーザ名やパスワードは指定できないのでしょうか?
違反を報告
引用返信
■34580 / ResNo.3)  Re[3]: VB.NETからRDゲートウェイを利用したリモートデスクトップ接続
□投稿者/ Azulean 大御所(520回)-(2020/11/21(Sat) 10:55:48)
  • アイコンNo34579に返信(LOVESONYさんの記事)
    > mstsc.exeを使ってRDPを実行できそうなのですが、ユーザ名やパスワードは指定できないのでしょうか?

    「接続用の.rdpファイル」という言葉を確認されたかと思います。
    「rdp」と「パスワード」を組み合わせて検索してみると良いでしょう。

    (ヘルプに示唆されているようにコマンドライン引数での直接の指定はできません)
違反を報告
引用返信
■34615 / ResNo.4)  Re[4]: VB.NETからRDゲートウェイを利用したリモートデスクトップ接続
□投稿者/ LOVESONY 一般人(3回)-(2021/01/08(Fri) 15:34:51)
  • アイコンNo34580に返信(Azuleanさんの記事)
    > ■No34579に返信(LOVESONYさんの記事)
    > 「接続用の.rdpファイル」という言葉を確認されたかと思います。
    > 「rdp」と「パスワード」を組み合わせて検索してみると良いでしょう。
    >
    > (ヘルプに示唆されているようにコマンドライン引数での直接の指定はできません)


    返信が遅れましてすいません。
    あれから試行錯誤して少しづつ進んでおります。
    ありがとうございました!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34611 / 親記事)  クラスによるGetBytes関数のエンディアンの違い
□投稿者/ あばば無人君 一般人(15回)-(2021/01/07(Thu) 12:13:38)
  • アイコン環境/言語:[Windows10(1909) 64bit、.Net 5.0、C#] 
    分類:[.NET] 

    いつも当サイトで勉強させて頂いております。

    さてタイトルの件ですが、BitConverterクラスで以下の通り
    GetBytes関数をコールすると結果は「42-30」となりました。

    Debug.WriteLine(BitConverter.ToString(BitConverter.GetBytes('あ')));

    文字コード表を見ると「あ」は0x3042なので、上記の結果は
    リトルエンディアンということで納得できました。
    (ちなみにBitConverter.GetBytesはUnicode値)

    ですが、以下の様にエンコーディングクラスを生成してその
    GetBytes関数をコールすると結果は「E3-81-82」となりました。

    Encoding utf8Enc = new UTF8Encoding(true);
    Debug.WriteLine(BitConverter.ToString(utf8Enc.GetBytes("あ")));

    UTF-8の「あ」は0xE38182なので値自体はあっているのですが
    バイトの並びがビッグエンディアンなのが不思議です。

    同じ言語でなぜエンディアンが異なるのか、理由が分かる方が
    いらっしゃいましたら教えて頂きたいです。

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34612 / ResNo.1)  Re[1]: クラスによるGetBytes関数のエンディアンの違い
□投稿者/ Hongliang 大御所(594回)-(2021/01/07(Thu) 13:29:22)
  • アイコン2021/01/07(Thu) 13:29:50 編集(投稿者)

    .NET FrameworkのCharおよびStringは、内部エンコーディングとしてリトルエンディアンのUTF-16を使用しています。
    なので'あ'は下の桁のほうが前に出てきます。

    一方、UTF-8はエンディアンを持たない固定のシーケンスになります。
    > UTF-8の「あ」は0xE38182なので
    UTF-8をn桁の16進数と考えるのは好ましくないように思います。
    0xE3, 0x81, 0x82というn個のバイトシーケンスとして捉えたほうが良いかと。
違反を報告
引用返信
■34614 / ResNo.2)  Re[2]: クラスによるGetBytes関数のエンディアンの違い
□投稿者/ あばば無人君 一般人(17回)-(2021/01/07(Thu) 14:32:27)
  • アイコンHongliangさん、ご回答ありがとうございます。

    > 一方、UTF-8はエンディアンを持たない固定のシーケンスになります。

    エンディアンは環境(OSとかCPU)で決まるのではなく、文字コードで
    決まるのですね。勘違いしていました。


    > .NET FrameworkのCharおよびStringは、内部エンコーディングとしてリトルエンディアンのUTF-16を使用しています。

    確認のため以下のコードを実施したところ、確かに「42-30」でした。
    Encoding uniEnc = Encoding.GetEncoding("Unicode");
    Debug.WriteLine(BitConverter.ToString(uniEnc.GetBytes("あ")));


    エンコーディングクラスでのGetBytes関数なら全てが
    ビッグエンディアンになる訳ではないと理解できました。

    本件はこれで解決済みとさせて頂きます。
    ご回答、ありがとうございました。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34601 / 親記事)  .Net 5.0 におけるServiceControllerの代替クラス
□投稿者/ あばば無人君 一般人(11回)-(2020/12/25(Fri) 16:44:44)
  • アイコン環境/言語:[Windows10(1909) 64bit、.Net 5.0、C#] 
    分類:[.NET] 

    いつも当サイトで勉強させて頂いております。

    さてタイトルの件ですが、現在.NetFrameworkで作成されたライブラリを
    .Net 5.0で作り直す作業をしております。

    現行のライブラリの中でServiceControllerクラスを使用して特定の
    サービスが起動しているかチェックしている処理があるのですが、
    .Net5.0だとServiceControllerクラスが使えません。
    (そもそもSystem.ServiceProcess.dllが無い)

    .Net 5.0はクロスプラットフォームなので仕方ないかと思いますが、
    代替のクラス(や方法)等ご存知の方はいらっしゃいませんでしょうか?

    宜しくお願いいたします。

違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34602 / ResNo.1)  Re[1]: .Net 5.0 におけるServiceControllerの代替クラス
□投稿者/ Hongliang 大御所(592回)-(2020/12/25(Fri) 17:24:07)
  • アイコンhttps://docs.microsoft.com/ja-jp/dotnet/api/system.serviceprocess.servicecontroller?view=dotnet-plat-ext-5.0
    .NET Core 1.0の時点で入っているようですが…。
    アセンブリ名は少し変わったみたいですね。
違反を報告
引用返信
■34603 / ResNo.2)  Re[2]: .Net 5.0 におけるServiceControllerの代替クラス
□投稿者/ あばば無人君 一般人(13回)-(2020/12/25(Fri) 21:01:14)
  • アイコンHongliangさん、お返事ありがとうございます。

    > .NET Core 1.0の時点で入っているようですが…。
    > アセンブリ名は少し変わったみたいですね。

    「.Net Platform Extensions」なる物があるのですね〜。
    恥ずかしながら初めて知りました。

    さっそく作り直し中のライブラリのプロジェクトに
    NuGet(CUI版)から導入してみましたところ、
    ServiceControllerクラスが使用できました。
    本当にありがとうございます。

    ただ、ビルドしてbinフォルダを確認したところ
    ServiceControllerクラスが含まれてるDLLの他に
    大量のDLLや、runtimesというフォルダが作られ
    その中に様々なOS名のフォルダが作られました。

    これらもライブラリの一式として加えるのは
    かなり抵抗がありますね。困ったものです(^_^;)

    何はともあれタイトルの疑問は解決できました。
    教えて頂き本当にありがとうございました。

違反を報告
引用返信
■34610 / ResNo.3)  Re[3]: .Net 5.0 におけるServiceControllerの代替クラス
□投稿者/ あばば無人君 一般人(14回)-(2021/01/07(Thu) 11:48:30)
  • アイコンすみません、解決済みにしていませんでした。
    本件、これで解決とさせて頂きます。

    Hongliangさん、ありがとうございました。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34607 / 親記事)  [VB.NET]Excelのプロセスが終了しない
□投稿者/ FireFairy 一般人(1回)-(2021/01/06(Wed) 17:14:02)
  • アイコン環境/言語:[Win10 64bit VB.NET Ver3.5] 
    分類:[.NET] 

    いつも参考にさせて頂いており、初めて投稿いたします。
    何卒よろしくお願いいたします。
    
    タイトルの件についてですが、
    取得したデータをExcelに出力し、列を自動調整する処理を書いています。
    複数のシートが作成されますのでシート毎に列を自動調整するよう処理を記載しています。
    以下コードで右向き矢印の処理が原因でExcelのプロセスが残ってしまいます。
    
    先輩方にお力をお借りしたく初投稿させて頂きました。
    恐縮ですが何卒よろしくお願いいたします。
    
    
    以下にコードを抜粋いたします。
    '--------------------------------------
    '----------Excel 列の自動調整----------
    Dim xlApp As New Excel.Application
    Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
    Dim xlBook As Excel.Workbook = xlBooks.Open(IO.Path.Combine(FolderBrowserDialog.SelectedPath, StrExcelFileName))
    Dim xlSheets As Excel.Sheets = xlBook.Worksheets
    Dim xlSheet As Excel.Worksheet
    Dim xlCells As Excel.Range
    Dim xlRange As Excel.Range
    
    For i = 1 To xlSheets.Count
    
        xlSheet = xlSheets(i)
        xlCells = xlSheet.Cells(1, i)
    →  xlRange = xlSheet.Range("A1", xlCells)
        xlRange.EntireColumn.AutoFit()
    
        'MRComObject(xlRange)
        MRComObject(xlCells)
        MRComObject(xlSheet)
    Next
    MRComObject(xlSheets)
    xlBook.Save()
    xlBook.Close()
    MRComObject(xlBook)
    MRComObject(xlBooks)
    xlApp.Quit()
    MRComObject(xlApp)
    '----------Excel 列の自動調整----------
    '--------------------------------------
    
    
    Private Sub MRComObject(ByRef objCom As Object)
        Try
    
            If Not objCom Is Nothing AndAlso System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
                Dim i As Integer
                Do
                    i = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
                Loop Until i <= 0
            End If
    
        Catch ex As Exception
    
    
        Finally
    
            objCom = Nothing
        End Try
    End Sub

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34608 / ResNo.1)  Re[1]: [VB.NET]Excelのプロセスが終了しない
□投稿者/ 魔界の仮面弁士 大御所(1310回)-(2021/01/06(Wed) 18:54:31)
  • アイコン
    2021/01/06(Wed) 18:57:40 編集(投稿者)
    
    ■No34607に返信(FireFairyさんの記事)
    > 複数のシートが作成されますのでシート毎に列を自動調整するよう処理を記載しています。
    > 以下コードで右向き矢印の処理が原因でExcelのプロセスが残ってしまいます。
    
    既に読まれているかもしれませんが、下記の記事を紹介しておきます。
    http://hanatyan.sakura.ne.jp/vb2005/vb2013excel01.htm
    
    
    > Sub MRComObject(ByRef objCom As Object)
    この実装だと、Option Strict On モードで使えないのが難点ですね。
    
    上記記事にあるように、
     Sub MRComObject(Of T As Class)(ByRef objCom As T)
    などとしておくと、Option Strict On にも対応できるようになります。
    
    
    
    とりあえず修正案。
    
    
    For i = 1 To xlSheets.Count
        Dim xlSheet As Excel.Worksheet = xlSheets(i)
        Dim xlCells1 As Excel.Range = xlSheet.Cells
        Dim xlCells2 As Excel.Range = xlCells1(1, i)
        Dim xlCells3 As Excel.Range = xlSheet.Range("A1", xlCells2)
        Dim xlCells4 As Excel.Range = xlCells3.EntireColumn
        xlCells4.AutoFit()
        MRComObject(xlCells4)
        MRComObject(xlCells3)
        MRComObject(xlCells2)
        MRComObject(xlCells1)
        MRComObject(xlSheet)
    Next
    
    
    
    以下説明。
    
    
    
    >     xlCells = xlSheet.Cells(1, i)
    ここがまず最初の修正箇所。
    
    上記ではこれを
        xlCells1 = xlSheet.Cells
        xlCells2 = xlCells1(1, i)
    という二段階の処理に分けています。Workbooks や Worksheets と同じですね。
    
    Cells プロパティの定義は、引数 2 つを伴った
     Public Property Cells(rowIndex As Integer, colIndex As Integer) As Excel.Range
    ではなく、引数を持たない
     Public Property Cells() As Excel.Range
    な定義であることに注意してください。
    
    
    > →  xlRange = xlSheet.Range("A1", xlCells)
    
    書き方としては問題無いのですが、上記のように、
    「COM オブジェクトを引数に渡すメソッドやプロパティ」を呼び出す処理では、
    引数に渡された COM オブジェクト(つまり xlCells2) の参照カウントが
    意図せず増加してしまうケースが稀にあります。
    (特に、Object 型を通じてレイトバインドしている場合に発生しやすいです)
    
    意図せず増加してしまった参照カウントは、Marshal.ReleaseComObject を
    一回呼び出すだけでは十分に解放しきれません。このようなケースでは、
    Marshal.FinalReleaseComObject メソッドを使って強制解放することができます。
    
    ちなみに FinalReleaseComObject を持たない .NET Framework 1.x 世代の場合には、
    今回提示頂いたソースのように、ReleaseComObject の戻り値が 0 になるまで
    解放処理を繰り返すことで代用できます。
    
    
    >    xlRange.EntireColumn.AutoFit()
    これは「.」が二回連なっているため、EntireColumn の解放が遅れる可能性があります。
    これも変数に受けて、キチンと解放するようにしましょう。

違反を報告
引用返信
■34609 / ResNo.2)  Re[2]: [VB.NET]Excelのプロセスが終了しない
□投稿者/ FireFairy 一般人(2回)-(2021/01/07(Thu) 08:24:17)
  • アイコン
    魔界の仮面弁士様
    ご教示ありがとうございました。
    
    修正案の通りにコードを反映したらプロセスが残らないようになりましたので解決いたしました。
    そして教えいただいたサイトも参考にさせていただきます
    
    またお世話になることがあるかもしれませんが、その時は何卒よろしくお願いいたします。

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

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



■記事リスト / ▲上のスレッド
■34604 / 親記事)  C#をVBに変換した際の強制的な参照渡し
□投稿者/ tomichan 一般人(1回)-(2021/01/01(Fri) 16:36:16)
  • アイコン環境/言語:[Win10,VB.NET,.NET4.0] 
    分類:[.NET] 

    お世話になります

    ポータブルデバイス(WPD)を利用して、デバイスの一覧と MTPファイルの読込と書込みをしたくて、
    いろいろ探し回った結果、こちらのC#コードを参考にVBに書き起こしています。
    (https://www.ipentec.com/document/csharp-wpd-programming-overview)

    そこでC#のコードは
    private void Form1_Load(object sender, EventArgs e)
    {
    deviceManager = new PortableDeviceManager();
    deviceManager.RefreshDeviceList();
    uint count = 0;
    deviceManager.GetDevices(null, ref count); ← この部分
    textBox1.Text += "WPDデバイスの数:" + count.ToString() + "\r\n";
    ...............
    となっているものをVBの変換コードとして
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    deviceManager = New PortableDeviceManager
    deviceManager.RefreshDeviceList()
    Dim count As UInteger = 0
    deviceManager.GetPrivateDevices(Nothing, count)
    TextBox1.Text += "WPDデバイスの数:" + count.ToString() + vbCrLf
    .............
    と記述しました。

    C#でデバックしたところ、問題なくcountが取得できるのですが、VBでは取得することができません。
    C#で作ればよいのですが、既存のVBで起こしたプログラムを改良したく、かつVBが好きなので、
    何とかしようといろいろ探し回って、原因は引数の参照渡しに関して、C#のref、outのように
    「VB側で引数を明示的に参照渡しにすることで解決できるのでは」
    と思い苦悶していましたが自己解決できずに投稿させていただきました。

    当方の環境は 
    OSはWin10 Home64bit、VS2019(Version 16.8.3)、フレームワークは.net4.0、OptionStrictはOffの状態です。

    最終的にやりたいことは、スマホやデジカメ等のPCに接続したポータブルデバイスからのファイルのやり取りです。
    他の方法を含め、皆様のお力をお借りしたく、ご指導いただけますよう、よろしくお願いします。


違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34605 / ResNo.1)  Re[1]: C#をVBに変換した際の強制的な参照渡し
□投稿者/ Hongliang 大御所(593回)-(2021/01/01(Fri) 17:41:26)
  • アイコン> 何とかしようといろいろ探し回って、原因は引数の参照渡しに関して、C#のref、outのように
    > 「VB側で引数を明示的に参照渡しにすることで解決できるのでは」
    > と思い苦悶していましたが自己解決できずに投稿させていただきました。

    そんな方法はない(はず)ですし、そうする意味もなく参照渡しされます。
    C#で呼び出しにrefが必要ということは、そのメソッド引数のシグネチャはVBからはByRefに見えるので。

    > deviceManager.GetDevices(null, ref count); ← この部分
    > deviceManager.GetPrivateDevices(Nothing, count)

    呼び出してるメソッドが違うように見えますが?
違反を報告
引用返信
■34606 / ResNo.2)  Re[2]: C#をVBに変換した際の強制的な参照渡し
□投稿者/ tomichan 一般人(2回)-(2021/01/01(Fri) 18:24:19)
  • アイコンNo34605に返信(Hongliangさんの記事)
    >>何とかしようといろいろ探し回って、原因は引数の参照渡しに関して、C#のref、outのように
    >>「VB側で引数を明示的に参照渡しにすることで解決できるのでは」
    >>と思い苦悶していましたが自己解決できずに投稿させていただきました。
    >
    > そんな方法はない(はず)ですし、そうする意味もなく参照渡しされます。
    > C#で呼び出しにrefが必要ということは、そのメソッド引数のシグネチャはVBからはByRefに見えるので。
    >
    >> deviceManager.GetDevices(null, ref count); ← この部分
    >> deviceManager.GetPrivateDevices(Nothing, count)
    >
    > 呼び出してるメソッドが違うように見えますが?

    Hongliangさん ありがとうございました。
    私の根本的な間違えでした。
    C#の翻訳だけに気を取られていて、一番大事な確認作業を怠り、
    一人で翻訳完了したと思い込んで苦悶を続けていました。
    ご指摘通り、メゾットの問題でした。
    今回はご指摘ありがとうございます。
解決み!
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -

2021/02/28(Sun) 17:40:48 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする