VC# WEBページの保存

このQ&Aのポイント
  • C#でWebBrowserコントロールでShowSaveAsDialogメソッドを使用して、Internet Explorerの[ファイル]メニューの[名前を付けて保存]メニューオプションのような機能を実装しようとしています。
  • しかし、上記のコードでエラーが発生しています。'AxSHDocVw.AxWebBrowser'に'ShowSaveAsDialog'の定義がないためです。
  • おそらく、使用しているブラウザにはShowSaveAsDialogメソッドが存在しない可能性があります。
回答を見る
  • ベストアンサー

VC# WEBページの保存

C#でWebBrowserコントロールでShowSaveAsDialog メソッドを使用して、Internet Explorer の [ファイル] メニューの [名前を付けて保存] メニュー オプションのような機能を実装しようとしているのですが、以下のようなコードですとエラーがでます。 なぜエラーがでるのかわかりません。教えてください。 エラー'AxSHDocVw.AxWebBrowser' に 'ShowSaveAsDialog' の定義がありません。 private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) { axWebBrowser3.ShowSaveAsDialog(); } ちなみにブラウザは、http://www.microsoft.com/japan/msdn/academic/Articles/fun/02/ を参考に作成しました。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Webブラウザの機能を使ってダイアログを出すのであれば ExecWBメソッドを使いましょう AxWebBrowser3.ExecWB( ShDocVw.OLECMDID_SAVEAS, ShDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT); といった具合です ・・・

keichan999
質問者

補足

回答ありがとうございます。 AxWebBrowser3.ExecWB( ShDocVw.OLECMDID_SAVEAS, ShDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);ですと 'ShDocVw' は現在のコンテキスト内に存在しません。 とエラーがでてしまったのですが。。。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

> 'ShDocVw' は現在のコンテキスト内に存在しません。 COMの参照設定で『microsoft internet controls』を追加してください

keichan999
質問者

補足

microsoft internet controlsを追加したんですが、同じエラーがでてしまいます。。。

回答No.1

例えば、saveFileDialog1を呼び出す場合は、 saveFileDialog1.ShowDialog(); みたいですよ。 名前から察するんで違っていたら済みませんが、WebBrowserコントロールとは別に、saveFileDialogを用意する必要があります。

関連するQ&A

  • C# WEB表示について

    フォーム上にwebBrowser1があって下の通りに読み込み完了しましたと出ますが、 webBrowser1に表示されません。どうしたらいいですか? webBrowser1のプロバティでイベントを利用するのではなくコードで作りたいので、どなたか教えて頂けませんか? ボタン1はヤフーで、ボタン2とかも製作したいので。 ソース private void button1_Click(object sender, EventArgs e) { WebBrowser webBrowserForPrinting = new WebBrowser(); webBrowserForPrinting.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webview); webBrowserForPrinting.Url = new Uri("http://www.yahoo.co.jp/"); } private void webview(object sender,WebBrowserDocumentCompletedEventArgs e) { MessageBox.Show("Webページの読み込みが完了しました!!"); }

  • C# フォーム追加後、旧フォームを閉じたい

    前略 ・C#で教えてください。 ・Form1 からshowDiag()メソッドでForm2をつくります。Form2が表示されたら非アクティブとなったForm1を閉じたいのですが どのようにしたらよいのかおしえてください。  下記は、Close() メソッドで Form2側から閉じようとしたプログラムですがFrom1を閉じることができません。 よろしくお願いします。 //----------------------------------------------- namespace formClose { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ShowDialog(); } }   public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { Form1 form1 = new Form1(); form1.Close(); //Form1が閉じない!! } private void button1_Click(object sender, EventArgs e) { this.Close(); //Form2を閉じる }    } } 以上

  • VC#でのファイル保存

    private void Save_File_Click(object sender, System.EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) {pb2.Image.Save(saveFileDialog1.FileName,ImageFormat.Jpeg);} } ↑のようにすると、「型または名前空間名 'ImageFormat' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。」とエラーがでます。 テキストを真似てプログラムしたのですが・・・ pb2はpictureBox2です(PictureBox pb2;pb2=pictureBox2;) よろしくお願いします。

  • イベントハンドラ関数について

    現在VC++/CLR 2005 でプログラミングをしています。 基本的な事柄かもしれませんが、質問させてください  以下の2つのボタンのイベントハンドラ関数があった場合 //ボタン1のイベントハンドラ関数 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { } ボタン2をクリックしたときの動作とボタン1の動作を同じにしたいと思っています。 その場合は private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { String^ str = textBox1->Text } のようにボタン2のイベントハンドラ関数をボタン1と同じように書けばいいのですが イベントハンドラ関数の処理が膨大になった場合を考えて省略する 書き方は無いのでしょうか?(以下の場合ですとエラーが起こってしまいます。) private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button1_Click(); } 宜しくお願いします

  • VC++フォームアプリケーション でのビットマップ処理

    私は今Visual Studio 2005(C++)のフォームアプリケーションでプログラムを組んでいるのですが、ビットマップ処理ができません。以下のプログラムにどのような変更を加えればできるようになるのでしょうか? ご存知の方がいたら教えてください。 #pragma once ~フォームのデザイン部分のプログラム(自動)なので省略いたします~ #pragma endregion private: Bitmap^ bmp; private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } private: System::Void 開くOToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { OpenFileDialog^ myDLG = gcnew OpenFileDialog(); myDLG->AddExtension = true; myDLG->DefaultExt = "bmp"; myDLG->FileName = "*.bmp"; myDLG->ShowReadOnly = false; myDLG->Filter = "ビットマップ(*.bmp) | *.bmp | jpeg(*.jpg;*.jpeg) | *.jpg;*.jpeg"; if(myDLG->ShowDialog() == System::Windows::Forms::DialogResult::OK){ this->Text = myDLG->FileName; pictureBox1->Image = gcnew Bitmap(myDLG->FileName); Invalidate(); } } private: System::Void 保存SToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { SaveFileDialog^ myDLG = gcnew SaveFileDialog(); myDLG->AddExtension = true; myDLG->DefaultExt = "bmp"; myDLG->FileName = "*.bmp"; myDLG->Filter = "ビットマップ(*.bmp) | *.bmp | jpeg(*.jpg;*.jpeg) | *.jpg;*.jpeg | すべてのファイル(*.*) | *.*"; if(myDLG->ShowDialog() != System::Windows::Forms::DialogResult::OK){ return; } pictureBox1->Image->Save(myDLG->FileName); Invalidate(); } private: System::Void 閉じるCToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { if(MessageBox::Show("アプリケーションを終了しますか?","画像描画",MessageBoxButtons::OKCancel,MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::OK){ this->Close(); } } private: System::Void 編集ToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void 回転180ToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { } } よろしくお願いします。

  • VC#2008の動作について

    VC#2008について、下記の場合、button1をクリックし、 その次に、button2をクリックしても全く反応しません。 どのように改良すれば反応しますか? 処理が重く止まったと感じた時、メッセージを表示した後、 アプリケーションを終了したいと思っています。 どなたかご存知の方、教えていただけないでしょうか? 宜しくお願い致します。 namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1(){ InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(10000000); } private void button2_Click(object sender, EventArgs e) { MessageBox.Show("close"); System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("myapp"); foreach (System.Diagnostics.Process k in p) { k.Kill(); } } } }

  • C# 2010 contextMenuStripのファンクション名の不

    C# 2010 contextMenuStripのファンクション名の不思議? まず2ケのメニューアイテムを持つcontextMenuStripを作り、それぞれのTEXTを試験1、試験3と改名します ダブルクリックするとハンドラーが出来て、その名称が(1)(2)のように TEXT名+ToolStripMenuItem_Click なります ここでいったんプロジェクトを終了して再ロードします 画像のように試験1と試験3の間に『試験3を途中に追加』を入れてダブルクリックして作ったファンクション名は前2者とは異なり (3)の如くtoolStripMenuItem1_Click となってしまいます なぜ 試験2を途中に追加ToolStripMenuItem_Click にならないのでしょうか? private void 試験1ToolStripMenuItem_Click(object sender, EventArgs e) --- (1) { } private void 試験3ToolStripMenuItem_Click(object sender, EventArgs e) --- (2) { } private void toolStripMenuItem1_Click(object sender, EventArgs e) --- (3) { } 追伸 『試験3を途中に追加』が長すぎるかと思い、『試験3』だけにしても結果は同じでした

  • C#でstop()が使えない。

    http://kana-soft.com/tech/sample_0012_3.htm#WebBrowser_Stop このHPを参考にstop()メソッドを使おうとしたのですがSTOP()に下記のエラーが出ます。 'System.Windows.Forms.WebBrowser' に 'stop' の定義が含まれておらず、型'System.Windows.Forms.WebBrowser' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 VS2010を使用し、.NETは4なので問題なく使えると思うのですが原因不明です。 以下ソースです。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace busywait4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { webBrowser1.Navigate("http://yahoo.co.jp");//もう一度、アクセスしなおす。 } int i; private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.stop(); }

  • C#のwebBrowserについて質問します

    C#のwebBrowserを使ってpdfファイルを表示するアプリケーションを作っているのですが、pdfファイルを表示中にそのアプリケーションを閉じてしまうとエラーが出てしまいます。 しかも、このエラーはデバックしたときには起こらないのですが、実行ファイルから実行してpdfファイル表示中に閉じるとエラーが起きます。 ソースはこのようなものでもエラーが起こります。 private void button1_Click(object sender, EventArgs e) { //PDFファイルを開く webBrowser1.Url = new Uri(@"C:\Work\Test.pdf"); } どうすれば、エラーが起きなくなるか知っていれば教えてください。 開発環境はVisualStadio2005 OSはWindowsXPです

  • 【C#】サブフォームからメインフォームを操作

    サブフォームに設定したボタンをクリックしたらメインフォームのイベントを実行とかは可能でしょうか? メインフォーム→Main サブフォーム→Sub Mainに、ウェブブラウザ(webbrowser1)を用意して、 サブフォームのボタン(button1)をクリックしたら、 webbrowser1に、http://www.yahoo.co.jp が表示すると言うプログラムを作りたいです。 以下のプログラムではエラーが出てしまいました。 まず、Mainのフォームロード時にSubが開くように設定。 ※webbrowser1のModifiersをinternalに設定。 private void Main_Load(object sender, EventArgs e) { Sub subform = new Sub(); subform .Show(); } 次に、Subで Main mainform; private void button1_Click(object sender, EventArgs e) { mainform.webbrowser1.Navigete("http://www.yahoo.co.jp") } と書いて、実行時のエラーは無く実行できたのですが、 button1をクリックすると、エラーが出て止まってしまいます。 逆に、Subにウェブブラウザを置いて、Mainから操作するのは上記のプログラムで問題なく動きました。 どうすれば、Subからメインのイベントを操作できるのでしょうか? よろしくお願いします。

専門家に質問してみよう