• 締切済み

コンソールアプリでファイル選択ダイアログを出したい

C++Builder6 で作っているコンソールアプリがあります。 これに、ファイル選択ダイアログを出す機能を追加したいのですが 可能でしょうか? 試しに TOpenDialog *OpenDialog1; OpenDialog1 = new TOpenDialog; //※ delete OpenDialog1; というコードを書いてみましたが、※の行で 「'TOpenDialog::TOpenDialog()' に一致するものが見つからない」 というコンパイルエラーになりました。

みんなの回答

  • KoHal
  • ベストアンサー率60% (110/181)
回答No.2

vcl.hをインクルードした上で、  TOpenDialog *OpenDialog1;  OpenDialog1 = new TOpenDialog(0);  OpenDialog1->Execute();  delete OpenDialog1; でいけます。つまりTOpenDialogのコンストラクタは必ずOwner引数をとるのです。この場合はそれをNULLに設定しています。 ただ、コンソールアプリでGUIのダイアログを表示するのが妥当かどうかは考慮の余地がありそうです。 常駐アプリケーションのようにメインフォームを持たないプログラムが環境設定時などにダイアログを出すと言うなら納得できますが。

gba02077
質問者

お礼

教えて頂いた通りで、できました。 ありがとうございました。 DOS時代からバージョンアップを続けているフリーソフトがあり、入力ファイルをタイプさせるところを改善したかったのです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

え?コンソールアプリと言う事の意味がわかっておられれば「GUI」機能が無いという事がお分かりになっていると思われます。 つまり、ベースがキャラクターベースのCUIアプリなら まず不可能です 「GUI」のアプリケーションとして作り直すか CUIから「キック」させる別のプログラムをして 作成するほかに手は無いとおもわれます

gba02077
質問者

お礼

アドバイス、ありがとうございます。 私も「CUIから「キック」させる別のプログラム」を考えていた所でした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォルダ選択ダイアログ

    お世話になります. C++Builder6を利用してフォルダ選択ダイアログを表示しようとしたのですが, BROWSEINFO構造体が定義されていないようで使用できませんでした. ShlObj.hを読み込ませてコンパイルすると, FOLDERSETTINGS構造体 DESKBANDINFO構造体 FVSHOWINFO構造体 SHELLFLAGSTATE構造体 の4つが重複宣言になっていました. ホントに初心者な質問で申し訳ないのですが, どなたかC++BuilderでのSHBrowseForFolderの使い方を教えてください. よろしくお願いいたします.

  • Access97VBAで「ファイルを開く」ダイアログボックス

    事情があり、使い慣れないMicrosoft Access97のVBAでアプリケーションを作成中です。 使用者がHDD上のファイルを選択できるようにしたいのですが、どうすれば良いのでしょうか? イメージとしては、「ファイルを開く」ダイアログボックスのようなものでファイルを選択・指定できるようにしたいのです。 (Delphiなら、OpenDialogコンポーネントの機能です。)

  • MFCをDLL化してコンソールアプリから起動

    MFCアプリケーション(プロジェクト作成でMFCアプリケーションを選択)をDLL化して、コンソールアプリケーションからこのMFCをマルチスレッドで起動する方法を教えてください。MFCが起動後、コンソールアプリケーションの処理は次に進行し、MFCは操作可能な状態(アイコンなどがクリック可能で、青丸クルクルにはならない)にしたいです。また、コンソールアプリケーションからもMFCが操作可能にしたいです(例えば、コンソールアプリからAと入力するとファイルのオープンダイアログが開く、、、とか)。

  • VB6.0のマルチセレクトダイアログで250個のファイルを選択したいの

    VB6.0のマルチセレクトダイアログで250個のファイルを選択したいのですがエラーが出ます。 10個程度の選択ならエラーが出ません。 どこをどう修正したら多数のファイル選択が可能になるのでしょうか? どなたかわかる方教えてください。 どうぞよろしくお願いいたします。 エラー内容:下記のGetFileNameが空でファイル名を取得できない。 Dim GetFileName As Variant 'ファイル名(フルパス) GetFileName = apiGetOpenFileName(Form1.hWnd, strFilter, strDir) 'ダイアログ表示 使用したコード:下記リンク先のコードにマルチセレクト用のコードを追加しました。 "?http://www.red.oit-net.jp/tatsuya/vb/FileDialog.htm"? 以下、追加したコードです。---------------------------- Public Const OFN_LONGNAMES = &H200000 '旧スタイルのダイアログのとき、ロングファイル名を使用可能にする Public Const OFN_EXPLORER = &H80000 'エクスプローラ型ダイアログとして表示 '構造体の設定 With OFN .Flags = OFN_PATHMUSTEXIST Or _ OFN_FILEMUSTEXIST Or _ OFN_HIDEREADONLY Or _ OFN_ALLOWMULTISELECT Or OFN_EXPLORER 'マルチセレクト追加

  • C++Builderの選択

     いつも勉強させていただいています。どうぞよろしくお願いします。  今手元にあるアプリ(C++Builder5.0のソースコード付き)をいじりたく、 これを機会に初めてC++の勉強をしたいのですが(経験のある言語は Fortran、VBです)、C++Builderのどれを購入するかで迷っております。  ポイントとしましては、 ・上のC++Builder5.0のコードがコンパイル可能なもの  (先日、無料のBorland C++Compiler5.5をダウンロードしてコンパイルを試みても  できませんでしたorz (vcl.hというファイルが足りないようです)が、  C++Builderであればバージョン違いでもコンパイルできるのでしょうか?) ・書籍が比較的多いもの。(調べているとC++Builder6は比較的多そうな?気がしたのですが。。。) ・今後も暫く使えそうなもの。(C++Builder5 Personalとかかなり安いようなのですが、  皆さんもっと新しいもので開発なされているという事でしょうか。。。?) ・¥は7~8万くらいまで?  PersonalとProfessionalの違いや制限もよく分からないので、 もしお詳しい方がいらっしゃいましたら、ぜひ教えていただければと思います。  どうぞよろしくお願いします。

  • 【VB2005】「ファイルを開くプログラムの選択」ダイアログを出すには?

    最近VB2005を始めた者です。 現在アプリケーションを作成しております。 そのアプリケーションの1つに外部ファイルを開く機能を付け加えたいと思っています。 機能としては、   ・普通のテキストファイルを開きたい時 → notepad.exe   ・大容量のテキストファイルを開き検索したい時 → 別のアプリ という風にユーザーが開くアプリを選択できるようにしたいのです。 それを実現するために、 拡張子の無いファイルを開くときに出る   「ファイルを開くプログラムの選択」 というダイアログボックス(?)を出したいと思っています。 関連付けられているファイルを開く事は ShellExecute() や Process.Start() などで実現できているのですが、「ファイルを開くプログラムの選択」がどうしても実現できず困っております。 お暇な時で構いませんのでご回答いただければ幸いです。

  • 言語[C#]..フォルダ選択ダイアログで、フォルダ選択のための階層が表示されない

    C#を使い、フォルダ選択のダイアログを表示させたいと思っています。WEB上に公開されていた下記コードを使い、フォルダ選択のダイアログを表示できました。 ただ、ダイアログが表示されたのはよいのですが、ダイアログ内に表示されるはずの、フォルダ選択のための階層部分が表示されません。この現象についてご存知の方、助言を頂きたくお願い致します。 また、C#は一昨日から使い初めたばかりです。初歩的なミスであった時は、どうぞお許し下さい。 フォルダ選択ダイアログの表示コード ------------------------------------------------ FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.Description = "読み込むフォルダを指定してください" ; if (fbd.ShowDialog() == DialogResult.OK) { txtInputFolder.Text = fbd.SelectedPath ; } ------------------------------------------------

  • VBでコンソールアプリの出力を取得したいのですが

    ネット上で入手したコマンドプロンプト上で使うアプリをGUIで操作できるようにしたく出力を取得したいのですが出来ません。 ネットで出力の取得方法を調べて下記のようにしているのですがどうやっても取得できません・・・ (ipconfig や dir 等は問題なく取得できたのですが・・・) VBは2008です Dim p As New Process() p.StartInfo.FileName = "cmd.exe" ' 実行するファイル p.StartInfo.Arguments = "aaa.exe" ' 目的のアプリ p.StartInfo.CreateNoWindow = True ' コンソールを開かない p.StartInfo.UseShellExecute = False ' シェル機能を使用しない p.StartInfo.RedirectStandardOutput = True ' 標準出力をリダイレクト p.Start() ' アプリの実行開始 Dim output As String = p.StandardOutput.ReadToEnd() ' 標準出力の読み取り output = output.Replace(vbCr + vbCrLf, vbLf) ' 改行コードの修正 TextBox1.Text = output ' [出力]ウィンドウに出力 試しに自分で文字を表示するだけのコンソールアプリを作成して試したのですがそれは取得できました。 目的のアプリが特殊なのでしょうか? ソースがあったので見てみたのですがC言語だった為詳しくわからなかったのですが、出力は「Console.WriteLine」ではなく「fputs」を使用して出力していました・・・これが原因なのでしょうか? どうにかして、出力を取得する方法はないものでしょうか? よろしくお願いします。

  • ファイルダイアログのカレントフォルダ

    vb.netのOpenFileDialogでダイアログを開いたとき、最初はマイドキュメントが表示されますが 違うフォルダからファイルを選ぶと、次にダイアログを開いたときはそのフォルダ(カレントフォルダ?)がまず表示されます。 その情報はどこに保存されてるのですか? 同じパソコンでプログラムをコピーして交互に動かしてもカレントフォルダはその度に変わってるようです。 別のパソコンにプログラムをコピーしたら(最初だけは)マイドキュメントからになるんですか? もう1つ質問で RestoreDirectoryプロパティにtrueを設定してもカレントフォルダは変わるようなのですが なぜでしょう? 試しに作ったコードは↓です。 環境はvb2005、XP-sp3です。 -------------------- Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' OpenFileDialog の新しいインスタンスを生成する (デザイナから追加している場合は必要ない) Dim OpenFileDialog1 As New OpenFileDialog() ' ダイアログボックスを閉じる前に現在のディレクトリを復元する (初期値 False) OpenFileDialog1.RestoreDirectory = False ' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する If OpenFileDialog1.ShowDialog() = DialogResult.OK Then MessageBox.Show(OpenFileDialog1.FileName) End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ' OpenFileDialog の新しいインスタンスを生成する (デザイナから追加している場合は必要ない) Dim OpenFileDialog2 As New OpenFileDialog() ' ダイアログボックスを閉じる前に現在のディレクトリを復元する (初期値 False) OpenFileDialog2.RestoreDirectory = True ' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する If OpenFileDialog2.ShowDialog() = DialogResult.OK Then MessageBox.Show(OpenFileDialog2.FileName) End If End Sub End Class --------------------

  • VC++:ダイアログがDispose()できない

    前略 ・.NET 2012のVC++を使っています。 ファイルをオープンするプログラムをつくろうとしています。その過程でダイアログをオープンするプログラムをネットにあったC#のコードを参考に、openFileDialog1->Dispose();をコメントアウトした以下に示すものをつくりました。このコードは特に問題なくコンパイルできて動作します。  しかし、C#のコードにあった openFileDialog1.Dispose();から変更したopenFileDialog1->Dispose();を追加すると "error C2039: 'Dispose' : 'System::Windows::Forms::OpenFileDialog' のメンバーではありません。"と云うエラーメッセージがでてコンパイルできません。 <質問>  VC++の場合 C#のopenFileDialog1.Dispose();に相当するオブジェクト破棄のコードは不要なのでしょうか?  もし、破棄が必要なのであればどのようなコードを書けばよいのでしょうか?  どなたかお分かりになる方、ご教示いただければ幸いです。 以上、よろしくお願いします。 //------------------------------------------------------- private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog();//new OpenFileDialog(); openFileDialog1->Title = "ダイアログのタイトルをココに書く"; openFileDialog1->InitialDirectory = "c:\\"; openFileDialog1->FileName = "初期表示するファイル名をココに書く"; if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) MessageBox::Show(openFileDialog1->FileName); // 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照) // openFileDialog1->Dispose(); };