アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在マウスフックを利用して、マウスの左ボタンが上げられた座標を
エディットコントロールに表示するプログラミングを作成しています。

自作ウインドウ上でマウスを押したところ、座標はしっかりと表示されたのですが、
他のアプリケーション上やデスクトップ上で押しても反応してくれません。

いろいろググってみると、#pragma data_seg()を使って変数を共有する必要があるとのこと…。
しかしどうやっても解決しません。

どなたか助けて下さい!!

#pragma data_seg("MY_DATA")
POINT pt[100] = {0};
HWND hEdit = 0;
int top = 0;
TCHAR szBuf[1024] = {0};
#pragma data_seg()

……

EXPORT LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp)
{
TCHAR str[100];
MOUSEHOOKSTRUCT *pmh;

pmh = (MOUSEHOOKSTRUCT *) lp;

if(nCode < 0) return CallNextHookEx(hHook, nCode, wp, lp);
if(wp == WM_LBUTTONUP){
pt[top].x = pmh->pt.x;
pt[top].y = pmh->pt.y;
wsprintf(str, TEXT("x: %d, y: %d, top: %d\r\n"), pt[top].x, pt[top].y, top);
lstrcat(szBuf, str);
SetWindowText(hEdit, szBuf);
top++;
return CallNextHookEx(hHook, nCode, wp, lp);
}
return CallNextHookEx(hHook, nCode, wp, lp);
}

<環境>
Visual C++ 2005 Express Edition

A 回答 (1件)

> 他のアプリケーション上やデスクトップ上で押しても反応してくれません



同一の実行ファイルでグローバルフックを行おうとしているのでしょうか?
一般的には別の DLL 等を使わないとグローバルフックは出来ないと思われます。
    • good
    • 0
この回答へのお礼

x415f484fさん、ありがとうございます。

一応呼び出し元のファイルとそれとは別にDLLを作ってそれらをリンクしています。
上記のMyHookProc関数はDLLにおけるフックプロシージャです。。

お礼日時:2008/04/10 20:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!