Sleep関数のエラーを解決する方法

このQ&Aのポイント
  • Sleep関数を使って処理を一時停止させたいが、エラーが発生する。
  • Sleep関数を使わずにビルドすることはできるが、どうしてもSleepを使いたい。
  • MessageBoxAやShow関数に関するエラーメッセージが表示される。
回答を見る
  • ベストアンサー

Sleepを使って処理を一時停止させたいのですが・・・

現在VisualStudio.NET2003でC++のプログラムからブラウザを呼び出すプログラムを作っているのですが、他の関数のところでSleep関数を使って処理を一定時間停止させたいのですが、エラーがでてうまくいきません。Sleepを使わずにインクルードからwindows.hを外せばビルドできるのですが・・・。どうしてもSleepを使わなければいけないので。 どのように解決したらよいのでしょうか? エラーの内容は以下の通りです。 error C2039: 'MessageBoxA' : 'System::Windows::Forms' のメンバではありません。 error C3861: 'Show': 識別子は、引数依存の照合を使用しても見つかりません。 error C2653: 'MessageBoxA' : 識別子がクラス名でも名前空間名でもありません。 error C3861: 'Show': 識別子は、引数依存の照合を使用しても見つかりません。 とでます。 以下にエラーが出ている箇所のソースをのせます。 int call_browser(){ System::String * target= "http://www.microsoft.com"; try { System::Diagnostics::Process::Start(target); } catch (System::ComponentModel::Win32Exception * noBrowser) { if (noBrowser->ErrorCode==-2147467259) System::Windows::Forms::MessageBox::Show(noBrowser->Message); // エラー!! } catch (System::Exception * other) { System::Windows::Forms::MessageBox::Show(other->Message); // エラー!! } return 0; }

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

  • ベストアンサー
  • yonfa
  • ベストアンサー率52% (22/42)
回答No.1

SleepってWIN32 APIのSleepを使おうとしているのでしょうか? .NETでの開発なら Thread::Sleep() を使用すればいいのでは?

関連するQ&A

  • VC++.NET2003でユーザー関数内でMessageBox::Show()が使えません??

    VC++.NET 2003 のヘルプの、「チュートリアル : 簡単な Windows フォームの作成」に MessageBox::Show()関数を使ってHello,worldを表示させる例が書いていますが、 この関数を、自分で作った関数(フォームのクラスのメンバ関数で、 関数のコードはインライン関数でなく、cppファイル側に書いています)に持っていくと、 error C2653: 'MessageBoxA' : 識別子がクラス名でも名前空間名でもありません。 error C2660: 'System::Windows::Forms::Control::Show' : 関数に 1 個の引数を指定できません。 と、コンパイルエラーが出てしまいます。 MessageBox::Show()を自前の関数で使う方法を、 どなたか教えていただけないでしょうか?

  • MessageBoxを継承したい

    C#2.0を使用しています。 MessageBoxを継承して拡張させたいと思い、MessageBoxExなるクラスで 次のように記述したのですが public class MessageBoxEx : System.Windows.Forms.MessageBox { } 型 'System.Windows.Forms.MessageBox' のコンストラクタが定義されていません。 というエラーが出てしまいます・・・ これはどういうことなのでしょうか? コンストラクタが定義されてないクラスは継承できないのでしょうか?

  • Oracleに接続すると、それ以降の処理を素通りしてしまう

    下記のようなメソッドで<1><2>の後、すぐに<7>に処理をしてしまいます。 <1>~<7>と動くと思っていたのですが、<3>~<6>が全て無視されます。 どこか問題があるのでしょうか? ちなみに、<1>で無効なURLを指定するとSQLExceptionでcatchされます。 try { Class.forName("oracle.jdbc.OracleDriver"); try { //<1> conn = DriverManager.getConnection (URL, UID, PSW); //<3> System.out.println("Oracleと接続しました"); } catch (SQLException e) { System.out.println("oracle接続エラー"); } catch (Exception e) { System.out.println("oracle接続エラー"); } //<4> try { //<5> stmt = conn.createStatement(); //<6>sql文の作成 // select文の実行 //(略) } catch (Exception ex3) { System.out.println("なんかエラーです"); } } catch (Exception e){ System.out.println("その他エラーです"); //<2> } finally { //特になし } //<7> return list;

    • ベストアンサー
    • Java
  • 0除算の例外処理ができない!!助けて!!

    0除算の例外処理ができない!!助けて!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Try If (Flag = "数値") Then Flag = "演算子" Work = Total + Calc + Input Total = js.Eval(Work) Input = "" TextBox1.Text = Total End If Catch ex As Exception MessageBox.Show("Exception Error : 0除算を行いました。") End Try ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Total + Calc + Inputは、すべて文字列です。 実行すると、ポップアップではなく、テキストエリアにこんな文字列が・・・ 0除算しても例外が発生しない・・・ 0 / 0 ・・・NaN (非数値) 1 / 0 ・・・+∞ そもそも、0除算ってなんですか??? 0で割っても例外が出ない!!

  • [PowerShell] メソッド内からの呼び出し

    お世話になります。 Win10、PowerShellでアプリの作成を行っています。 アセンブリ追加したクラスを使用したいのですが、Add-Typeで追加したクラスを使用することが出来ず困っております。 ■成功例 Add-Type -Assembly System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("めっせーじ!") # → これだと期待通りにメッセージダイアログが表示されます。 ■失敗例 Add-Type -Assembly System.Windows.Forms class ClsTest {  exec() {   [System.Windows.Forms.MessageBox]::Show("めっせーじ!")  } } $obj = New-Object ClsTest $obj.exec() # → クラスのメソッドに入れた途端、[System.Windows.Forms.MessageBox]が見つかりません、と言うエラーが発生します メソッドの中から期待通りに呼び出すには、どうすればよろしいでしょうか。 なお、当該部分を内包したグローバルなファンクションを別途用意し、それをメソッドから呼び出す方法は無しでお願いします。 うまく行くことは確認していますが、実際にはもっと複雑な処理を複数のクラスを使って行いたいため、応用できませんでした。 以上、なにとぞご教示のほどよろしくお願いいたします。

  • 例外処理と、ハンドルする範囲

    Try Catchや、throws Exceptionを使うべき時についてです。 ・0除算がありうるとき ・DLLや外部EXEを使用するとき、そっちの世界でのエラーをハンドルするとき ・ネットワークエラーや、DBサーバでのエラーをハンドルするとき ・ディレクトリがないとき・ファイルがないとき ・リフレクション?で、型判定・キャストを使用するときに、意図しない型のクラスが渡されてきた場合 などは、ハンドリングしつつ、それ用のエラーページにてエラーを表示しようと思いますが、 (1)みなさんはどのようなものまでハンドリングしていますか? 自分は、 Catch ex As System.xxx.xxxxxxException を何種類も書くメリットが感じられないので、 catch (System.Exception ex) で、上のもの以外のエラーについて、ex.Messageを出力しています。 (2)例外があったとき、エラーページに飛ばさずに、呼び元に扱いを任せる場合は(throwsさせる場合)どう使い分けをしていますか? (3)呼び出された側のクラスの、catch (Exception e)のブロックの中で、エラーページに飛ばしていますか?それとも、一番最初の呼び出し元まで、throws→throws→throws...して、一番最初の呼び出し元からエラーページに飛ばしていますか? .

  • sql2000 vb2008接続

    VB2008/standard editionでremote PC/dynabook1のMSDE/sql2000 のnCalnartに接続を試みるとき error/providerはサポートされていません/がでます。 デザイン時には接続されるのですが 原因と対策をお教えください Dim scn As SqlClient.SqlConnection = New SqlClient.SqlConnection scn.ConnectionString = "Provider=SQLOLEDB;Data Source=DYNABOOK1;Persist Security Info=True;User ID=sa;Initial Catalog=nCalnart" Try scn.Open() MessageBox.Show("接続しました") scn.Close() MessageBox.Show("切断しました") Catch ex As Exception MessageBox.Show(ex.Message, "error") End Try

  • VB2010で、シリアル通信をするには

    VB2010で、シリアル通信をするには シリアルポートをopenしようとすると、エラーで弾かれてしまいます。 どのように対処したら良いですか? 使っているソースコードは、下記の通り。 Private Sub ButtonRsStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonRsStart.Click Try '例外処理のはじまり If SerialPort1.IsOpen = True Then 'ポートはオープン済み MessageBox.Show("すでに" & SerialPort1.PortName & "は接続されています。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If SerialPort1.PortName = "COM1" 'オープンするポート名を格納 SerialPort1.Open() 'ポートオープン PORT_STATE.Text = "OPEN" Catch ex As Exception '例外処理 MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub --------------- エラーが発生する場所は、「Catch 」になります。 エラーメッセージは、「ポート 'COM1' へのアクセスが拒否されました。」です。 何が原因なのか、さっぱり分かりません。 ヒントになりそうな解答を頂けないでしょうか?

  • サンプルプログラムをコンパイルするとエラーがでる。

    Visual C++ 2005 Express Editionを勉強中で、あるWEBサイトで紹介されていたサンプルプログラムhttp://homepage3.nifty.com/ishidate/vcpp05_3/vcpp05_3.htm を使って、コンボボックスやテキストボックスを配置して以下のコードを入力しました。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double a=double::Parse(textBox1->text); double b=double::Parse(textBox2->text); int indexNumber=comboBox1->SelectedIndex; double c; switch(indexNumber){ case 0:c=a+b;break; case 1:c=a-b;break; case 2:c=a*b;break; case 3:c=a/b;break; } label1->text=c.ToString(); } private:System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e){ comboBox1->SelectedIndex=0; } コードを”デバッグなしで実行”で動かそうとすると以下のようなエラーメッセージが出力されました。 >C801.cpp 1>c:\mywork\felicareader_test\c801\c801\Form1.h(138) : error C2248: 'System::Windows::Forms::Control::text' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。 1> c:\mywork\felicareader_test\c801\c801\Form1.h(23) : 'System::Windows::Forms::Control::text' の宣言を確認してください。 1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : 'System::Windows::Forms::Control' の宣言を確認してください。 1>c:\mywork\felicareader_test\c801\c801\Form1.h(139) : error C2248: 'System::Windows::Forms::Control::text' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。 1> c:\mywork\felicareader_test\c801\c801\Form1.h(23) : 'System::Windows::Forms::Control::text' の宣言を確認してください。 1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : 'System::Windows::Forms::Control' の宣言を確認してください。 1>c:\mywork\felicareader_test\c801\c801\Form1.h(148) : error C2248: 'System::Windows::Forms::Control::text' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。 1> c:\mywork\felicareader_test\c801\c801\Form1.h(23) : 'System::Windows::Forms::Control::text' の宣言を確認してください。 1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : 'System::Windows::Forms::Control' の宣言を確認してください。 1>ビルドログは "file://c:\mywork\felicareader_test\C801\C801\Debug\BuildLog.htm" に保存されました。 1>C801 - エラー 3、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== エラーが3つでて、それをダブルクリックしてみると、どうやら、 ・double a=double::Parse(textBox1->text); ・double b=double::Parse(textBox2->text); ・label1->text=c.ToString(); この3つの文に問題があるということらしいのですが、原因がよくわかりません。 この原因わかるかたいらっしゃいましたらぜひご教授よろしくお願いいたします。

  • Vistaでスリープアイコン

    Vistaでスリープで終了するのが便利で常用しています。 どなたかshutdown.exe のパラメータをご存知ではないでしょうか? シャットダウンのパラメータはC:\Windows\System32\shutdown.exe -s -f -t 0を使っています。

専門家に質問してみよう