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 投稿