BCB Client

- C++ Builderを用いたWindowsプログラミングメモ -

GetActiveWindow [アクティブウィンドウのハンドルを取得する]

アクティブウィンドウハンドルの取得と
次のZ順位のウィンドウハンドルを取得を試してみる。

GetActiveWindow アクティブウィンドウのハンドルを取得
GetNextWindow  指定されたハンドルの次の順位のウィンドウハンドルを取得

getactivewindow.png


 ←こんな感じでフォームを作ってみた









TEdit名   ActiveHandleEdit, NextHandleEdit, ActiveTitleEdit, NextTitleEdit
TButton名 GetHandleBtnとしました。

GetHandleBtnを押すと、アクティブウィンドウのハンドルとタイトル、
及び次の順位となるハンドルとタイトルを表示してくれます。

ボタンを押すときは常に自アプリがアクティブウィンドウとなる為
表示されるハンドルとタイトルは自アプリのものです。
また、次のハンドルはspy++などで見ると、確かに次のハンドルが表示されています。


作ってはみたものの、、これはあんまし使えない?



<Unit1.cpp>
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::GetHandleBtnClick(TObject *Sender)
{

	// アクティブウィンドウのハンドルを取得
	HWND acthWnd  = GetActiveWindow();

	// アクティブウィンドウの次の順位のウィンドウハンドルを取得
	HWND nexthWnd = GetNextWindow(acthWnd, GW_HWNDNEXT);


	// 確認の為、ハンドルからタイトルを取得します
	// 前回と同様にタイトル長を取得
	int actLen  = GetWindowTextLength(acthWnd)  + 2;
	int nextLen = GetWindowTextLength(nexthWnd) + 2;

	// タイトル格納用に確保
	char *actTitle  = (char *)malloc(actLen);
	char *nextTitle = (char *)malloc(nextLen);

	// それぞれのタイトル取得
	GetWindowText(acthWnd,  actTitle,  actLen);
	GetWindowText(nexthWnd, nextTitle, nextLen);

	// Editコンポーネントへ表示
	ActiveHandleEdit->Text = IntToHex((int)acthWnd, 8);
	NextHandleEdit->Text   = IntToHex((int)nexthWnd,8);

	ActiveTitleEdit->Text = actTitle;
	NextTitleEdit->Text   = nextTitle;

	// 領域解放
	free(actTitle);
	free(nextTitle);
}
//---------------------------------------------------------------------------

[ トップ | 一覧 | 前へ | 次へ ]

  • トップ
  • 一覧
  • リンク
  • 掲示板

Copyright © BCB Client. All Rights Reserved. Template by ネットマニア