• ベストアンサー

ファイルを開く処理

ご質問です。 ファイルを開く処理が分からないです。 fopenでファイル処理を行うのではなく、 ただ単に、ファイルを開きたいのです。 例えますと、 IEをダブルクリックして画面の最前面に出てくるように・・・ こんな事は可能なのでしょうか? Cの実行ファイルと同等のディレクトリtest.htmlが存在し、それを開きたいのです。 普通にフォルダを開いてファイルをダブルクリックすればいいのですが・・・ この先には、ローカルのみでフォームを用いて入力した値をテキストに書き込む処理を行いたいと思います。 初心者のため、なかなか進まないのですが、googleで調べながやっております。 何かこれにまつわる良いサイトをご存知でしたらこれも併せて教えていただけたら幸いです。 よろしくお願い致します。

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

  • ベストアンサー
  • nitscape
  • ベストアンサー率30% (275/909)
回答No.3

#2です。 C言語であっても考え方は同じです。 例えば以下のソースを拡張子をcとすればビルド・実行が可能です(Borland Cでは若干修正しなければいけないかもしれません)。 HTMLのフォームを利用した処理もCOMをC++ではなくCから呼び出すことも可能のため#2に書かれた流れで行うことはできます(C++よりもさらに面倒になりますが)。 --------------------------- #include <windows.h> void main() { DWORD i; DWORD dwLen; char pszPath[1024]; dwLen = GetModuleFileName(NULL,pszPath,1024); for(i = dwLen; i > 0; i--) { if(pszPath[i] != '\\') continue; pszPath[i+1] = NULL; break; } ShellExecute(NULL,"open","BuildLog.htm",NULL,pszPath,SW_NORMAL); }

cluewm
質問者

お礼

>HTMLのフォームを利用した処理もCOMをC++ではなくCから >呼び出すことも可能のため#2に書かれた流れで行うこと >はできます(C++よりもさらに面倒になりますが)。 時間的に余裕がなく、とりあえずは、WSHで対処したいとおもいます。 大変、勉強になりました! また、ファイルを開く処理 #include <windows.h> ・ ・ ・ ShellExecute(NULL,"open","BuildLog.htm",NULL,pszPath,SW_NORMAL); に関しましては、動作の確認ができました。 ShellExecute、今回始めて知りました。 ありがとうございました!!

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

その他の回答 (2)

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

実行ファイルと同じフォルダのhtmlファイルを開くというのは簡単です。以下のようにすればできます(VC++なら)。 DWORD i; DWORD dwLen; TCHAR pszPath[1024]; dwLen = ::GetModuleFileName(NULL,pszPath,1024); for(i = dwLen; i > 0; i--) { if(pszPath[i] != _T('\\')) continue; pszPath[i+1] = NULL; break; } ::ShellExecute(NULL,_T("open"),_T("BuildLog.htm"),NULL,pszPath,SW_NORMAL); フォームを用いて...というのはHTMLのFORMタグの話しですよね。これはちょっと難しいです。実現するにはCOMの知識が必要になります。 この場合はCoCreateInstanceでIEを起動、NavigateでHTMLを開き、DWebBrowserEvents2 に対してadviceをして、DISPID_BEFORENAVIGATE2を捕まえます。FORMでgetメソッドでの送信であればURLから値を取りますし、POSTメソッドの場合はVARIANT型からデータを取ります。FORMから送信された値を取り出したら後はfopenでも何でもいいのでファイルを開いて書き出すだけです。

全文を見る
すると、全ての回答が全文表示されます。
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

Win2000, VC++6.0の環境ですと、 system("D:\\test.html"); の呼び出しで動作確認できました。 > 画面の最前面 > Cの実行ファイルと同等のディレクトリ この辺はもう少しひねりがいるのかも? -- > フォームを用いて入力した値をテキストに書き込む処理を行いたいと思います。 フォームとは、test.htmlに埋め込まれたフォームでしょうか? テキストとは、別のテキストファイル? ブラウザに表示された画面のフォームに文字を入れるんなら、WebBrowserコントロールとかを使うほうが良いかも?

cluewm
質問者

補足

ご回答いただけた皆様へ 早速ご回答いただきましてありがとうございます。 VCやC++などではなく、C言語で作成せねばなりません・・・ borland Cを使っています。 引き続き、宜しくお願い致します。 >neKo_deuxさん test.htmlを開きたい(視覚的に)というのと、フォームについては別件です・・ 言葉が足りず、すみませんでした。 aaa.htmlにフォームがあり、そこに入力したものを、 C言語を用いてtest.txtに書き込みを行いたいのです。 宜しくお願い致します。

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

関連するQ&A

  • VBAのSHELLを用いてEXEファイルを起動したものの、微妙にうまくいかない

    エクセルのVBAのshellを用いて、exeファイルを起動させてました。 exeファイルはCを用いたシンプルなもので、テキストファイルを作成します。(ソースは下記参照) C:\testのディレクトリにエクセルファイルを作成し、 Shell "C:\test\test.exe" を実行させたところ、ファイルはC:\testのディレクトリに出来ずに、マイドキュメントに出来ました。 このexeファイルを直接ダブルクリックしたときは、C:\testのディレクトリにテキストファイルが作成されます。 ダブルクリックしたときと同じように、C:\testのディレクトリにテキストファイルを作成する方法があれが教えてください。 よろしくおねがいします。 (ソース、hello.txtというファイルをつくり、hello!を書く) main( ) { FILE *fp; /* ファイルポインタ */ fp = fopen( "hello.txt", "w"); fprintf(fp,"hello!\n"); fclose(fp); return 0; }

  • ローカルファイルの操作

    フォームページ上でローカルマシンのフォルダ(c:\test\)を指定して、そのフォルダにあるファイル(テキストファイルのみ)をホームページ上に展開します。 更に展開された内容をホームページ上で修正して上書き保存したいのですが、そういうことってできますか。 dir関数とかを使ってローカルフォルダを指定するとエラーになってしまうんです。 failed to open dir: No such file or directory in ・・・

    • ベストアンサー
    • PHP
  • 規定のブラウザはFirefoxだけど、IEで

    規定のブラウザをFirefoxにしているのでが自分でHPを作成していて ローカルフォルダに「index.html」というテキストファイルを入れています。 これをダブルクリックでIEで開くことは不可能ですか?

  • Wordの一時ファイル

    エクスプローラからWord文書をマウスのダブルクリックで開くと、同じディレクトリにWordの一時ファイルが作成されますが、これが作成されないようにできないでしょうか? 例えば、「テスト.doc」をダブルクリックで開くと同じディレクトリに「~$テスト.doc」という名前で一時ファイルが作られます。 この一時ファイルを作らないようにする、もしくは自分で指定したフォルダに作成するようにしたいと考えています。 Wordのファイルメニューから読取専用で開けば、一時ファイルは作成されない様ですが、エクスプローラーから開いた時も同じようになって欲しいと思ってます。 共通サーバーにWord文書を保存している場合、文書を開く度に一時ファイルを作られて、フォルダの日付がどんどん更新されてしまい、そのフォルダ下を本当に更新した日付が分からなくなってしまうためです。 よろしくお願いします。

  • ブラウザ上でファイルの修正を行う

    こんばんは。お世話になっております。 タイトルにあるように、ブラウザ上でサーバー内にアップされているファイルを修正するため、アップされているファイルを呼び出し、テキストフォーム内に書き出されたファイル内容を修正して保存。という仕組みを作ったのですが、ローカル上では何ら問題なかったものの、レンタルサーバーへアップして、それを行ってみたところ、ファイル内に記述のあるダブルコーテーションの前に、円マークが保存実行を行う度に、倍々で増えていく現象が起きています。 こんな感じ。 $test="テスト";  →  $test=\"テスト\"  →  $test=\\"テスト\\" 修正を行い、ファイルの上書きをするソースは $addfname = "../index.html"; $editfile = $_POST["editfile"]; $addstr = file_get_contents($addfname); $fp=@fopen("$addfname","w"); fputs($fp,$editfile); fclose($fp); となっています。 以上、ローカル上では何ら問題なかったことなので、何処が不適切なのか分からずにおります。お忙しい中恐縮ですがアドバイスいただけたら幸いです。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • サービスアプリでのネットワークパスにあるファイルへのアクセス

    VC++6.0でサービスアプリケーションを作成しています。 ログファイルに出力する処理を入れたのですが、ローカルドライブだと問題なく出力されますが、ネットワークパスだと出力できません。 また、サービスとしてではなくダブルクリックでアプリを起動すると問題なく出力されるのですが、サービスの設定やプログラムの記述で何か処理を行う必要があるのでしょうか? ちなみに、ファイルへの出力は、fopen(),fputs(),fclose()を使用しており、fopen()でエラーになっているようです。 よろしくお願いします。

  • アクセスファイルが開けなくなる時がある

    アクセス2010です。 test1.accdbを開きたいのですが、 フォルダ上でダブルクリックしても開けず 他のアクセスファイルはすべて閉じて test1.accdbを再度フォルダ上でダブルクリックしても開けません。 タスクマネージャーで見たら Microsoft Access(32ビット) と表示はされるのですが、ファイル名の表示はないです。 test1.laccdbは削除することもできないのですが これは何が起きてるのでしょうか? test1.accdbが開かれているからtest1.laccdbが出来上がっていると思うのですが なぜタスクマネージャーにはファイル名が表示されないのでしょうか? 更になぜフォルダ上でダブルクリックしても開けないのでしょうか? 結局開くには、 タスクマネージャーのMicrosoft Access(32ビット)を削除し、 test1.accdbをダブルクリックすると開けます。 その場合は、タスクマネージャーには、ちゃんとファイル名が表示されます。

  • C# テーブルのセルの値を別のフォームに渡したい

    はじめまして。よろしくお願いします。C#の初心者です。 処理は以下のようになっております まず、フォームが2つあります。フォーム1とフォーム2とします。 最初に起動されるのがフォーム1で、フォーム1にはテーブルがあります。 テーブルのどれかのセルをダブルクリックするとフォーム2が表示されます。 フォーム2にはテキストボックスがフォーム1のテーブルのカラム分の 5つあります。 フォーム1からフォーム2を呼び出して、呼び出されたフォーム2の テキストボックスのなかにフォーム1のテーブルでダブルクリックされたセルの値をそのカラムのテキストボックスの中に表示させたいです。 「CurrentCell」でフォーカスされている値を取得すると思われるのですが、解決に至っていません。 知恵をお貸しいただければと思います。よろしくお願いします。

  • 複数のファイルへの一括処理(困ってます)

    あるディレクトリ内の全てのファイルに同じ処理(添付のプログラムによるtest1.csvファイルに対する処理と同一の処理)をしたいと考えています。 どのようなプログラムを組めば良いのですか? 手法については検討もつかない状況です。 教えていただけないでしょうか? よろしくお願いいたします。 (1)添付のプログラム #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> int main () { FILE *fp; char a[50]; double b; char *p; if((fp = fopen("test1.csv", "r")) == NULL) return 0; while(fscanf(fp, "%s\n", &a) != EOF){ p = strtok( a, "," ); b = atof(a); printf("%lf ", b); while(p != NULL) { p=strtok(NULL, ","); if(p != NULL) { b = atof(p); printf("%lf\n", b); } getch(); } } fclose(fp); return 0; } (2)プログラムで使うCSVファイル -749.95,1.499894061 -749.9,2.371277071 -749.85,3.01070131 -749.8,-0.92298313 -749.75,3.111961134 -749.7,-1.642278763 -749.65,2.759562723 -749.6,0.869387239 -749.55,1.400240703 -749.5,-0.574988131 -749.45,-2.282041367 -749.4,-1.104953718 -749.35,2.45568825 -749.3,-1.391859875 -749.25,-1.600438736 -749.2,0.116074589 -749.15,2.973864166 -749.1,2.652719198 -749.05,1.584699094 -749,2.129474673 -748.95,1.847275561 -748.9,2.974398019 -748.85,1.561458246 -748.8,2.897905731 -748.75,2.655075544 -748.7,-2.677451989 -748.65,-0.871814301 -748.6,-3.098832888 -748.55,2.565297638 -748.5,-2.073626148 -748.45,-0.300440285 -748.4,0.515248274 -748.35,2.983715685 -748.3,-2.47909508

  • PDF→PDFのリンクが、ローカルに落とすと切れる

    狐につままれた気分です。 PDFファイル内から別のPDFファイルへリンクをはった時、サーバ上ではリンクしているのに、サーバ上のデータをフォルダーごとローカルに落とすと、リンクが切れてしまいます。 (ファイル名やディレクトリ構成はそのままなのに) しかも、この現象はIEのブラウザ内で見たときのみで、PDFファイルをダブルクリックして見たときはリンクはつながっています。 なぜこのようなことになるのでしょうか。教えてください。

お墓の継承についての問題
このQ&Aのポイント
  • お墓の継承に関する問題について、複雑な事情があります。
  • 私の息子と嫁は結婚してから25年程経ち、子供もいないため、お墓の継承に問題が生じています。
  • どのようにお墓を処理すればよいか悩んでいます。
回答を見る