C++ によるコンソール自動迷路探索アルゴリズム

概要 本稿では、C++ と Windows API を利用してコンソール上で動作する自動迷路探索プログラムの実装例を紹介します。迷路の構造を管理するクラスと、探索を行うエージェントクラスを分離し、壁沿い探索アルゴリズムによりゴールまで到達する様子を描画します。 迷路フィールドの定義 まず、迷路のデータ構造と描画機能を担う MazeField クラスを定義します。内部では 2 ...

8月6日 11:51 投稿

C++によるBingデスクトップ壁紙自動取得と設定の実装

必要なライブラリと環境: vcpkgパッケージマネージャー libcurl(HTTP通信用) cJSON(JSON解析用) Visual Studio 2022 実装の流れ Bingの毎日更新される壁紙を自動で取得し、Windowsのデスクトップ背景に設定するプログラムを作成する。まず、Bingが提供している画像取得APIにアクセスする。 APIエンドポイント: https://cn.bing.com/HPImageArchive.aspx?format=js& ...

7月27日 23:24 投稿

Windows システムトレイアイコン情報の取得手法

Windows 10以前におけるアイコン情報取得の基本原理 SendMessage関数でTB_BUTTONCOUNTメッセージを送信し、ツールバーボタン数を取得します。ただしこの値は最新ではない可能性があります。TB_GETBUTTONメッセージでTBBUTTON構造体ポインタを取得後、対象プロセスのメモリにアクセスしdwDataフィールドを解析することで、アイコンハンドル・タイトル・プロセスパスを取得で ...

7月25日 01:52 投稿

Qtアプリケーションにおけるプラットフォーム依存キーフックの実装

Qtフレームワークはクロスプラットフォーム開発を可能にしますが、キーボードフックのようなプラットフォーム固有の機能を実装する場合、条件付きコンパイルによる対応が必要となります。WindowsプラットフォームではSetWindowsHookExなどのAPIを使用できますが、macOSでは同等の機能が提供されていません。 条件付きコンパイルを実現するための主要なポイント: プロジェ ...

7月20日 02:47 投稿

Qtでのシステムトレイアイコンのカスタム実装

ネイティブイベントフィルターの実装 システムトレイアイコンのカスタム実装には、プラットフォーム固有のメッセージ処理が必要です。以下のコードはWindows環境でのネイティブイベントフィルターの実装例です。 class CustomTrayIcon : public QObject, public QAbstractNativeEventFilter { public: bool nativeEventFilter(const QByteArray &eventType, void *mes ...

6月29日 19:36 投稿

C++によるコンソール版博餅ゲームの実装

コンソールにおけるサイコロの描画処理 C++のコンソールアプリケーションでは、GUIのように自由に図形を配置することはできませんが、文字と色を組み合わせることでサイコロを視覚的に表現できます。Windows APIのSetConsoleTextAttributeを利用して、出力の文字色を動的に変更する関数を定義します。4の目は赤色、それ以外は青色で描画し、枠線は白色とすることで、伝統的 ...

6月28日 20:00 投稿

グローバルマウスフックの作成

Windows環境でシステム全体にマウス操作を監視するためには、DLLを通じたグローバルフックの実装が必須です。以下の2段階の手順で実現可能です: フック機能を提供するDLLモジュールの作成 作成したDLLを呼び出すテストアプリケーションの実装 フックDLLの実装例 library GlobalMouseHook; uses SysUtils, Windows, Messages; var hHook: HHOOK; // マウス左 ...

6月15日 20:24 投稿

GUIアプリケーション開発とオブジェクト指向アプローチ

GUIユーザーインターフェースの構成要素 GUIアプリケーションは固定されたウィンドウ要素で構成されています。オペレーティングシステムはユーザーインターフェース要素を作成するための関数群を提供しますが、これらの関数は直接的にインターフェース要素に対応するものではありません。異なる機能を持つ関数を順次呼び出すことで、最終的にインターフェース要素が構築さ ...

5月19日 16:48 投稿

Windows APIを使用したビットマップキャプチャの実装

Windows APIのBitBlt関数を活用して、指定ウィンドウのスクリーンショットを取得する方法を解説します。この手法ではCreateDIBSectionを使用して、アプリケーションが直接書き込めるDIB(デバイス非依存ビットマップ)を作成します。 1、DibCaptureHelper.h #pragma once #include <windows.h> #include <string> class WindowBitmapCapture ...

5月11日 13:51 投稿