• ベストアンサー

こんなのってできますか?

Visual Basic初心者です。 例えばCドライブにVBというフォルダがあり、そこにテキストファイルか何かでパスワードを設けておいて、そのファイルがないと実行ファイルが起動せず、フォームが表示しない(できればエラーメッセージを表示するといったものはできますか? できれば、簡単なプログラムを書き込んでいただけるとうれしいです。 よろしくお願いします。

  • d-910
  • お礼率14% (6/41)

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

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

'FileSystemObject (FSO) の新しいインスタンスを生成する Dim cFso As FileSystemObject Set cFso = New FileSystemObject 'ファイルが存在しているかどうか確認する If cFso.FileExists("C:\Key.txt") Then '使用可能なファイル番号を取得する Dim iFileNumber As Integer iFileNumber = FileSystem.FreeFile() 'ファイルを開く Open "C:\Key.txt" For Input As #iFileNumber 'ファイルを 1 行ずつ読み込む Do While (Not FileSystem.EOF(iFileNumber)) 'ファイルを 1 行ずつ読み込む Dim stBuffer As String Line Input #iFileNumber, stBuffer '読み込んだものを比較する If stBuffer <> "123" Then '不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing 'ファイルを閉じる (正しくは オブジェクトの破棄を保証する を参照) Close #iFileNumber Call MsgBox("パスワードが一致しません。") End Else '1行のみチェックする場合はここで処理を抜ける End If Loop 'ファイルを閉じる (正しくは オブジェクトの破棄を保証する を参照) Close #iFileNumber Else '不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing Call MsgBox("設定ファイルは存在しません。") End End If ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing ------------------------------------------------------------------ サンプルコードです。 参考サイト内のものを少し変えてコードしただけです。 どの時点で何がしたいのかを考えてやらなければ、問題は常に発生してきます。 考える力と調べる力を身につけてください。

その他の回答 (3)

回答No.3

VB.NETなのかVB6以前なのか、環境の提示をお願いします。

d-910
質問者

補足

Visual Basic 6.0です.よろしくお願いします.

回答No.2

■ファイルの存在確認 http://jeanne.wankuma.com/tips/vb6/file/exists.html http://jeanne.wankuma.com/tips/vb.net/file/exists.html ■ファイル読み込み http://jeanne.wankuma.com/tips/vb6/stream/readline.html http://jeanne.wankuma.com/tips/vb.net/stream/readline.html これをFormLoad時にチェックを行い、ファイルが存在しないorパスワードが違う場合は MsgBox "パスワードが違うか設定ファイルが存在しません。" End で終了させてあげればいいでしょう。

d-910
質問者

補足

回答ありがとうございます! 初心者なので、もう少し教えていただけませんか? たとえば、KEYという名前のtestファイルをいれておかないと、フォームが起動しないようにするときはどうすればよろしいでしょうか? またそのファイルの中に123という文字が書かれてないとダメにしたいときはどのようにすればよろしいでしょうか?

回答No.1

開発環境を書いてくださいね。 [ VB6 ] Private Sub Form_Load() If CheckFile = False Then MsgBox "起動不可" Unload Me End If End Sub Private Function CheckFile() As Boolean ' ここにパスワードファイルをチェックする処理 ' 合格ならTrueを、不合格ならFalseを返す CheckFile = False End Function [ .NET~2008 ] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If CheckFile() = False Then Windows.Forms.MessageBox.Show("起動不能") Me.Close() End If End Sub Private Function CheckFile() As Boolean ' ここにパスワードファイルをチェックする処理 ' 合格ならTrueを、不合格ならFalseを返す Return False End Function 簡単な方法はこんな具合です。 ファイルチェックの処理はご自身で埋めてください。

d-910
質問者

補足

回答ありがとうございます! 初心者なので、もう少し教えていただけませんか? たとえば、KEYという名前のtestファイルをいれておかないと、フォームが起動しないようにするときはどうすればよろしいでしょうか? またそのファイルの中に123という文字が書かれてないとダメにしたいときはどのようにすればよろしいでしょうか?

関連するQ&A

  • VB2008 デバッグを実行すると作成したフォームとは違い、Form1が表示されます

    VB2008をはじめたばかりの初心者です。 ファイル入出力のプログラムを書いて、フォームも作成(OpenFileDialogなどを使用)しました。 デバッグを実行すると、フォームでファイル入出力ができるようになる予定なのですが、 「Form1」という何もないフォームがでてきます。 (はじめに手を加えていない、Form1というものがなぜか表示されます。もちろんボタン等もありません) 実際に作成したフォームは、frmWav.vbというプログラムのため、フォームの名前もfrmWav.vb[デザイン]となっています。 デバッグ自体はエラーとはならないため、原因がわかりません。どうかご回答おねがいします!!

  • shell関数について

    毎度、お世話になっています。 現在、C言語で書いた複数のプログラムをBATファイルで処理するように記述しています。VBでその制御を行っているのですが、VBの処理手順として子フォーム(textあり)にデータを書きこんで、ボタンを押すとshellでbatファイルを起動し、バッチファイルの結果として、あるディレクトリにresult.txtが作成され、VBで他の子フォームに読みとらせようとしているのですが、shellだと、実行の終了を待たずに次にいってしまうので、そのバッチファイルの実行処理が終わらず、result.txtの内容を読み込むことができません。 待つようにするにはどうすればよいのでしょうか? ちなみにVBは一週間前にはじめて、自分でも調べてなんとか作ろうとしたのですが、時間がないため、ここに質問させていただきました。なるべく簡単なアルゴリズムで、よろしくお願いします。 VBのプロセス    テキストにデータを書き込む      ↓     ボタン   →        テキストの内容を*.txtとして保存                        ↓                      バッチファイル起動    ↓(ここで右の実行を待たない     ↓     ので読み込むことができない)   C言語で書かれたプログラム実行                        ↓ result.txtを    ←        結果としてresult.txtが出来上がる 読み込んで表示     

  • Visual Basic6.0のプログラミングなのですが・・・

    Visual Basic6.0のプログラミングなのですが・・・ 2つのファイルを読み込んで2つの画像を表示させたいんです。 1つのファイルを読み込むプログラムはあるのでそれに付け足す形で作りたいと考えています。 既存のプログラムでは、 1つのフォームがあってリストボックスにファイルの一覧が出るようになっています。 そこからファイルを選択して読み込みのボタンを押すと表示されるようになっています。 ぱっと見た感じすっごくシンプルなプログラムでした。 私はCでプログラムを作ったりしますがぜんぜん違いました。 それを2つ一気に読み込めるプログラムにしたいのですが、VBはまったくの初心者なので手も足も出ない状態なんです。 一覧を表示させるフォームをもう一個まったく同じものを作ってしまって、1つ1つファイルを選択するようにしようかとおもったのですが・・・できますでしょうか・・・ あとフォーム1で選択した後、フォーム2を表示させることはできますか?? 本も借りてみてはいるのですが、知りたいことが書いてないので質問しました。 説明が本当に下手なのでわかりにくいかもしれませんが、ご教示お願いします

  • VB2005でmdbに接続するには?

    Visual stadio2005のVB.NETでIDとパスワードを入力し、データベースに登録されているIDとパスワードと同じなら次の画面へ、違っていたらエラー表示。というプログラムを組みたいのです。 次の画面へやエラー表示と言うプログラムは自分なりに書けたのですが、accessのmdbとVB.NETとのファイルの接続方法が分からず、SQL文も必要なのでは?と思うのですが組み込み方が分からず困っています。 コネクションをしたりファイルオープンをしたりと言う、C言語のプログラムを見ましたが、良く分かりません。 ご存知の方、教えていただけませんでしょうか。 よろしくお願いします。

  • 保存するとデザイン画面が出ない

    Visual Basic 2008 エクスプレスを使っています フォームを作成して、コントロールなどを貼り付けて 名前をつけて保存します。そして1度Visual Basicを終了して それからまた起動させてファイルを開くを選びました 例えば test.vbで保存したとすると test.Desinger.vb test.resx test.vb の3つが表示され3つめのtest.vbを選ぶとプログラムを直接打ち込む画面しか表示されず、デザイン画面が表示されません。 残り2つは開きましたが、ちょっとよくわからないので閉じました そこで質問なのですがデザイン画面を出すにはどうすればいいのでしょうか?

  • 新しいフォームへのデータを渡したい

    Visual studio 2005にてフォームアプリケーションを作成しています。 メインとなるフォーム(form.vb)と、ダイアログ表示用のフォーム(dialog.vb)を使い、メインでの値をダイアログ用のフォームの方で表示させたいのです。 メインのTextBox1にテキストを入力させ、「実行」ボタンを押すとダイアログ表示用フォームが立ち上がり、ダイアログのTextBox1に同じものを表示させたい・・・という寸法です。 できるだけ簡素なコードでこれを行うにはどうすればいいでしょうか? よろしくお願いします。

  • visual basic 6.0のMsgBoxについて

    visual basic 6.0のMsgBoxについて MsgBoxについてなのですが、from_load内にMsgBox()でメッセージボックスを作成するとフォームを表示する前にメッセージボックスが表示されます。 これをフォームを表示してから、メッセージボックスを表示することは出来るのでしょうか? VB6は初心者で分かりづらい質問だと思いますが、ご教授をよろしくお願いします。

  • VisualBasic6.0で状況依存ヘルプを表示したいです。

    富士通PowerCOBOLV7.0で、プログラムを作っています。 そのプログラムで[ヘルプ]ボタンを押したら、HTML Help(*.chm)を起動するようにしたいのですが、COBOLから直接ヘルプファイルを起動できないようです。 そこで、COBOLから一旦VBのプログラムを呼んで、そのVisual Basicからヘルプファイルを呼ぶようにしようかと思います。 また、状況依存ヘルプとして、表示されている画面に関するヘルプを表示したいです。 Visual Basicから状況依存ヘルプを表示できるようなのですが、具体的にどうすれば良いのでしょうか。 MicroSoftのページを検索してみたけど、うまく見つけられません。 ヘルプファイルは、ヘルプましんで作りました。 Visual Basic6.0(ほぼ初心者)です。 よろしくお願いします。

  • タスクスケジューラでVB6のプログラムが実行しない

    VB6で作ったプログラムをWindows7において、タスクスケジューラで起動させたが、実行しない。 フォ-ムは1個だけで、その中のACTIVATEから、同フォーム内のルーチンを呼び出して目的の動作をさせるようになっています。手動で起動させると、目的の動作をして終了するが、タスクスケジューラではフォームを表示した状態で止まっている。そのフォームをクリックすると目的の動作を行う。なお、フォームはその時実行されている別のVB6のフォームの前面[最前面)に表示されている。目的は1日1回自動的に特定ファイルの状態を調べたいだけです。 よろしくお願いします。

  • 32ビット用Visual Basic 4.0ソフト

     いつも、解答いただきありがとうございます。  Windows8.1、NEC lavie 64ビットのノートパソコンを使用しています。  従来は、WindowsXP 32ビットマシーンを使用していました。  LETSCLIPと言うクリップのユーティリティプログラムを使用しています。  プログラム内部で、VB4.0 Visual Basic 4.0を使用しています。マイクロソフトがサポートを終了していることを知っています。だからと言って使用できる範囲で使用することは、問題ないでしょう。動かなくなっても保証の限りで無いというだけです。  64ビットの機械は、32ビットの上位互換があり、基本的には、32ビットのソフトも動くはずです。  VB4.0 Visual Basic 4.0で必要になるライブラリーファイルを C:\Windows\system32\ のフォルダに全て入れています。それなのに  Windows8.1の元で、インストールしようとすると、 VB4.0 Visual Basic 4.0のライブラリーを引っ張ってこようとして、ここで、 VB4.0 Visual Basic 4.0のライブラリーを見つけることが出来ませんのエラーが出ます。 ●(Q01)C:\Windows\system32\のフォルダの中にライブラリを入れておけば、どこのフォルダから実行しても、 最初の起動時にパスが切られているので、指定のライブラリファイルは、参照できるはずでは、無いのでしょうか? ●(Q02) もし、それでも、参照できないと言うのであれば、起動したフォルダの中にライブラリをコピーして入れれば、インストール時と実行時にライブラリを参照して正しく実行できるのでしょうか?  LETSCLIPと言うプログラムが、今では、ほとんどどこにも登録されてなく、サポートも終了していて64ビット版のプログラムを作り直してもらうことが困難なのです。  32ビットバージョンのプログラムは、多く、64ビットバージョンに作り直されているようです。 ●(Q03) しかし、そのままのプログラムで、64ビットマシーンで動く場合も有るようです。これは、64ビットの機械が32ビットの上位互換で作られているせいでしょうか?  敬具