• ベストアンサー

時間差と取得するためにはWin32API関数の何を使えばいいですか?

VC++を使っています。 プログラム上で、ある2点間の時間差(経過時間)を得たいのですが、 Win32API関数で、何を使えばいいのでしょうか? SYSTEMTIME構造体で返される時刻関数は、時間差を計算しずらそうなので。。。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

GetTickCount()はどうでしょう?

参考URL:
http://www.microsoft.com/JAPAN/developer/library/jpsetupf/_win32_gettickcount.htm
nabezo-
質問者

お礼

回答ありがとうございました。 GetTickCount()でOKでした。 #お礼が遅くなり、すみません。

その他の回答 (1)

  • cherry3
  • ベストアンサー率39% (18/46)
回答No.2

timeGetTimeという関数もあります。 1/1000秒単位で取得できます。(実際にはもっと精度低いですが^^;) 基本的には、GetTickCount()と同じですが timeGetTimeの方が精度がいいという話を聞いたことがあります。 使用するにはmmsystem.hをインクルードし、winmm.libをリンクする必要があります。 timeGetTimeの精度は以下の関数で設定できます。 timeBeginPeriod timeEndPeriod

nabezo-
質問者

お礼

回答ありがとうございました。 GetTickCount()でOKでした。 #お礼が遅くなり、すみません。

関連するQ&A

  • VC++でwin32APIを作っているのですが・・・

    こんにちは。私はwin32APIを勉強しているc言語初心者です。 私はMicrosoft Visual C++ 2008を使ってc言語のwin32APIをプログラミングしているのですが、独学でやっているので物凄く邪道なwin32APIプログラミングをしているような気がするのです。 ・c言語のプログラムを書いて、C++のwin32APIプロジェクトとしてビルドする。 ・ヘッダーファイルにwin32API関数がなかったので、自分のwindowOSからwin32API関数を探し出してVC++2008のなかのincludeフォルダ内にコピー&ペーストして使えるようにした。 これって邪道ですか?一応何の問題もなくwin32APIプログラムが作れるのですが、もっと正規なやり方があるでしょうか。回答よろしくお願いします。

  • 2つのSYSTEMTIMEの時間の差を求めたい

    Windows APIに関する質問です。 2つのSYSTEMTIMEがあったとして、その時間の差を求める為のAPI関数(またはフリーで出回っているコード)は存在するでしょうか? 自作で作ろうかと思ったのですが、毎月の日数の違いや、うるう年などを考慮するとなると、結構複雑になりそうなので、既存の関数があるのなら利用したいと考えています。

  • VC++ .NETでWin32 APIの関数を呼び出すことは可能なのでしょうか?

    Visual C++ 2003 .NETで、Win32 APIの関数をSystem.Runtime.InteropServices名前空間を利用して呼び出したく、チャレンジしておりますが、C#のやり方でやると記述エラーになります。 Google等で調べても、C#のものばかり出てくるのですが、VC++ .NETではWin32 API関数を呼び出すことはできないのでしょうか?

  • API関数とDLL関数

    API関数とDLL関数って同じものですか? ネットで調べると・・・ API関数=Win API→ひとつひとつの関数(単独で機能するプログラムコード の塊)。     API関数はdllファイルの中にある関数をさす。 とのようなことが書いてあります。つまり、DLL関数(私の認識であると、.dllファイルの中にある関数)であり、この関数はAPI関数と同定義と認識しています。 まだまだ初心者で、この認識があっているか確信がもてません。 どうか教えていただけないでしょうか?? お願いいたします。

  • Windows2000のAPIの使い方について

    以前、Win95、NT開発環境でAPI関数のGetOpenFileNameを使用し、 ファイルを選択するダイアログを表示するようなプログラムをVBAで作りました。 Win95、NTでは正常に動作するのですが、 Win2000ワークステーションではダイアログが表示されません。エラーもでません。2000では構造体が3つ追加されていることはわかったのですが、 実際プログラミングしてみたところ正常に作動しません。 いろいろ調べたのですがよく分からないので、サンプルのプログラム等を教えていただきたいのですが・・・。よろしくお願いします。

  • API関数でOS判定

    教えてください。 Win32のAPI関数「GetVersionEx」を使用して、OSの判定をおおなっているのですが、「Windows2000」「WindowsCE」「WindowsME」の判定方法がわかりません。その他の「WindowsNT」「Windows3.51」「Windows95/98」はAPI関数の戻り値(構造体)の「プラットフォームID」と「マイナーバージョン」でわかるのですが…。 どなたか回答をお願いします。 ちなみに、「WindowsME」でのマイナーバージョンを調べてらら「90」の値が返ってきました。これは、「90未満」「90以下」「90以上」「90超」のどれなんでしょうか…。

  • 【VC6.0の質問】世界協定時刻と時刻について

    VC6.0の質問です ネット(WinNT4.0)でつながっている他の端末の時刻を取得するにはSYSTEMTIME(世界協定時刻)しか取れないですか? 他の端末のローカル時間(日本の時刻)を取得する方法があれば教えてください。 SYSTEMTIME(世界協定時刻)からローカル時間(日本の時刻))に変換する関数、サンプルプログラム、参考URLがあれば教えてください。

  • WIN32API CreateFileのCOMx

    WIN32API CreateFile(…"COMx"…)のCOM番号「x」)は、1~256まで可能ですか。 MS-VC++でRS-232C通信のWIN32アプリケーションを作る必要が生じてきました。 VC++6.0やVS2005のシステムは所有していますが、WIN32アプリは初心者です。 (WIN32アプリが出来たらDLLに改造するつもりです。) http://www.saluteweb.net/~oss_winapi232.html ここにどなたかが、サンプルプログラムをアップされてます。 この中の("COM1")は、"COM1"~"COM256"まで、対応しているんでしょうか。

  • エクセルで所要時間を計算する関数はありますか?

    エクセルであるイベントの時間経過表を作っているのですが、A時刻からB時刻までの所要時間を計算し、表に書き入れるというような関数はありますか。時刻は60進法と12進法の組み合わせなので、単純に引き算をすることができなくて困っております。

  • VB2005でWin32APIを用いてRS-232CのRTS信号を、デ

    VB2005でWin32APIを用いてRS-232CのRTS信号を、データ送信中だけHIGHにさせるプログラムを作成中です。 色々調べて、Win32APIを使うことで、それらしい動作をさせるプログラムを作れることが分かり、色々調べてコーディングしたのですが、上手く動きません…。処理の流れは以下のようになっています。 (1) CreateFile()関数でCOMを開く。   (CreateFile()の「フラグ」には"FILE_FLAG_OVERLAPPED"を指定) (2) CreateEvent()関数にてイベントオブジェクトを作成。 (3) EscapeCommFunction()でRTS信号をHIGHに設定。 (4) WriteFile()関数でRS-232Cへデータを送信する。 ※ここまでは、オシロスコープにて正しく動作していることを確認しています。 (5) データ送信完了を待つために、SetCommEvent()関数で"EV_TXEMPTY"イベントマスクをセット。 (6) WaitCommEvent()で送信完了を待つ。   ⇒WaitCommEvent()関数が、データ送信完了を待たずに抜けてきてしまう(Falseがリターンされる)…。 (7) そこで、WaitForSingleObject()を使ってイベントハンドラが"シグナル状態"になるのを待つ。   ⇒タイムアウトに"INFINITE"を指定すると、無限待ち状態に陥ってしまう。   ⇒また、タイムアウトに"1000"を指定すると、約1秒後に"WAIT_TIMEOUT"が返ってきてしまう。 WriteFile()関数、そしてWaitCommEvent()関数の引数には、OVERLAPPED構造体へのポインタを渡しているのですが、思うように動いてくれません。 ※Win32APIの関数宣言の記述方法(データ型など)が誤って、このようになっていたりするのでしょうか… どなたかヒントでもお教えいただけると、大変助かります。 以上、よろしくお願いいたします。

専門家に質問してみよう