Qtで実現するWindowsネイティブ機能対応のフルフレームレスウィンドウ
QtにおけるWindowsネイティブ機能対応のフレームレスウィンドウ実装
Qtアプリケーションで、Windowsのネイティブなタイトルバーや枠線を完全に除去しつつ、同時にサイズ変更、最大化、最小化、そしてDWM (Desktop Window Manager) による美しいシャドウといったOS本来のウィンドウ機能を保持する方法について解説します。
標準のQt::FramelessWindowHintを使用すると、多く ...
10月3日 08:26 投稿
関数の改ざんによるコードインジェクション
概要
関数の改ざんによるコードインジェクションは、VirtualAlloc/Ex などの WinAPI 呼び出しを使用せずに、新しいコードで元の関数のバイトを置き換えることで、関数が異なるロジックを実行するようにすることができます。この技術では、踏み台となる関数のアドレスが必要です。
(1)ターゲット関数の選択
ローカルで関数のアドレスを取得するのは簡単ですが、どの関数 ...
8月29日 03:03 投稿
WinCEにおけるGetForegroundWindow使用時の疑問
プロジェクトのナビゲーション機能実装中に、特定の条件下でロードイング画面が表示されない現象が発生。この問題の原因として、Windows APIのGetForegroundWindow()関数呼び出しが関与していることが判明した。この関数はアクティブウィンドウのハンドルを取得する目的で使用されていたが、意図せずに画面表示に影響を与えていた。
{
HWND activeWindow = GetFor ...
7月10日 19:00 投稿
ウィンドウフックの仕組みと利用方法
注意: システム全体に影響するフックを設定する場合、フック関数はDLL内に配置する必要があります。
SetWindowsHookEx(
idHook: Integer; {フックの種類}
lpfn: TFNHookProc; {関数ポインタ}
hmod: HINST; {フック関数を含むモジュールのハンドル (EXEまたはDLL); 通常はHInstanceを使用; 現在のスレッドの場合は0も可能}
dwThreadId: DWORD {関 ...
6月12日 17:38 投稿
ASP.NET Core開発におけるよくある問題とその解決策
1. SingletonサービスがScopedサービスを解決できないエラー
「Cannot resolve scoped service 'AlgoTag.Models.AlgoContext' from root provider.」というエラーが発生することがあります。これは、ASP.NET Coreの依存関係の注入(DI)におけるライフサイクルの問題です。
通常、ライフサイクルが長いSingletonサービスが、ライフサイクルが短いScopedサービスに依存する ...
5月19日 12:00 投稿
C++によるPrintWindowを用いたウィンドウキャプチャの実装
本実装では、C++とWindows APIを使用して特定のウィンドウのスクリーンショットを取得します。CreateDIBSection関数により、アプリケーションが直接書き込めるデバイス非依存ビットマップ(DIB)を作成し、メモリ内のビットマップデータへのポインタを提供します。
PrintWindow関数はD3Dでレンダリングされるウィンドウ(ExcelやWindows 10のビデオプレイヤーなど)のキャプ ...
5月15日 23:21 投稿