Windows USERは、 Microsoft Windows オペレーティング システムのコンポーネントであり、シンプルなユーザー インターフェイスを構築するためのコア機能を提供します。このコンポーネントはすべてのバージョンの Windows に存在し、ウィンドウ管理、メッセージの受け渡し、入力処理、標準コントロールの機能が含まれています。
機能と役割
Windows USERは、Microsoft Windowsのコアユーザーエクスペリエンスの大部分を提供します。歴史的には、次の機能を担当していました。[1] [2]
- ウィンドウを描画する(プリミティブを描画するためのデバイスに依存しない API としてGDI を使用する)
- 重なり合ったウィンドウを他のウィンドウの後ろに隠す
- ウィンドウのサイズと位置
- 標準的なウィンドウ管理コントロール(クローズボックスやタイトルバーなど)をすべて提供する
- 標準のWindowsメニューバーを提供する
- 標準コントロール(ボタン、リストボックス、編集ボックスなど)の提供
- ダイアログボックス管理(ショートカットキー、タブキー処理)の提供
- マウスとキーボードからのすべてのユーザー入力を処理する
- デスクトップの背景画像( Windows 8まで)
- すべての標準的な視覚要素を描画する
- 動的データ交換を使用したプロセス間通信
- マウスポインターカーソルの表示と管理
- データ転送(クリップボード)
Windows が徐々に大きくなり、より適切に分割されるようになるにつれて、Windows USER は他のコンポーネントと連携してこの機能を提供するようになりました。
- コントロール: Windows 95以降、新しいコントロールは別の共通コントロール コンポーネントに配置されました。Windows XP以降、標準コントロールの新しい実装も同じコンポーネントに移動されました。
- 標準ビジュアル: Windows XP 以降では、ビジュアル要素は Theming コンポーネントによって描画されます。
- Windows 管理エクスペリエンス: Windows Vista以降、 Aeroテーマが有効になっている場合、描画の標準ウィンドウ管理は Windows USER からデスクトップ ウィンドウ マネージャーに移動されました。Windows 8以降、ウィンドウ フレームは、 Windows プレインストール環境を除き、常に DWM によって描画されます。
- プログラム間通信: Windows 3.1 以降、プログラム間通信の推奨モデルとして、Dynamic Data Exchange に代わってObject Linking and Embedding が採用されました。
- メニューバー: Windows 7以降では、メニューバーとコンテキストメニューの代わりにリボンインターフェイスが推奨されています。これはUIRibbonコンポーネントによって提供されます。[3]
- デスクトップの壁紙: Windows 8以降、デスクトップの壁紙の描画はWindows エクスプローラーに移動されました。ただし、 Windows プレインストール環境では、デスクトップの壁紙は
WallpaperHost.exeアプリケーションによって描画されます。ユーザーがデスクトップの背景を描画していた場所には、DWM が有効になっている場合を除き、黒が描画されます。DWM が有効になっている場合は、代わりにユーザーのアクセントが描画されます。 - マウス ポインター: Windows Vista以降では、DWM が有効になっている場合、マウス ポインターの描画は DWM によって管理されます。ただし、Windows 11
%SystemRoot%\System32\DWMInit.dll以降では、ファイルが存在しない限り、DWM が無効になっているとマウス ポインターは表示されなくなります。
開発者エクスペリエンス
Windows USERは、Windowsアプリケーションの構築に使用される抽象化を実装します。これには以下が含まれます。
HWND(ウィンドウのハンドル)
はHWND、Windows 開発プラットフォームにおける視覚的な表示と入力の基本単位です。すべての視覚要素は、独自の HWND を持つか、より大きな の一部として存在しますHWND。Windows USER の多くの関数は、サイズ、位置、タイトルなどの HWND のプロパティを操作します。HWNDまた、各 には、メッセージを配信するための通信チャネル ( WNDPROC- ウィンドウ プロシージャ) もあります。
ウィンドウはツリーとして管理され、デスクトップ ウィンドウが階層のルートになります。子ウィンドウは通常 (常にではありませんが) 視覚的には親ウィンドウ内に含まれます。
MSG(メッセージ)
アプリケーションとオペレーティング システムは、メッセージを使用して HWND と通信します。ウィンドウ メッセージは、ターゲットHWND、メッセージ コード、およびマウスの位置などのその他の詳細の組み合わせです。
- メッセージループ
Windows USER への呼び出しを適切に組み合わせることで、Windows アプリケーションはメッセージを処理します。コア Windows メッセージ ループ (、GetMessageおよびTranslateMessageへの呼び出しを含むDispatchMessage) は、あらゆる Windows アプリケーションの中核となります。
Windows USER に関連する開発者機能は、C ヘッダー ファイル winuser.h で提供されます。
実装
16 ビット バージョンの Windows では、Windows USER は user.exe というファイルとして実装されていました。ここでのファイル拡張子は誤った名称であり、Windows USER は実際には常にダイナミック リンク ライブラリでした。
32 ビット バージョンの Windows では、32 ビット バージョンの Windows USER は user32.dll と呼ばれ、System32 ディレクトリに配置されます。一方、16 ビット アプリケーションとの互換性は、user.exe の修正バージョンも存在することで提供されます。
64 ビット バージョンの Windows では、Windows USER の 64 ビット実装は user32.dll と呼ばれ、System32 ディレクトリにあります。一方、変更された 32 ビット バージョン (user32.dll とも呼ばれます) は SysWOW64 ディレクトリにあります。
参照
参考文献
外部リンク
- WOW64 のフォルダ、変数、値、参照に関する包括的なリファレンス
