- ベストアンサー
"start x.html"をCで実行したい
Cで通常コマンドラインで実行される”start X.html”を実行したいのです 勿論X.htmlは既に存在しているものとして ブラウザはie5、osは98 2ndです 何かいい方法があれば教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>どうも無償版はsystemとShell・・・をカバーしていないみたいですね #2のプログラムですが、私のWin98SE&BCC5.5.1の環境では問題なくコンパイルできました。Borland C++ ver4.5ではコンパイルできたということですから、BCC5.5の環境設定に問題だと思います。正確なエラーメッセージがわかるとアドバイスできるかもしれません。
その他の回答 (2)
- gimmick
- ベストアンサー率49% (134/270)
ご希望の機能はsystem関数で実現できると思います。また、#1さんの回答にあるShellExecute関数でも可能です。一般に、mainをエントリポイントとしている場合あってもWindowsAPIのコールは可能です。サンプルプログラムを2つ載せておきます。 ----Sample1----------------------------------------------------- #include <stdlib.h> int main(){ system("start C:\\x.html"); return 0; } ----Sample2----------------------------------------------------- #include <windows.h> int main(){ ShellExecute(NULL, "open", "C:\\x.html", NULL, NULL, SW_SHOW); return 0; }
補足
時間がかかりましたが両方ともやっと動きました というのはBorland C++5.5ではコンパイル時に 未定義の文字列というエラーになってしまうのです オプションファイルbcc32.cfgの内容は -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" -WC -WM -VM 仕方なくbuilder以前のBorland C++ver4.5によってコンパイルしたら通り実行もうまく行きました どうも無償版はsystemとShell・・・をカバーしていないみたいですね STLをカバーしているのにこれらのコマンドは古いからはずしたのでしょうか? どうもありがとうございました
- inetd
- ベストアンサー率23% (43/184)
ShellExecute() 関数で出来ます。 参考 URL のページを見て下さい。 あと、ShellExecute で検索すると色々見つかると思います。
補足
これはWinMainをエントリーとするWindowsプログラミングですね? できるならばmainをエントリーとするプログラミングで作りたいのです 他に方法がなければWinMainを採用させていただきますが・・・ なにせ開発環境が無償ボーランドC++5.5であってideではないので おまじないをいっぱい入力しないと行けないと大変なような気がします 昔に組んだ雛型があるのでできないことはないのですが・・・ mainでできなければ使わせていただきます ありがとうございました
お礼
吸いませんリンクオプションを取り違えました 下のようになっています リンクオプションは ilink32.cfg: /L"c:\Borland\Bcc55\lib" /ap
補足
ありがとうございます ソースは #include <windows.h> void main(){ShellExecute(NULL,"open","C:\\x.html",NULL,NULL,SW_SHOW);} エラーメッセージは Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland gomi_0.cpp: エラー E2206 gomi_0.cpp 5: 不正な文字 ' ' (0x8140)(関数 main() ) エラー E2206 gomi_0.cpp 5: 不正な文字 ' ' (0x8140)(関数 main() ) *** 2 errors in Compile *** コンパイルオプションは bcc32.cfg: -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" -WC -WM -VM リンクオプションは ilink32.cfg: /L"c:\Borland\Bcc55\lib" ちなみにコンパイルオプションリストは オプション 機能 @<ファイル名> レスポンスファイル <ファイル名> からコンパイラオプションを読み込む +<ファイル名> 代替環境設定ファイル <ファイル名> を使用する -3 プロテクトモードで動作可能な 80386 命令を生成する(デフォルト) -4 プロテクトモードで動作可能な 80386/80486 命令を生成する -5 Pentium 命令を生成する -6 Pentium Pro 命令を生成する -A ANSI 準拠の予約語のみを使用する -AK K&R の規格に準拠した予約語のみを使用する -AT BCC32.EXE に準拠した予約語のみを使用する(-A- と同様) -AU UNIX V 準拠の予約語のみを使用する -a デフォルトの -a4 データアラインメント。 -a- はバイトアラインメント(-a1) -an n の値に応じて,データを 1 = バイト,2 = ワード(2 バイト),4 = ダブルワード(4 バイト 2 ワード),8 = クワッドワード(8 バイト 4 ワード),16 = パラグラフ(16 バイト 8 ワード)にそれぞれ配置する(デフォルトは -a4) -B ASM(-S)にコンパイルしてから,それを基に .OBJ をアセンブルする -b 列挙型を int とする(デフォルトは -b で,列挙型を int サイズにする) -b- 可能ならば列挙型をバイトサイズにする -C コメントのネストを可能にする(デフォルトは -C- で,コメントのネストを無効にする) -CP コードページを使用可能にする(MBCS 用) -c コンパイルにより .OBJ を生成するが,リンクはしない -D<名前> <名前> をヌル文字列として定義する -D<名前=文字列> <名前> を <文字列> として定義する -d 重複文字列をマージする -d- 重複文字列をマージしない(デフォルト) -E<ファイル名> アセンブラ名を指定する -e<ファイル名> 実行形式ファイル名を指定する -f 浮動小数点演算をエミュレートする -f- 浮動小数点演算を行わない -ff 高速浮動小数点演算を行う -fp Pentium の FDIV 回避 -gb 最初に警告メッセージを出したファイルでバッチコンパイルを停止する(デフォルトはオフ) -gn 警告メッセージ が n 個で停止する(デフォルトは 255 メッセージ) -G, -G- サイズ/速度を最適化する。-O1 および -O2 を使用すること -H プリコンパイルヘッダーを生成し,使用する -H- プリコンパイルヘッダーを生成せず,使用しない(デフォルト) -H=<ファイル名> プリコンパイルヘッダーのファイル名を指定する -H"xxx" ヘッダーファイル xxx でプリコンパイルを停止する -Hc プリコンパイルヘッダーをキャッシュする(-H または -H"xxx" が必要) -He 外部ファイルを使ってプリコンパイルヘッダーを使用可能にする(デフォルト) -Hh=xxx ヘッダーファイル xxx でプリコンパイルを停止する -Hs スマートキャッシュしたプリコンパイルヘッダーを使用可能にする(デフォルト) -Hu プリコンパイルヘッダーを使用するが,生成はしない -I<path> インクルードファイルのサーチパス -in 認識される識別子の長さを n にする(デフォルト = 250) -Ja 未使用メンバーも含めてテンプレートメンバーをすべて展開する -jb 最初にエラーメッセージを出したファイルでバッチコンパイルを停止する(デフォルトはオフ) -Jgd すべてのテンプレートインスタンスの定義を生成し,重複した定義をマージする(デフォルト) -Jgx すべてのテンプレートインスタンスに対して外部参照を生成する -jn エラー: メッセージ が n 個で停止する(デフォルトは 25 メッセージ) -K 文字型のデフォルトを unsigned にする(デフォルトは -K- で,文字型のデフォルトを signed にする) -k 標準スタックフレームを使用可能にする(デフォルト) -L<path> ライブラリファイルのサーチパス -lx オプション x をリンカに渡す -l-x リンカのオプション x をオフにする -M マップファイルを作成する -n<path> 出力ディレクトリを path に設定する -O ジャンプを最適化する -O1 できるだけ小さいコードを生成する -O2 できるだけ高速のコードを生成する -Oc 基本ブロックおよび関数内にある重複式を削除する -Od すべての最適化オプションを無効にする -Oi 一般的な内蔵関数を展開する -OS Pentium 命令のスケジューリングを行う -O-S 命令スケジューリングを無効にする -Og 速度を最適化する。-O2 を使用すること -Os 速度を最適化する。-O2 を使用すること -Ot サイズを最適化する。-O1 を使用すること -Ov ループ内誘導変数と計算量の削減を行う -Ox 速度を最適化する。-O2 を使用すること -o<ファイル名> 指定されたファイル名で .OBJ ファイルを作成する -P ソースファイルの拡張子に関係なく C++ コンパイルを実行する -P- ソースファイルの拡張子に応じて C++ コンパイルを実行する -P<拡張子> C++ コンパイラを実行し,指定した拡張子で出力する -p Pascal の呼び出し規約を使用する -p- C の呼び出し規約を使用する -pc C の呼び出し規約を使用する(デフォルト: -pc,-p-) -pm __msfastcall を使う明示的な呼び出し規約を持たない関数 -pr レジスタで引数を渡すために fastcall 呼び出し規約を使用する -ps stdcall 呼び出し規約を使用する -Q 拡張コンパイラエラー情報(デフォルトはオフ) -q コンパイラ識別バナーを抑止する(デフォルトはオフ) -R .OBJ ファイルにブラウザ情報を含める -RT 実行時型情報を有効にする(デフォルト) -r レジスタ変数を使用する(デフォルト) -r- レジスタ変数を使用しない -rd register キーワードが使用されている場合だけレジスタ変数を使用する -S アセンブラにコンパイルする -T- アセンブラオプションをすべて削除する -Tx アセンブラオプション x を指定する -tW ターゲットは Windows アプリケーション(-W と同じ) -tWC ターゲットはコンソールアプリケーション(-WC と同じ) -tWD .DLL 実行形式ファイルを生成する(-WD と同じ) -tWM 32 ビットマルチスレッドターゲットを生成する(-WM と同じ) -tWR ターゲットはダイナミック RTL を使用する( -WR と同じ) -tWV ターゲットは VCL を使用する -U<名前> 指定された <名前> の前の定義をすべて取り消す -u 下線を付ける(デフォルト) -V スマート C++ 仮想テーブルを使用する(デフォルト) -V0 外部 C++ 仮想テーブル -V1 パブリック C++ 仮想テーブル -VC 呼び出し規約の変形について互換性を保つ -Vd for ループ変数のスコープを指定する -Ve 空の基本クラスの長さをゼロにする -VM Microsoft Visual C++ と互換を保つ -VI- 古いスタイルの Borland 検索アルゴリズムを使ってヘッダーファイルを検索する(最初に現在の作業ディレクトリを探す) -Vl 古いスタイルの Borland C++ 構造配置を使う(BCC32.EXE の旧バージョンとの互換用オプション) -VF MFC と互換を保つ -Vmd メンバーポインタにできる限り短い表現を使用する -Vmm メンバーポインタの多重継承をサポートする -Vmp メンバーポインタの宣言での精度を優先する -Vms メンバーポインタの単一継承をサポートする -Vmv メンバーポインタがポイントできる位置を制限しない(デフォルト) -Vx 長さ 0 の空のクラスメンバー関数 -v ソースデバッグを有効にする -vG すべての CodeGuard オプションをオンにする -vGc インラインポインタアクセス(CodeGuard) -vGd グローバルおよびスタックデータアクセス(CodeGuard) -vGt メンバー関数エントリの this ポインタ(CodeGuard) -vi インライン関数の展開を制御する -W ターゲットは Windows アプリケーション(-tW と同じ) -WC ターゲットはコンソールアプリケーション(-tWC と同じ) -WD .DLL 実行形式ファイルを生成する(-tWD と同じ) -WM 32 ビットマルチスレッドターゲットを生成する(-tWM と同じ) -WR ターゲットはダイナミック RTL を使用する( -tWR と同じ) -WU Unicode アプリケーションを生成する -w 警告表示をオンにする -w! 警告時にコンパイラから非ゼロを返す -wxxx xxx 警告メッセージを有効にする -w-xxx xxx 警告メッセージを無効にする -wmsg ユーザー定義警告 -X コンパイラに自動依存情報を出力させない(デフォルトは -X- で,コンパイラの自動依存情報を出力する) -x 例外処理を有効にする(デフォルト) -xd デストラクタによる後片付けを有効にする(デフォルト) -xdg グローバルデストラクタカウントを使う(BCC32.EXE の旧バージョンとの互換用オプション) -xf より高速な例外処理を有効にする -xp 例外の発生位置情報を有効にする -xs 例外エピローグコードをインライン展開しない -y 行番号を付ける リンクオプションは /GD DRC ファイルを生成する /GF:xxxx イメージフラグをセットする /Gk エラー時に出力ファイルを保持する /Gl .LIB ファイルを生成する /Gpd 設計時のみのパッケージを生成する /Gpr 実行時のみのパッケージを生成する /Gn ステートファイルを生成しない(インクリメンタルリンクを使用不可にする) /GS:string セクションフラグをセットする /Gz ターゲットのチェックサムを計算し,その結果を PE ヘッダーに挿入する /H:xxxx アプリケーションのヒープの予約サイズを 16 進値で指定する /Hc:nnnn アプリケーションのヒープのコミットサイズを 16 進値で指定する /I 中間ファイル出力ディレクトリを指定する /j オブジェクトのサーチパスを指定する /L ライブラリのサーチパスを指定する /M マップファイルの変形名 /m マップファイルをパブリック名を使って作成する /q コマンドラインバナー表示を抑止する /r 詳細情報の表示 /Rr リソースを置換する /S:xxxx アプリケーションのスタックの予約サイズを 16 進値で指定する /Sc:xxxx アプリケーションのスタックのコミットサイズを 16 進値で指定する /s 詳細なセグメントのマップファイルを追加する /Tpd Windows の .DLL ファイルをターゲットにする /Tpe Windows の .EXE ファイルをターゲットにする /Tpp パッケージを生成する /t リンクで経過した時間を表示する /Ud.d ユーザーバージョン(メジャー,マイナー)を指定する /Vd.d 予期される Windows バージョンを指定する。たとえば,/V4.0 と指定すると,.EXE ヘッダーのサブシステムのバージョン(メジャー.マイナー)フィールドは 4.0(Windows 95 アプリケーションであることを示す)に設定される。デフォルト値は 4.0 /v 完全なシンボリックデバッグ情報を含める /w すべての警告をオンにする /w-dee 警告メッセージ「.EXE module built with a .DLL extension(.EXEモジュールを .DLL 拡張子で構築)」を無効にする /w-dpl 警告メッセージ「Duplicate symbol in library(ライブラリでシンボルが重複)」を無効にする /w-dup 警告メッセージ「Duplicate symbol(重複シンボル)」を無効にする /w-exp 警告メッセージ「Attempt to export non-public symbol(非パブリックシンボルをエクスポートしようとした)」を有効にする /w-nou 警告メッセージ「Creating a package without any units(ユニットを持たないパッケージを作成しようとしている)」を無効にする /w-rty 警告メッセージ「Unable to perform incremental link - performing full link(インクリメンタルリンクを実行できない。完全リンクを実行)」を有効にする /w-srd 警告メッセージ「Stripping relocations from a DLL may cause it to malfunction(DLL からリロケーションを削除すると DLL に障害が発生する可能性がある)」を無効にする /w-snf 警告メッセージ「Section not found(セクションが見つからない)」を無効にする /w-uld 警告メッセージ「Unable to load DLL(DLL をロードできない)」を無効にする /x マップファイルの作成を抑制する セグメントのデフォルトマップファイル(リンカオプションなしでデフォルトで作成されるマップファイル) よろしくお願いします これが解決したら古いコンピュータの中だけでインストールされているborlandを使わなくてすみます