C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■4067  Re[4]: アプリケーション間の値渡しについて
□投稿者/ 鈴乃 -(2006/05/30(Tue) 15:50:59)

    分類:[VB.NET] 

    No4060に返信(名無しぃシャープさんの記事)
    > ■No4059に返信(鈴乃さんの記事)
    >> System.Diagnostics.Process.Start("C:\form2.exe","渡す値1" & "渡す値2")
    >
    > これじゃ、値1と値2で分断されないんじゃないかな?

    度々申し訳ありません。
    ご指摘の個所にコピペミスがありました。
    正しくは下記のようになります。

    (省略).Start("C:\form2.exe","渡す値1" & " " & "渡す値2")
記事No.4054 のレス / END /過去ログ4より / 関連記事表示
削除チェック/

■55141  Re[2]: 印刷結果について
□投稿者/ ごう -(2010/11/18(Thu) 10:04:23)
    2010/11/18(Thu) 10:05:25 編集(投稿者)

    補足です。

    一応、WMI(Windows Management Instrumentation)を使えば、Windows側からプリンタの情報を取得することは出来ますが、
    ジャムってるとかまでは正確に把握することは難しいです。
    (Windows側からは印刷命令をプリンタに送信できた!ということまでは把握しているが、
    その後プリンタ側で何が起きているかまでは把握してないため。
    仕組みは「印刷ジョブ」や「スプーラ」などのキーワードで調べてみてください)
    電源が入っていないことぐらいは認識できると思うのですが。(大昔やったのですが、あまり覚えてなくてすみません)

    http://dobon.net/vb/dotnet/graphics/printerport.html

    厳密に印刷できた/できなかったを判別したければプリンタが返すメッセージを頼りにするしかないかなと思います。
    これは、プリンタのマニュアルを参考にするか、メーカーに確認するかしないとわかりません。
    プリンタ側でそういうメッセージを返す機能がないとなれば、厳密な判別はできないんじゃないかな。


    似たような質問がありましたので参考までに
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28234&forum=7



記事No.55139 のレス /過去ログ92より / 関連記事表示
削除チェック/

■59232  Re[2]: データベース取得で例外発生
□投稿者/ あるしす -(2011/05/19(Thu) 16:27:22)
    No59219 (くり太郎 さん) に返信

    くり太郎さん、ありがとうございます。

    > 試しに
    >
    > myDataAdapter.Fill(myDataSet,"RoraType");
    >
    > のところなんですけど、データを受け取る側のオブジェクトのタイプを DataSet ではなく DataTable 系のものにしても同じ結果になりますか?

    受け取るオブジェクトをDataTableで試してみましたが、同じ例外が発生しました。
    因みに、変更した箇所は
        try
        {
          OleDbCommand myAccessCommand = new System.Data.OleDb.OleDbCommand(strAccessSelect, myAccessConn);
          OleDbDataAdapter myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(myAccessCommand);
    //      myDataAdapter.Fill(myDataSet,"RoraType");
          DataTable dbTbl = new DataTable();
          myDataAdpter.Fill(dbTbl);
        }
        catch (Exception ex)
        {
          Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
          return;
        }
    としました。

    それと、myDataAdpter.Fill()の箇所をmyAccessConn.Open()に変えて見ましたが、やはり結果は同じでした。
    データを受け取る側の問題では無い様な気がします。


記事No.59187 のレス /過去ログ99より / 関連記事表示
削除チェック/

■90042  FolderBrowserDialogでネットワークのみ選択
□投稿者/ yu -(2019/02/01(Fri) 06:41:58)

    分類:[.NET 全般] 

    開発環境:Visual Studio 2012 使用言語:C#

    FolderBrowserDialogでネットワークのみを選択できるようにしたいです。

    デフォルトのパス指定だと初期値をselectedPathで設定できるかと思うのですが、
    ネットワークのみの選択を、パスもしくはプロパティにて指定することは可能でしょうか。

    よろしくお願いいたします。
親記事 /過去ログ155より / 関連記事表示
削除チェック/

■90044  Re[1]: FolderBrowserDialogでネットワークのみ選択
□投稿者/ 魔界の仮面弁士 -(2019/02/01(Fri) 10:42:20)
    No90042 (yu さん) に返信
    > FolderBrowserDialogでネットワークのみを選択できるようにしたいです。

    そういう機能は無いと思います。

    無理矢理な方法として、

     typeof(FolderBrowserDialog)
      .GetField("rootFolder", BindingFlags.Instance | BindingFlags.NonPublic)
      .SetValue(folderBrowserDialog1, 0x12);

    とすれば、「デスクトップ\ネットワーク」をルート階層にできますが、
    その下の階層が展開される環境でしか使えなさそう。
記事No.90042 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90046  Re[2]: FolderBrowserDialogでネットワークのみ選択
□投稿者/ とっちゃん -(2019/02/01(Fri) 11:02:45)
    No90042 (yu さん) に返信
    > 開発環境:Visual Studio 2012 使用言語:C#
    >
    > FolderBrowserDialogでネットワークのみを選択できるようにしたいです。
    >
    > デフォルトのパス指定だと初期値をselectedPathで設定できるかと思うのですが、
    > ネットワークのみの選択を、パスもしくはプロパティにて指定することは可能でしょうか。
    >

    var dlg = new FolderBrowserDialog();
    dlg.RootFolder = Environment.SpecialFolder.MyComputer;
    dlg.ShowDialog();

    こんな感じで設定すると、Windows 10 なら PC に限定してリストアップできるのですが、
    RootFolder の選択肢の SpecialFolder に "ネットワーク" を意味する識別子を用意していないので
    .NET Framework の FolderBrowseDialog では指定ができません。

    一応。。。大元のAPIの SHBrowseForFolder を直接利用すれば指定できますが、
    あの構造体宣言とかすごく面倒なのであまりお勧めはできません。

    それと、ネットワークドライブを割り当てている場合見れないので
    実際のところは選択後に意図したフォルダを選択されたか?とチェックするほうがいいと思います。


    あとは、IOpenFileDialog を使ってフォルダ選択するというのもあります。
    こっちも、ネットワークドライブとかあると絞り込めないので結果的には変わりませんが。。。
記事No.90042 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90062  Re[3]: FolderBrowserDialogでネットワークのみ選択
□投稿者/ yu -(2019/02/02(Sat) 01:22:08)
    とっちゃん 様

    ご回答ありがとうございます。

    C#の世界だけで考え過ぎていました、なるほど…。
    しかし初心者の私には、SHBrowseForFolder を直接利用するのは難しそうでした。

    仰る通り、IOpenFileDialog を使ってフォルダ選択をすると絞り込めないのですが、
    やはり、選択後に意図したフォルダを選択されたかのチェックで進めていこうかと思います。

    貴重なご意見、感謝いたします。


    No90046 (とっちゃん さん) に返信
    > ■No90042 (yu さん) に返信
    >>開発環境:Visual Studio 2012 使用言語:C#
    >>
    >>FolderBrowserDialogでネットワークのみを選択できるようにしたいです。
    >>
    >>デフォルトのパス指定だと初期値をselectedPathで設定できるかと思うのですが、
    >>ネットワークのみの選択を、パスもしくはプロパティにて指定することは可能でしょうか。
    >>
    >
    > var dlg = new FolderBrowserDialog();
    > dlg.RootFolder = Environment.SpecialFolder.MyComputer;
    > dlg.ShowDialog();
    >
    > こんな感じで設定すると、Windows 10 なら PC に限定してリストアップできるのですが、
    > RootFolder の選択肢の SpecialFolder に "ネットワーク" を意味する識別子を用意していないので
    > .NET Framework の FolderBrowseDialog では指定ができません。
    >
    > 一応。。。大元のAPIの SHBrowseForFolder を直接利用すれば指定できますが、
    > あの構造体宣言とかすごく面倒なのであまりお勧めはできません。
    >
    > それと、ネットワークドライブを割り当てている場合見れないので
    > 実際のところは選択後に意図したフォルダを選択されたか?とチェックするほうがいいと思います。
    >
    >
    > あとは、IOpenFileDialog を使ってフォルダ選択するというのもあります。
    > こっちも、ネットワークドライブとかあると絞り込めないので結果的には変わりませんが。。。
    >
記事No.90042 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90047  Re[2]: FolderBrowserDialogでネットワークのみ選択
□投稿者/ yu -(2019/02/01(Fri) 12:15:08)
    魔界の仮面弁士 様

    回答ありがとうございます。

    やはりネットワークの階層を展開できる環境ではなかったため、表示できませんでした。

    無理矢理な方法、と仰いましたが、なるほど!と思わされる方法でした。
    よろしければ、"0x12"がネットワークの番号だとどのように調べたのか教えていただけませんか?
    とても気になってしまいました…。


    No90044 (魔界の仮面弁士 さん) に返信
    > ■No90042 (yu さん) に返信
    >>FolderBrowserDialogでネットワークのみを選択できるようにしたいです。
    >
    > そういう機能は無いと思います。
    >
    > 無理矢理な方法として、
    >
    >  typeof(FolderBrowserDialog)
    >   .GetField("rootFolder", BindingFlags.Instance | BindingFlags.NonPublic)
    >   .SetValue(folderBrowserDialog1, 0x12);
    >
    > とすれば、「デスクトップ\ネットワーク」をルート階層にできますが、
    > その下の階層が展開される環境でしか使えなさそう。
記事No.90042 のレス / END /過去ログ155より / 関連記事表示
削除チェック/

■90057  Re[3]: FolderBrowserDialogでネットワークのみ選択
□投稿者/ 魔界の仮面弁士 -(2019/02/01(Fri) 16:05:04)
    2019/02/02(Sat) 10:15:12 編集(投稿者)

    # 解決済みマークはつけたままにしておきます。

    No90047 (yu さん) に返信
    > 無理矢理な方法、と仰いましたが、なるほど!と思わされる方法でした。

    No90044 はリフレクションで、Backing-Field 変数に強制代入していますが、
    これは要するに、下記に相当する処理であることを意味します。

     const int CSIDL_NETWORK = 0x0012
     folderBrowserDialog1.RootFolder = (System.Environment.SpecialFolder)CSIDL_NETWORK;


    しかし、RootFolder プロパティの setter は下記の実装になっており、そのままだと例外で失敗するため、
    それを回避するため、rootFolder メンバーへの直接代入で回避していたというわけで。

     if (!Enum.IsDefined(typeof(System.Environment.SpecialFolder), value))
     {
      throw new InvalidEnumArgumentException("value", (int)value, typeof(System.Environment.SpecialFolder));
     }
     rootFolder = value;


    > よろしければ、"0x12"がネットワークの番号だとどのように調べたのか教えていただけませんか?

    0x12 は、"ネットワーク" フォルダーを意味する識別子です。
    Windows SDK 上では CSIDL_NETWORK 定数として定義されています。(see: ShFolder.h , KnownFolders.h)


    =======================
    同じ処理を COM 版で書くとこんな感じ。

    Shell32.dll を参照設定した上で、
    ShellSpecialFolderConstants 列挙型の ssfNETWORK を利用できます。


    const int BIF_NEWDIALOGSTYLE = 0x40;
    const int BIF_NONEWFOLDERBUTTON = 0x200;

    int Hwnd = (int)(long)Handle;
    string Title = "フォルダを選択して下さい";
    int Options = BIF_NEWDIALOGSTYLE | BIF_NONEWFOLDERBUTTON;
    object RootFolder = Shell32.ShellSpecialFolderConstants.ssfNETWORK;

    Shell32.Shell sh = new Shell32.Shell();
    Shell32.Folder fo = sh.BrowseForFolder(Hwnd, Title, Options, RootFolder);

    string selectedFolder = null;
    if ( fo != null)
    {
      Shell32.FolderItems fis = fo.Items();
      Shell32.FolderItem fi = fis.Item(Type.Missing);
      selectedFolder = fi.Path;
      Marshal.ReleaseComObject(fi);
      Marshal.ReleaseComObject(fis);
      Marshal.ReleaseComObject(fis);
      Marshal.ReleaseComObject(fo);
    }
    Marshal.ReleaseComObject(sh);

    return selectedFolder;

    =======================
    参照設定したくなければ、レイトバインドで。

    dynamic sh = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));
    dynamic fo = sh.BrowseForFolder((int)(long) Handle, "フォルダを選択して下さい", 0x240, 0x12);
    string selectedFolder = null;
    if ( fo != null)
    {
      dynamic fis = fo.Items();
      dynamic fi = fis.Item();
      selectedFolder = fi.Path;
      Marshal.ReleaseComObject(fi);
      Marshal.ReleaseComObject(fo);
    }
    Marshal.ReleaseComObject(sh);
    return selectedFolder;


    =======================
    上記 COM の BrowseForFolder メソッドや
    .NET の FolderBrowserDialog クラスというものは、
    SHBrowseForFolder という API をカプセル化したものです。
    https://docs.microsoft.com/en-us/windows/desktop/api/shlobj_core/nf-shlobj_core-shbrowseforfolderw
    https://docs.microsoft.com/en-us/windows/desktop/api/shlobj_core/nf-shlobj_core-shbrowseforfoldera
    https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/FolderBrowserDialog.cs,94edc2b722c18d1f
記事No.90042 のレス / END /過去ログ155より / 関連記事表示
削除チェック/

■90066  Re[4]: FolderBrowserDialogでネットワークのみ選択
□投稿者/ yu -(2019/02/04(Mon) 02:54:26)
    2019/02/04(Mon) 02:57:08 編集(投稿者)
    魔界の仮面弁士 様

    すごい…なるほど。
    設定された識別子以外で設定するのは、特にC#ではやはり難しいですね。

    実際にWindows SDK のコードで確認するには開発ツールのダウンロードが必要なようですね。
    今の開発環境だとすぐには確認できず残念です。

    初心者ながらに色々と調べてみましたが、知識不足でせっかく教えていただいた内容を
    全ては理解しきれておらず大変申し訳ないですが、非常に勉強になりました。

    ご回答いただきまして本当にありがとうございます。


    No90057 (魔界の仮面弁士 さん) に返信
    > 2019/02/02(Sat) 10:15:12 編集(投稿者)
    >
    > # 解決済みマークはつけたままにしておきます。
    >
    > ■No90047 (yu さん) に返信
    >>無理矢理な方法、と仰いましたが、なるほど!と思わされる方法でした。
    >
    > No90044 はリフレクションで、Backing-Field 変数に強制代入していますが、
    > これは要するに、下記に相当する処理であることを意味します。
    >
    >  const int CSIDL_NETWORK = 0x0012
    >  folderBrowserDialog1.RootFolder = (System.Environment.SpecialFolder)CSIDL_NETWORK;
    >
    >
    > しかし、RootFolder プロパティの setter は下記の実装になっており、そのままだと例外で失敗するため、
    > それを回避するため、rootFolder メンバーへの直接代入で回避していたというわけで。
    >
    >  if (!Enum.IsDefined(typeof(System.Environment.SpecialFolder), value))
    >  {
    >   throw new InvalidEnumArgumentException("value", (int)value, typeof(System.Environment.SpecialFolder));
    >  }
    >  rootFolder = value;
    >
    >
    >>よろしければ、"0x12"がネットワークの番号だとどのように調べたのか教えていただけませんか?
    >
    > 0x12 は、"ネットワーク" フォルダーを意味する識別子です。
    > Windows SDK 上では CSIDL_NETWORK 定数として定義されています。(see: ShFolder.h , KnownFolders.h)
    >
    >
    > =======================
    > 同じ処理を COM 版で書くとこんな感じ。
    >
    > Shell32.dll を参照設定した上で、
    > ShellSpecialFolderConstants 列挙型の ssfNETWORK を利用できます。
    >
    >
    > const int BIF_NEWDIALOGSTYLE = 0x40;
    > const int BIF_NONEWFOLDERBUTTON = 0x200;
    >
    > int Hwnd = (int)(long)Handle;
    > string Title = "フォルダを選択して下さい";
    > int Options = BIF_NEWDIALOGSTYLE | BIF_NONEWFOLDERBUTTON;
    > object RootFolder = Shell32.ShellSpecialFolderConstants.ssfNETWORK;
    >
    > Shell32.Shell sh = new Shell32.Shell();
    > Shell32.Folder fo = sh.BrowseForFolder(Hwnd, Title, Options, RootFolder);
    >
    > string selectedFolder = null;
    > if ( fo != null)
    > {
    >   Shell32.FolderItems fis = fo.Items();
    >   Shell32.FolderItem fi = fis.Item(Type.Missing);
    >   selectedFolder = fi.Path;
    >   Marshal.ReleaseComObject(fi);
    >   Marshal.ReleaseComObject(fis);
    >   Marshal.ReleaseComObject(fis);
    >   Marshal.ReleaseComObject(fo);
    > }
    > Marshal.ReleaseComObject(sh);
    >
    > return selectedFolder;
    >
    > =======================
    > 参照設定したくなければ、レイトバインドで。
    >
    > dynamic sh = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));
    > dynamic fo = sh.BrowseForFolder((int)(long) Handle, "フォルダを選択して下さい", 0x240, 0x12);
    > string selectedFolder = null;
    > if ( fo != null)
    > {
    >   dynamic fis = fo.Items();
    >   dynamic fi = fis.Item();
    >   selectedFolder = fi.Path;
    >   Marshal.ReleaseComObject(fi);
    >   Marshal.ReleaseComObject(fo);
    > }
    > Marshal.ReleaseComObject(sh);
    > return selectedFolder;
    >
    >
    > =======================
    > 上記 COM の BrowseForFolder メソッドや
    > .NET の FolderBrowserDialog クラスというものは、
    > SHBrowseForFolder という API をカプセル化したものです。
    > https://docs.microsoft.com/en-us/windows/desktop/api/shlobj_core/nf-shlobj_core-shbrowseforfolderw
    > https://docs.microsoft.com/en-us/windows/desktop/api/shlobj_core/nf-shlobj_core-shbrowseforfoldera
    > https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/FolderBrowserDialog.cs,94edc2b722c18d1f
記事No.90042 のレス / END /過去ログ155より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -