VB6.0でSHCreateDirectoryExの確認メッセージを非表示する方法

このQ&Aのポイント
  • VB6.0でプログラムを作成し、SHCreateDirectoryExを使用してフォルダを作成しています。しかし、フォルダが見つからない場合に「フォルダーが作成できません」というメッセージが表示されます。このメッセージを非表示にする方法を教えてください。
  • VB6.0でプログラムを作成し、SHCreateDirectoryExを使用してフォルダを作成しています。しかし、フォルダが見つからない場合にエラーメッセージが表示されます。このメッセージを非表示にする方法を教えてください。
  • VB6.0でプログラムを作成し、SHCreateDirectoryExを使用してフォルダを作成しています。しかし、フォルダが見つからない場合に「指定したフォルダが見つかりません」というメッセージが表示されます。このメッセージを非表示にする方法を教えてください。
回答を見る
  • ベストアンサー

VB6.0 SHCreateDirectoryExの確認メッセージを非

VB6.0 SHCreateDirectoryExの確認メッセージを非表示する方法について VB6.0でプログラムを作成しています。 プログラムの動作は以下の通りです。    (1)ユーザーが指定した、ネットワーク上の任意のサーバー内のフォルダのフルパスを取得  (2)(1)のフォルダ以下に、任意のフォルダ(Excelで作成したリストより取得)を作成 SHCreateDirectoryExを使ってフォルダ作成を行っていますが、 「フォルダー'フォルダ名'が作成できません。指定したフォルダがみつかりません。」 というメッセージが出る場合があります。 On Error GoToで対応しようとしましたが、エラーメッセージではない為、 スルーされてしまい、メッセージが表示されてしまいました。 「OK」をクリックすると問題なく次の処理へ移りますが、夜間に大量のフォルダ作成を 行いたいので、このメッセージを非表示にする(無視して次の処理に移る)方法を 教えて頂けないでしょうか? 以上、よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

>SHCreateDirectoryEx これでエラーを出さなくする方法はわかりませんし、使ったこともありません。 ただ階層の深いフォルダを作成したいのであれば MakeSureDirectoryPathExists を利用するってのはダメですか? Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal DirPath As String) As Long[boolでも可] 引数もフォルダパスだけです。 どうしてもSHCreateDirectoryExでなければならない理由があるのであれば、読み飛ばしてください。

rirumu99
質問者

お礼

ご回答ありがとうございました。 教えて頂いた方法で確認メッセージを出さずに処理を進めることができました。 特にSHCreateDirectoryExを使う理由はなく、フォルダ作成を調べた際に 最初に出てきただけで使用していました。 しっかり調べて目的にあったものを使用しないといけないと反省しました。 本当にありがとうございました。

関連するQ&A

  • VB.net SOAPメッセージの取得方法

    Webサービスを利用したプログラムを試行錯誤しながら作っています(なかなか進みません)。 以下の件、ご教授ください。 VB,netにて、Web参照を指定して作成したクライアント・アプリケーションで、SOAPの送受信をデバッグするために、Webメソッドを呼出したときのSOAPメッセージ(リクエストとレスポンス)のXMLテキストを画面に表示したいのですが、その取得方法がわからず困っています。 SOAPメッセージ(リクエストとレスポンス)のXMLテキストを取得する方法をご教授ください。 よろしくお願い致します。

  • VB2005 フォームロード時にメッセージ表示

    VB素人です。 VB2005で、あるフォームクラスを起動した際の フォームロード処理で、エラー判定処理(DBデータを取得して判定)を 行っています。 エラーと判定された場合、メッセージBOXを表示するのですが、 フォームが表示される前に、メッセージのみが表示されてしまいます。 フォームが表示→メッセージが表示(同時も可)にするには どのようにすれば良いのでしょうか? アドバイスをお願いします。

  • vbからストアドプロシージャ内発生のエラーメッセージ取得

    タイトル通りの質問です。例えば、重複キーエラー時等はクエリアナライザを使用してストアドプロシージャを実行した場合に、「PRIMARY KEY 違反、制約 'PK_xxx': オブジェクト 'tbl_xxx' には重複したキーは挿入できません。」という様なメッセージが返されます。このメッセージをVB側に返したいのですが、方法がわかりません。質問は以下の3つです。 1)上記の様なエラーの場合は、vb側でon error goto&errorsコレクションでエラーハンドリングは出来ないのでしょうか?(現状トラップしてくれません。) 2)出来ないのであれば、ストアド内でエラーメッセージを取得して、outputパラメータで返却するしかないのかなと思っております。 3)なぜか、create tableで既にあるテーブルを指定してわざとエラーを発生させた直後に@@errorでvb側にリターン値を返却してもempty値として返されます。なぜでしょう。 以上、3点について教えて下さい。(何れかでも構いません)よろしくお願いします。 環境:win2000,sqlserver2000

  • VB2005で自分自身のPathの取得

    VB2005初心者です。宜しくお願いします。 プログラムを作って任意のフォルダーにそのプログラムがインストールされたとします。自分が置かれているPathを取得する方法を教えて頂けないでしょうか?

  • VBスクリプトで「お待ち下さい」メッセージ表示は可能?

    VBスクリプトを用いて、フォルダ名の一括変更などの簡易的なソフトをつくっています。 時間がかかる処理をしている最中に、「処理中です お待ち下さい」というようなメッセージを表示させ、処理終了後に「完了しました」という終了メッセージへ切り替えて表示させることは可能なのでしょうか? MsgBox関数でできるかなと思って調べて見ましたが、できないようなので、質問させていただきました。 よろしくお願いいたします。

  • vb プログラムの起動と例外処理

    はじめまして プログラムの実行と例外処理に関して質問させていただきます。 現在,visual basic2005でプログラム(A)からvbで作成した別のプログラム(B)に引数を指定してから起動し,別のプログラム(B)が例外処理に関する方法を調べています。 プログラム(B)起動時に例外処理を用い,以下のようなエラーメッセージを表示させるにはどういった処理を構成すればよいでしょうか。 パス名が設定されていない場合,”ファイルのパス名が見つかりませんでした” 引数が指定されていない場合,”引数が指定されておりません” 原因が特定できないエラーが発生した場合,”原因不明のエラーが発生しました” プログラムの実行にはShellメソッドとSystem.Diagnostics.ProcessクラスのStartメソッドがあるという事がわかりましたが,上記2つのメソッドが自分の意図したい操作に適しているかまでは理解におよんでおりません。 まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

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

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

  • VBでのエラー処理(On Error)

    VBで以下のようなプログラムを書いています。 sub On Error goto Err 処理1 Err: 処理2 End sub 処理1でエラーが発生した場合、Err:の処理に入ってくるのですが、もしErr:の中の処理2でもエラーが発生した場合、どうすればよいのでしょうか? Err:の中でもエラー処理ができるのでしょうか、それともロジックで回避しなければならないのでしょうか? ご存知の方がいらっしゃいましたら宜しくお願いします。

  • VB40032.DLLについて

    あるプログラムを実行するにあたり下記のような文が掲載してありました。 「このプログラムを実行するためにはVB40032.DLL(ビジュアルベーシックのダイナミックリンクライブラリー)が必要です。 あらかじめインストールされているパソコンではその場で実行できます。 実行してみて「DLLが見つかりません」等のエラーが出た場合は以下の操作を行ってください。 VB40032.DLLをダウンロードし¥WINDOWS\system32フォルダへ(このフォルダーがない場合は¥WINDOWS\systemフォルダ)に保存します。」 実際に¥WINDOWS\system32フォルダに保存しようとしたら「この場所に保存するアクセス許可がありません。管理者に連絡してアクセス許可を取得してください。」というメッセージになりました。ちなみにOSはWindows7です。 どうすればよろしいでしょうか?

  • VB6.0のメモリリークについて

    こんにちは、当方、VB6.0を使用してアプリケーションを作成していますが、メモリリークが発生して困っています。 以下、プログラムのイメージになります。 ファイルを常時監視するメソッド(chkfile)の無限ループ内で、ファイルを取得するメソッド(getfile)を使用して、 ファイルを取得→変換する処理を行っています。 ファイルの取得方法は2パターンあり、1つ目は、任意の間隔(分単位)で機器と通信して取得する方法、 2つ目は共有フォルダを設定して置かれたファイルを取得する方法です。 現象としましては、数時間起動させておくとメモリを1GB程度使用してフリーズしてしまいます。 (エンドユーザーのPCで発生しており、当方の開発環境では確認しておりません。) 上記を踏まえ質問があります。 (1)自分でソースを追いかけ、調査を行ったところ、ファイルを取得するメソッド(getfile)内で、Scripting.FileSystemObjectを使用して おり、以下の様に毎回インスタンスを生成しています。ですが、処理が終わった後、インスタンスの解放処理を行っていません。  スコープが外れた場合、参照は自動的に消滅すると思っていますが認識は合っていますでしょうか?  Dim fso As New Scripting.FileSystemObject (2)「VB6.0 メモリリーク」のキーワードで検索したところ、UBoundについての記述を見つけることができました。  Microsoftサポート 文書番号: 197190(http://support.microsoft.com/kb/197190/ja)  ファイルを取得するメソッド(getfile)内で、UBoundを使用していますが、上記URLとは異なる使用方法です。 上記URLでの使用方法 UBoundのパラメータに配列の戻り値を指定する。  作成したプログラムでの使用方法 指定したフォルダ内のファイルを取得するメソッド(getinfile)でbyrefキーワードに配列を指定して、その配列の要素数をforループの  上限数に使用しています。 使用方法に問題はないと思うのですが、もしかして、UBoundを使用するのがまずいのでしょうか。 当然、予期せぬデータ等に対する不具合も疑いましたが、現象が発生した状態の変換元ファイルを使用して動作させたところ 問題はありませんでしたのでメモリリークを疑っている状態です。

専門家に質問してみよう