ウィンドウハンドルを得るには? (Windows)

Windows 固有の処理を行いたい場合にはウィンドウハンドルがどうしても必要になる事があります。

[XE4 以降]

WindowHandleToPlatform() 関数に FireMonkey フォームのハンドルを渡すと、TWinWindowHandle クラス が戻り値として返ってくるので、Wnd プロパティを参照すれば Windows の (フォームの) ウィンドウハンドルを得る事ができます。

uses
  ..., FMX.Platform.Win, Winapi.Windows;


var
  WindowHandle: HWND;
begin
  WindowHandle := WindowHandleToPlatform(Self.Handle).Wnd;
end;

[XE3 以前]

FmxHandleToHWND() 関数に FireMonkey フォームのハンドルを渡すと、戻り値として Windows の (フォームの) ウィンドウハンドルを得る事ができます。

uses
  ..., FMX.Platform.Win, Winapi.Windows;


var
  WindowHandle: HWND;
begin
  WindowHandle := FmxHandleToHWND(Self.Handle);
end;

FmxHandleToHWND() は XE4 以降でも使えるのですが、非推奨となっています。なお、フォームにはウィンドウハンドルがありますが、コントロールにウィンドウハンドルはありません

See Also:


 BACK