3.2 ウィンドウハンドル番号を取得する
デスクトップ上に開いているウィンドウには、全てOSが付けた管理番号が付いています。普段はあまり使うことはありませんが、物によっては(例えばDirectXなど)
この番号
が無いと使えない機能もあります。
各ウィンドウの管理番号が何番かを調べるときは、
User32.dll
というライブラリの中にある
FindWindow
という関数を使って調べます。
FindWindow関数を定義する
API「
FindWindow
関数」を使うときですが、まずはこの関数がどこにある、どんなヤツなのかなど、この関数を使うための準備(定義)が必要です。
この関数を使うときは、
標準モジュール
を準備し
(General)(Declarations)
の所へ次のように記述します。なお、
標準モジュール
の追加方法は
エクセルスマイル
の「4.マクロを書く場所/
標準モジュール
」をどうぞ。
'標準モジュールの(General)(Declarations)へ記述します
Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
※このエクセルマクロは標準モジュール内へ記述するマクロです
簡単に説明すると、
Declare
は
DLLの中にある関数を呼び出す
ときに付ける物で、
Function
は関数の宣言。次が関数名
GetAsyncKeyState
と
Lib
が関数の居場所で、この関数のときは
User32.dll
を指定します。なお、この関数の戻り値は
Long
型です。引数は下を参照してください。
見慣れないうちは、なんだか難しいことが書いてあるな…と思うかも知れませんが、慣れるとどーってことありません。決まり事なので、悩まずにこのまま使ってしまいましょう。
◆FindWindowの引数
ByVal
lpClassName
As String
調べるウィンドウの種類を指定します。ちょっとだけ例を…
XLMAIN
:エクセル
OPUSAPP
:ワード
OMAIN
:アクセス
PP10FRAMECLASS
:パワーポイント2002
PP9FRAMECLASS
:パワーポイント2000
PP97FRAMECLASS
:パワーポイント97
IEFRAME
:インターネットエクスプローラ
MSPaintApp
:ペイント
WORDPADCLASS
:ワードパッド
NOTEPAD
:メモ帳
SCICALC
:電卓
ByVal
lpWindowName
As String
調べるウィンドウのタイトルを指定します。
FindWindowの使用例
FindWindow
の使用例です。例では、自分自身のウィンドウ番号を取得しイミディエイトウィンドウに出力しています。
FindWindow
は、引数へ
ウィンドウの種類
と
ウィンドウのタイトル
を設定し呼び出すと、戻り値にそのウィンドウの番号が返ります。なお、エクセルの場合、ウィンドウの種類は
XLMAIN
を指定、ウィンドウ名は
Application.Caption
で取得することが出来ます。
Sub prcFindWindow()
'ウィンドウハンドル番号を取得します
Debug.Print
FindWindow
("
XLMAIN
", Application.Caption)
End Sub
※このエクセルマクロはワークシート内へ記述するマクロです。
別途、標準モジュールへ
FindWindow
関数を定義する必要があります。
エクセルマクロTips
〜ゲーム篇〜
1.はじめに
2.ワークシートを使って構築する方法
2.1 ワークシートをゲーム画面にする
・表示倍率を出来るだけ下げて…
・ゲームのときはR1C1参照形式が便利
2.2 パターンの描画方法
・基本はコピペ
・もちろんDestination:=の高速コピペで!
2.3 パターンを定義する方法
・Rangeオブジェクト変数
2.4 パターンを移動する方法
・キャラが画面上を動き回る!
2.5 アニメーションする方法
・パラパラマンガと同じ原理
3.API
3.1 キーボードからの入力を判定する
・GetAsyncKeyState
・キーコード一覧
3.2 ウィンドウハンドル番号を取得する
・FindWindow
3.3 PlaySoundで音を鳴らす
・PlaySound
・同時に複数のWAVを鳴らせないのが欠点
3.4 1/1000秒単位の時間を取得
・GetTickCount
・timeGetTime
3.5 1/1000秒単位の時間を正確に取得
・QueryPerformanceCounter
・QueryPerformanceFrequency
3.6 任意の時間だけプログラムを待機する
・Sleep
4.サウンド(MIDIやWAVの再生)
4.1 DirectXでWAVファイルを再生
・参照設定が必要
・Windows XPまでのOS用
4.1.1 DirectSound用の変数を準備
4.1.2 音を鳴らすための準備
4.1.3 音を鳴らす、止める
・音が鳴っているか調べる方法も
4.2 DirectXでMIDIファイルを再生
・参照設定が必要
・Windows XPまでのOS用
4.2.1 DirectMusic用の変数を準備
4.2.2 演奏するための準備
4.2.3 演奏と停止、後処理
・演奏中かを調べる方法も
5.具体例
5.1 速度調整[DL]
・時間で制御する
5.2 迷路の中を歩き回る[DL]
5.3 衝突を判定する[DL]
5.4 点数など文字の表示[DL]
5.5 背景を派手にする[DL]
・シートの背景に画像を設定
5.6 物体を目標物に向けて移動する[DL]
・敵の弾を自機へ向けるときや線を引く時
・2つの物体の対角線上にいることを判定
6.その他の関連技、関連知識
6.1 オプションOFFで描画速度をアップ
・実行速度の改善例と計測結果
・PCスペックの違いを考慮して作成しよう
※[DL]にはサンプルファイルがあります
■関連書籍の紹介
「Excel VBAでできるRPGゲーム作成入門」の紹介/前編
・付属ゲーム「真・魔討伝」について
「Excel VBAでできるRPGゲーム作成入門」の紹介/後編
・本書の内容と、CD-ROM特典について
■サイト内を検索
Happy! Happy! Islandその他のコンテンツ
■
VBAプログラミング系
Access VBAのTipsとサンプル
Excel VBA(エクセルマクロ)のTipsとサンプル
VBScript/JScriptのTipsとサンプル
プログラミング基礎・入門
■
入門と使い方
Access入門と使い方講座97~2003/2007/2010/2013
Access VBAプログラミング入門 2013/2010/2007/2003
Excel入門と使い方講座2013/2010/2007
■
ダウンロードコーナー
AccessとExcelのフリーソフト
■
その他
質問受け付けコーナー「管理人に聞いてみよう♪」
BBS過去ログ広場
HTMLの書き方
管理人プロフィール
┗
twitter(外部サイト)
管理人へメール
■
別館(海外向けサイト)
Excel Games and Access Games
VBAプログラミング&Tips集の
"Happy! Happy! Island"トップページへ
[PR]管理人が心を込めて書いた本
■
最速攻略 AccessVBAサンプル大全集
Access 2013/2010/2007対応版
■
速効!ビジネスPC Accessマクロ&VBA
Access2013/2010/2007対応
■
最速攻略Accessクエリ テクニック大全集
Access2013/2010/2007対応
■
AccessVBAマクロ超入門講座 Access2010/2007対応
■
ExcelVBA超入門講座 Excel2010/2007対応
■
ExcelVBAでできる RPGゲーム作成入門
■
[改訂新版]実践COBOLプログラミング入門
■
最速攻略 VBScriptサンプル大全集
Windows7/Vista/XP/2000対応
(
アマゾン
へジャンプします)
[PR]注目の情報
転職成功の秘訣はサイトに公開されない求人にあった
採用人数が少ない・専門性が高い・競合他社に知られたくないなど、魅力的な求人情報ほど一般には公開できないのです。
株デビューするなら SBI証券!
業界屈指の格安手数料と業界最高水準のサービスで口座数はネット証券 No.1!口座開設料・管理料は無料。
GDOゴルフショップ
ゴルフ用品のオンラインメガストア。品揃え10万点!
アスタリフトコラーゲンドリンク
毎日続けるものだから・・まとめ買いで最大10%OFF!集中コラーゲンケアで、ハリと潤いの溢れる毎日へ。
[リンク]IT関連情報サイトなど
gihyo.jp
技術評論社提供のIT関連コンテンツサイト
Copyright(C) 1999-2015
結城圭介
(Ver.3.51) All rights reserved