vb6からのネットワーク接続について

このQ&Aのポイント
  • vb6.0で外部プログラムを起動し、ネットワークドライブを切断する際に表示されるDOS窓の対策方法は?
  • vb6.0のShellexecute関数とShell関数を使用してネットワーク接続を行う際に発生するDOS窓の表示を抑制する方法について教えてください。
  • vb6.0で外部プログラムを起動し、ネットワークドライブの接続を解除する際に表示されるDOS窓を非表示にする方法についてアドバイスをお願いします。
回答を見る
  • ベストアンサー

vb6からのネットワーク接続について

vb6.0について質問です。 Shellexecute関数を使って外部プログラムを起動してすぐに接続しているネットワークドライブをShell関数を使って切断しようとすると 以下のようなメッセージがDOS窓で表示されてしまいます。 「Z:との接続にオープン ファイルや未実行のディレクトリ検索があります。 切断を続行し、強制的に閉じますか?(Y/N)」 Nにすると反応なしになりフリーズしてしまい、Yにすると正常に切断されます。 Shell関数は、 Shell "net use z: /D" このDOS窓が表示されないようにしたいのですがどのような対策が考えられますか? 外部プログラムを起動して5秒ほど経ってからネットワークドライブを切断するとDOS窓が表示されないようですので閉じる前にSleepを使って 対応しています。レスポンスを早くしたいので他の対策をさがしています。 ネットワーク系に詳しい方お知恵をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

WNetAddConnection2Aを使用します。 Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long Private Type NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long pLocalName As String pRemoteName As String pComment As Long pProvider As Long End Type Private Const RESOURCE_CONNECTED = &H1 Private Const RESOURCETYPE_ANY = &H0 Private Const RESOURCEDISPLAYTYPE_DOMAIN = &H1 Private Const CONNECT_UPDATE_PROFILE = &H1 Private Sub Command1_Click() Dim typNetResource As NETRESOURCE Dim lngRet As Long Dim pass As String Dim user As String pass = vbNullString user = vbNullString REM Call Command2_Click With typNetResource .dwScope = RESOURCE_CONNECTED .dwType = RESOURCETYPE_ANY .dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN .pLocalName = "Z:" '空いている自ドライブ .pRemoteName = CStr(Text3.Text) End With lngRet = WNetAddConnection2(typNetResource, pass, user, CONNECT_UPDATE_PROFILE) If lngRet = 0 Then MsgBox "接続できました。" Else MsgBox "接続できませんでした。" End If End Sub Private Sub Command2_Click() Dim lngRet As Long lngRet = WNetCancelConnection2("Z:", CONNECT_UPDATE_PROFILE, True) If lngRet = 0 Then MsgBox "切断できました。" Else MsgBox "切断できませんでした。" End If End Sub

関連するQ&A

  • VB6.0でネットワークドライブの接続・切断

    VBから、ネットワークドライブにフォルダを作ろうとしたのですが、ネットワークドライブが割り当てられていない為、エラーが返ってきてしまします。 ネットワークドライブの割り当てを行うAPIは分かったのですが、それでは割り当てを要求するダイアログが表示されてしまいます。 ソフトを使用する人間の殆どがパソコンのことを殆ど分からない人ばかりなので、ネットワークドライブの割り当てと切断を自動的に行えるようにしたいと思っています。 そして、自動的に割り当てられたパスの先に任意のフォルダを作成するプログラムを作成したいのです。 ・ネットワークドライブの自動割当・切断方法 ・割り当てられたパスの取得方法 以上の二つが分かる方、お願い致します。 +++ 開発環境 +++ ・VB6.0 ・Windows2000

  • ネットワークドライブ接続が立ち上げごとに切れている

    「ネットワークドライブ接続」が立ち上げごとに切れていることが多い。 Y:¥にアクセスできません。 指定されたネットワーク名は利用できません   との表示で接続できない。 この原因はなぜでしょうか? 対策を教えて下さい 宜しくお願い致します。

  • win2k serverでログインせずにネットワークドライブへ接続したい

    あるプログラムをphpで作成しています。 そのプログラムはあることをするとcopy関数を使って別サーバに接続されているネットワークドライブ(Z:\)からネットワークドライブ(Y:\)へファイルのコピーを行います。 しかし、そのプログラムが入っているwin2k serverでログインせずに、クライアントからそのプログラムにアクセスして実行すると、エラーをはいてコピーを実行できません。 ちなみに、サーバでログオンしてからクライアントで実行するとうまくいきます。 サーバはセキュリティ上の問題で、普段はログオンしない状態です。 また、そのサーバはドメインに参加しており、ネットワークドライブに接続するにはユーザ名、パスワードは聞かれません。 サービスなどを使ってログインする前にプログラムがネットワークドライブへ接続可能にする方法とかありませんか? ご回答よろしくお願いします。

  • ネットワークドライブの切断が出来ません

    WindowsXP SP2 sambaの共有をネットワークドライブ(Z)に割当てまして、その後sambaを再構築(LINUXのインストールから)しました。 再構築後にネットワークドライブアイコン(Z)を右クリックから切断ををクリックしたのですが、「ネットワーク接続先が見つかりませんでした」と表示され切断されません。今度は、再構築したsambaの共有を同じZドライブに割当て、切断してみたのですが同じ状況です。 コマンドプロンプトでnet useを打込むと 新しい接続は記憶されます。 ステータス    ローカル名   リモート名     ネットワーク名 ------------------------------------------------- 切断              \\conname\IPC$ Micsoft Windows Network コマンドは正常に終了しました。 と表示されます。 レジストリのHKEY_CURRENT_USER\Networkは空白でした。 どうすれば切断出来るのでしょうか?

  • 「切断したネットワークドライブ」ができてしまう

    WinXPのpro SP2 を使用しています。 「Yドライブ」「Zドライブ」にネットワークドライブを割り当てています。 昨日から、PC起動し、数分後 「切断したネットワークドライブ」がT~Xまでずらぁーーと勝手に出来てしまって困っています。 切断しようにも、「ネットワーク接続が見つかりませんでした」とメッセージがでて消えません。 その出来たT~Xのドライブの中は、Yに割り当てたフォルダの内容が表示されています。 PCを再起動すると、一旦消えるのですが、また数分後復活してしまいます・・・。 そして、1時間経ったあたりからO~Sドライブが同じように勝手に出来てしまうんです。 ttp://dell-support.okwave.jp/qa1300939.html ↑ この質問と同じような現象なんですが、変化無しです。 再度割り当てしようにも、割り当ての設定画面(ダイアログ?)にはO~Xが居ない状態です・・・。 エクスプローラー(マイコンピュータ)には、存在し、中も見れる状態です。 ウィルススキャンも行いましたが、検出されませんでした。 どうにか、削除する方法はないでしょうか? よろしくお願いします。

  • VB6.0でフォルダのアクセス制限設定確認を自動化したい

    VB6.0で【Shell】関数を使用し【cacls】コマンドを実行してフォルダのアクセス制限設定を行おうとしています。 アクセス制限自体は設定できるのですが、その際に別のDosウィンドウが上がり、 「よろしいですか (Y/N)?」 のメッセージが表示されます。 どうにかしてこれを自動化したいのですが、方法が分かりません。 方法をご存知の方、教えていただけないでしょうか? よろしくお願いします。 Shell "cacls C:\TEST /G Administrators:F" OS:WindowsXP Pro ツール:VB6.0

  • 切断されたネットワークドライブの再接続

    WinXPの端末に接続し、共有化しているDVDドライブを Win2003の端末でネットワークドライブとして設定しています。 ただ、起動する順番がWin2003→XPの順の為、 Win2003のネットワークドライブには常に赤い×がついている状態です。 OpenやDir関数を使用する際、アクセスできずエラーとなってしまいます。 ・VBコマンドやAPI関数に、切断されたネットワークドライブに  再接続を行うようなものがあるのか? ・Win2003側に、ネットワークドライブの状態をリアルタイムに  取得できる設定があるのか? 回答お願い致します。

  • ネットワークフォルダが開かない

    御世話になります。 VB6.0で教えてください。 shell関数を使用して、フォルダを開く簡単なプログラムを作成したのですが、XP上では問題なく動くのに対し、vistaではエクスプローラーが起動するだけで、指定したフォルダを開いてくれません。 APIを使用する方法に変えてみたり、XP互換モードで起動したり、vista上でコンパイルしなおしたり、いろいろ試したのですが、だめでした。 一つ気になるのは、エクスプローラーが起動した時に、ネットワークドライブの接続が切れた表示になっていることです。試しに、手動でエクスプローラーを起動し、ネットワークの接続を改めて確認してから、やってみましたが、同じでした。 何か問題があるのでしょうか?

  • ネットワークドライブが勝手に割り当てられて、困っています

    最近、Windows 2000 Professional で、ネットワークドライブが勝手に割り当てられて困っています。 ログオンして最初は、C:, D: ローカルディスク、E: CD-ROM、W: ネットワークドライブ(自分で割り当てたの)になってるんですが、暫くすると自動的に「ネットワークドライブ」が増えていきます。自動的に作成されるネットワークドライブは「ネットワーク ドライブ(Z:)」などという名前になって、切断(D)しようとしても「×ネットワーク接続が見つかりませんでした」となります。Z: のアイコンはネットワークドライブに×が付いたのなんですが、この Z: は開く(O)ことができて、W: と同じトコロに繋がっています。 検索して「FindFast を削除する」というのを見つけましたが、FindFast はインストールされてないみたいです。

  • ネットワークドライブとは?

    WindowXPについて教えてください。 ネットワークドライブとは一体どういったものなのでしょうか。 通常のドライブとはどう違うのでしょうか。 また、右クリックした際にメニュー項目に表示される 「ネットワークドライブの割り当て」および 「ネットワークドライブの切断」とは どういったことをするメニューなのでしょうか。 ご返答よろしくお願いします。

専門家に質問してみよう