最終更新日 : 2003/11/16
 

しなちく関連資料


shinatiku with python :: clipwatch :: swget :: peeper.dll

ここにあるソース等は自由に使っても構いません。(sipc.lib,sipc.dllは除く)

peeper.dll

説明

shinatiku20031102a以降用のSHookラッパーライブラリ。メッセージフック用のダミーウィンドウをDLL内で用意しているので、煩わしい処理を書かずにSHook対応アプリケーションを作成出来ます。

公開関数

サンプル

#include <stdio.h>
#include <string>
#include "peeper.h"

#pragma comment(lib, "sipc")

// for sipc.dll
int WINAPI Send(const char* command, char* result, const int len);

// コールバック関数を用意してRegisterEventで登録するとイベントが流れてきます。
LRESULT CALLBACK Texture0Event(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
	switch (message) {
		// 左ボタンクリック
		case WM_LBUTTONDOWN: 
			{
				POINTS pt = MAKEPOINTS(lParam);
				printf("しなちくが左クリックで突っつかれた。(%ld, %ld)\n", pt.x, pt.y);
			}
			break;
		// マウス移動
		case WM_MOUSEMOVE: 
			{
				POINTS pt = MAKEPOINTS(lParam);
				printf("しなちくの上、座標(%ld,%ld)を通過。\n", pt.x, pt.y);
			}
			break;
		// 右ボタンクリック
		case WM_RBUTTONDOWN:
			PostMessage(hWnd, WM_QUIT, 0, 0);
			break;
		// ファイルのドラッグ&ドロップ
		case WM_DROPFILES:
			{
				int cnt;
				char path [MAX_PATH];
				char buf [1024];
				FILE* fp;
				HDROP hDrop = (HDROP)wParam;
				std::string script = "say \"";

				cnt = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
				for(int i = 0; i < cnt; i++) {
					DragQueryFile(hDrop, i, path, sizeof(path));
					fp = fopen(path, "r");
					if (fp != NULL) {
						while (fgets(buf, sizeof(buf), fp) != NULL) {
							script += buf;
						}
						fclose(fp);
					}
				}
				DragFinish(hDrop);
				script += "\"";
				Send(script.c_str(), buf, sizeof(buf));
			}
			break;

	}
	return 0;
}

// peeper.dllはコンソールアプリでも使用可能
int main(int argc, char* argv[])
{
	// peeper初期化
	if (!Initialize("sample"))
		return -1;

	// ドラッグ&ドロップON
	DragAccept(TRUE);

	// イベント登録
	RegisterEvent("texture", "0", Texture0Event);

	// 一連託生
	ShareTheSameFate();

	// メインループ
	MainLoop();

	// ドラッグ&ドロップOFF
	DragAccept(FALSE);

	// peeper終了
	Terminate();

	return 0;
}
	

更新履歴

2003/11/02 公開
2003/11/09 Initialize関数に引数を追加

ダウンロード

peeper20031109src.zip
peeper20031109bin.zip

※sipc.lib,sipc.dllはlsさん作です。