ママのスキンケアのお悩みにおすすめアイテム

Win32APIの定数を調べるには、MSDNライブラリ http://msdn.microsoft.com/library/default.aspx で調べるとよいと聞いたことがあります。
 そこでAPI関数のSendMessageの定数を調べようと画面右上の「BingでMSDN検索」でSendMessageを入力しEnterを押すと7720件の事例にヒットします。これではとてもSendMessageの定数を調べることは不可能です。
 みなさんはVisualBasicでAPI関数の定数をMSDNライブラリで調べるとき、どういう方法で調べていますか?MSDNライブラリでの調べ方を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>Visual Studio 2008 Expressです。



VisualBasic…ですよね?
プラットフォームSDKはVC++用ですからVisualBasicでは直接使うことはないかと思いますが……。
よって…Windows SDK Configuration Toolも不要かと……。

Visual C++ 2008 ExpressでSDK使いたい。というのであれば設定は必要かも知れませんが。
レジストリに登録されていればWindowsSdkDirという環境変数が設定されてます。
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat などで設定されてます。
で、VC++2008では[ツール][オプション]で開いて、「プロジェクトおよびソリューション」の「VC++ ディレクトリ」で設定されています。
実行ファイルだと $(WindowsSdkDir)\bin って具合に。

Visual C++ 2008 Expressをインストールしているなら、SDKの6.0Aはインストールされていると思いますけどね。
# 2010 Expressだと7.0Aが。
ヘッダファイルをgrepするだけなら6.0Aでも問題ない…と思われます。
    • good
    • 0

>7720件の事例にヒットします。



最初にHitしている「SendMessage関数」とから探していくしかないでしょう。
左側のチェックで「ドキュメント および記事」にするとフォーラムとかは除けるかと思いますが。
# もっとも…SendMessageでやったら7970件に増えましたけど。

というか……SendMessage()では特に固有な定数はないかと思いますけど?
メッセージ(WM_CREATEとかそんなの)を調べたかったんですか??

>みなさんはVisualBasicでAPI関数の定数をMSDNライブラリで調べるとき、どういう方法で調べていますか?MSDNライブラリでの調べ方を教えてください。

VBじゃありませんが…まずはAPI名で検索でしょうかね。
まぁ、Win32APIの定数ならAPI名で検索して定数名の一部でも引っかかれば
後はその定数名でWeb検索…とか。
PlatformSDKがインストールしてありますから、その定数名でヘッダファイルをgrepすると定義しているヘッダファイルが見つかりますから
その前後の行とか確認して定数名を調べて、意味については定数名でWeb検索…ですね。

MSDNライブラリの場合、日本語翻訳されたページだと構造体のページへのリンクが無かったりするので、そういう時は英語版のページとか……。
# ヘッダファイルのgrepもよくやりますけどね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
 返信が遅れて申し訳ありませんでした。
 私のPC環境はWindows VistaでVisual Studio 2008 Expressです。
 PlatformSDKがインストールしていないのでWindows SDK v6.1をインストール後、Programs\Microsoft Windows SDK v6.1\Visual Studio Registration\Windows SDK Configuration Toolを起動しようとしたのですがエラー表示されました。
 そこで、エラーの原因と対処法がWeb上(http://togarasi.wordpress.com/2009/03/16/visual- … とこのWeb中の■Bug Notification: VS2008 SP1 Breaks WinSDK Configuration Tool の下に出てくるリンク先(リンク先を貼り付けてお礼入力の確認画面上ではうまくリンクしなかったので、このWeb上からリンクしてください))に掲載されていました。
(後者の英語版にあったのですが、)Visual Studio 2008 Express(C++,C#,VB)をそれぞれ「プログラムの修復と再インストール」かけてSDKのWindows SDK Configuration Toolを起動すると、「SoftWare Developement Kit」の上でv6.1を選択し、「Make Current」をクリックすると、「Your system haas neither Visual Studio 2005,Visual Studio 2008,or a later version installed」とエラー表示されて困っています。
 こういったケースにあった方、お答えいただけると助かります。
 当初の質問とズレている気がしますが、APIのヒントを得る方法にツール、サンプルを増やしていきたいと考えていますのでよろしくお願いします。長い文章ですみません。

お礼日時:2013/02/20 06:29

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q親ウインドウにあるOKボタンを押す方法

非常に基本的なことを質問して申し訳ございません。

●やりたいこと●
ある親ウィンドウに「テキスト」と「OKボタン」があります。
OKボタンはひとつだけです。
このOKボタンを押して、親ウィンドウを閉じるだけです。
OKボタンを押せば、親ウィンドウは勝手に閉じます。


親ウィンドウのハンドルは取得できたのですが、
子ウィンドウ(ボタン"OK")のハンドルが取得できず、
その後の処理もできておりません。

ボタンはひとつだけなので、ボタンのハンドルを検索したりしなくても、
押すことはできるような気がするのですが・・・
初心者の浅知恵で申し訳ございません。

やはり、ボタンのハンドルを取得して、押すコマンドを実行しないといけないのでしょうか?

ボタンのハンドルを取得して、押すコマンドを実行する場合、
その方法を教えていただけると幸いです。

親ウィンドウのハンドルは変数「hWindow」に入っているとして、
コードをお願いいたします。

親ウィンドウのハンドル取得に使ったFindWindow以外に宣言が必要であればご教授お願いいたします。

非常に基本的なことを質問して申し訳ございません。

●やりたいこと●
ある親ウィンドウに「テキスト」と「OKボタン」があります。
OKボタンはひとつだけです。
このOKボタンを押して、親ウィンドウを閉じるだけです。
OKボタンを押せば、親ウィンドウは勝手に閉じます。


親ウィンドウのハンドルは取得できたのですが、
子ウィンドウ(ボタン"OK")のハンドルが取得できず、
その後の処理もできておりません。

ボタンはひとつだけなので、ボタンのハンドルを検索したりしなくても、
押すことはでき...続きを読む

Aベストアンサー

子ウィンドウを探すには、下の2つのAPIの使います。

  EnumChildWindows(hWnd,lpEnumFunc,0&)
  GetClassName(hWnd,lpClassName,nMaxCount)

EnumChildWindows が、親ウィンドウのハンドルと、子ウィンドウを受け取る関数を
与えます。ただし、子ウィンドウを受け取る関数はフォームモジュールではなく、
標準モジュールにないと駄目です。

すると与えた子ウィンドウを受け取る関数に、親ウィンドウに含まれる全ての子ウィンドウの
ハンドルが返ってきます。

返ってきたハンドルを元に GetClassName で、クラス名を取得し、ボタンのウィンドウを
特定します。今回の場合は、ボタンが1個しかないとのことなので、取得したクラス名が
Buttonであればそのハンドルがボタンのハンドルになります。
参考までに、複数個のボタンがあれば、この場合、どのボタンがOKボタンなのかを特定しない
といけません。「スパイ」とか言うソフトがあれば簡単に特定できるのですが、ない場合は、
子ウィンドウに含まれる、上記の手順で得た全てのボタンのハンドルに対して、プログラムで
BM_CLICKのメッセージを送り一つづつ確認していくしかありません。ただこの場合でも、
特性があって、親ウィンドウに複数個のボタンがあっても、子ウィンドウを受け取る関数には
必ず一定の順番にしか、ハンドルが返ってきないので、最初に一度だけ何番目のボタンかを特定
すればよいです。対象のアプリケーションを再度起動してもこの順番は変わりません。

あと、ボタンのクリックは、SendMessageで、BM_CLICK を送ればOKです。

今回は、簡単な他アプリの制御なので、そんなに問題がないですが、複雑な制御だと、
更に、ウエイトの方法だとか、制御するアプリが確実に動作しているか、確認する操作を
1ステップずつ挿入していかないと駄目です。そうすれば、全ての他のアプリケーションを
自由に操る事ができます。

本格的に作るとなると大変なので、フリーのソフトで沢山でていると思います。一度さがされたら
よいと思います。DLLタイプになっているのがよいとは思います。
以前私も使ったことがありますが、憶えていません。あしからず。現在は自作しております。
自作のがよりきめ細かく制御出来るからです。

子ウィンドウを探すには、下の2つのAPIの使います。

  EnumChildWindows(hWnd,lpEnumFunc,0&)
  GetClassName(hWnd,lpClassName,nMaxCount)

EnumChildWindows が、親ウィンドウのハンドルと、子ウィンドウを受け取る関数を
与えます。ただし、子ウィンドウを受け取る関数はフォームモジュールではなく、
標準モジュールにないと駄目です。

すると与えた子ウィンドウを受け取る関数に、親ウィンドウに含まれる全ての子ウィンドウの
ハンドルが返ってきます。

返ってきたハンドルを元に G...続きを読む

QvbaでIEの名前を付けて保存(A)をしたい

VBA で IEの通知バー を操作したいです。
SendKeys で 通知バーの 保存(S) はできたのですが、
保存(s)の右隣の ▼ をクリックするとでてくる、 名前を付けて保存(A) の方法がわかりません。

どのようなキーをおくればよいのでしょうか。


他の質問をみると、SendKeysではなく ○○がよいですよ みたいな内容しか見つからず、
回答をみつけることができなくて困っておりますのでよろしくお願いいたします。

Aベストアンサー

VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。 | 初心者備忘録
http://www.ka-net.org/blog/?p=4855
とか。


人気Q&Aランキング