Written in Japanese(UTF-8)
2014.12.20
INASOFT
2014.12.20
INASOFT
/トップ/マウスのお供 ダウンロード/WebHelp/ヘルプトップ
連携ソフト作成方法
ここでは、外部入力の受付許可で受付可能なソフトを作成する方法を記載します。
マウスのお供のウィンドウに対し、WM_COPYDATAを使ってUnicodeで文字列情報を送ることにより実現します。この際、dwDataには102414という値を入れます。
サンプルプログラムを以下に示します。
#include <windows.h> #include <stdio.h> // ========================== // 「マウスのお供」連係機能 // -------------------------- #define CDWM_UNICODETEXT_ID 102414 // WM_COPYDATAを用いて、マウスのお供へメッセージを送信する int sendtk(HWND hWnd, const wchar_t *str) { HWND hWndTK = FindWindow(L"mousenootomo", NULL); if ( hWndTK ) { // 連携ソフト検出 COPYDATASTRUCT MyCDS; MyCDS.dwData = CDWM_UNICODETEXT_ID; MyCDS.lpData = (void *)str; MyCDS.cbData = (lstrlen(str)+1)*sizeof(wchar_t); SendMessage(hWndTK, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&MyCDS); puts("マウスのお供へメッセージを送信しました。"); return 1; } else { puts("マウスのお供が見つかりません。"); return 0; } } int wmain() { // 自分のウィンドウハンドルを渡さなければならないので // 送信元としてコンソールウィンドウのハンドルを取得しておく。 // (マウスのお供側で、送信元ウィンドウハンドルに対する生存確認を // しているため、すぐになくなるハンドルやNULLを渡すことはできない) wchar_t strConsoleWindowTitle[1024]; HWND hWndConsole; // (エラー処理は省略) GetConsoleTitle(strConsoleWindowTitle, sizeof(strConsoleWindowTitle)); hWndConsole = FindWindow(NULL, strConsoleWindowTitle); // コマンドライン文字列(プログラム名+引数)をマウスのお供へ送信する return sendtk(hWndConsole, GetCommandLine()); }
注意することとしては以下の通りです。
- マウスのお供側で、送信元のウィンドウハンドルの生存を確認しています。これは、送信元のウィンドウが閉じたら、外部入力された文字列を削除するためです。そのため、送信元ウィンドウハンドルには適当にすぐ閉じるウィンドウのハンドルを入れたり、NULLを入れたりすることが許されていません。このサンプルプログラムでは、コンソールウィンドウのハンドルを渡すことによりこの要件を満たしています。コンソールウィンドウが閉じると、外部入力された文字列は消えます。
- 渡される文字列はUnicodeになっていなければなりません。WM_COPYDATAによる文字列の渡し方は、通常のWM_COPYDATAの使用方に従うことになります。
- マウスのお供のウィンドウは、ウィンドウクラス "mousenootomo" を探すことにより行います。
設定
目次へ
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は、右上の作成日付の時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
■このページに関するご意見をお待ちしております → フィードバックページ