#include <windows.h>
HWND g_hWndCalc = NULL;
// calc.exeを探す
BOOL CALLBACK EnumWindowsProc ( HWND hWnd,
LPARAM lParam )
{
BOOL bResult;
// タイトルを取得
int nLength = GetWindowTextLength ( hWnd );
char *pszTitle = new char[ nLength + 1 ];
memset ( pszTitle, 0, nLength + 1 );
GetWindowText ( hWnd, pszTitle, nLength + 1 );
// タイトルが"電卓"のときは成功
if ( 0 == lstrcmp ( "電卓", pszTitle ) )
{
g_hWndCalc = hWnd;
bResult = FALSE;
}
else
{
bResult = TRUE;
}
delete[] pszTitle;
return bResult;
}
int WINAPI WinMain ( HINSTANCE,
HINSTANCE,
char *,
int )
{
// 電卓のウィンドウハンドルを取得する
EnumWindows ( EnumWindowsProc, 0 );
// 電卓が起動していないとき
if ( NULL == g_hWndCalc )
{
MessageBox ( NULL,
"電卓が起動してから実行してください",
"エラー",
MB_ICONSTOP | MB_OK );
return 0;
}
else
{
MessageBox ( NULL,
"OKを押した後、300ms後に電卓のバージョン情報を表示するための自動操作を行います",
"確認",
MB_OK );
}
// 念のため、300ms待機
Sleep ( 300 );
// 電卓をアクティブにする
SetForegroundWindow ( g_hWndCalc );
// Alt Keyを押す(メニューを選択)
keybd_event ( VK_MENU, 0, 0, NULL );
Sleep ( 0 );// 0ms待機
keybd_event ( VK_MENU, 0, KEYEVENTF_KEYUP, NULL );
Sleep ( 300 );// 300ms待機
// H Keyを押す(ヘルプを選択)
keybd_event ( 'H', 0, 0, NULL );
Sleep ( 0 );// 0ms待機
keybd_event ( 'H', 0, KEYEVENTF_KEYUP, NULL );
Sleep ( 300 );// 300ms待機
// A Keyを押す(バージョン情報を選択)
keybd_event ( 'A', 0, 0, NULL );
Sleep ( 0 );// 0ms待機
keybd_event ( 'A', 0, KEYEVENTF_KEYUP, NULL );
return 0;
}
|