いつもお世話になっていますケロロです。
開発環境は Visual Studio C+6.0 Win2000proです
前回同じような質問をしたことがありまして今回再度挑戦しています
やりたいことはデスクトップ上でのファイルのコピー、切り取り、削除、ドラッグの禁止です。
前回はシステムフックが必要とのことでそのときはVBで聞いたのですが
全然わからないことばかりだったので棚に上げていました。
今回は http://www.doumo.jp/aon-java/jsp/postgretips/tips.jsp?tips=79
こちらを参考にして思考削除していました
なんとかサンプルを動かせるようになったのですが
DLL側でのデスクトップの条件がわからないのと
//フックインストール
__declspec( dllexport ) void CALLBACK HookInstall(void)
{
if ( g_hDll == NULL ) return;
HWND hWindow = FindWindow("notepad", NULL); **たぶんこのへんとしかわかりません
DWORD thid = GetWindowThreadProcessId(hWindow,NULL);
if ( thid == 0){
MessageBox(NULL,"メモ帳がなかった","エラー",MB_OK | MB_TOPMOST);
}
g_hHookWnd = SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)MyCallWndProc, g_hDll, thid );
if ( g_hHookWnd == NULL){
MessageBox(NULL,"フック失敗","エラー",MB_OK | MB_TOPMOST);
}
}
//
ノートパッドをどうしたらデスクトップにかえるのかそもそもFindWindowでとれるのかです
それとイベントですがマウスがドラッグしたかとかファイルのコピー・貼り付け等を感知する機能というのはあるのでしょうか?
ググったりして調べてはいるのですがめぼしい情報にあたらないです
すみませんがご教授ねがえたらと思います
それでは
フックについてはあまり詳しくないのですが、思いついた点を挙げてみます。
> それとイベントですがマウスがドラッグしたかとかファイルのコピー・貼り付け等を感知する機能というのはあるのでしょうか?
ドラッグは、WM_MOUSEMOVEイベントを受け取ったときにマウスボタンが押されていたらドラッグなのでは?
ファイルのコピー・貼り付け等はWM_COMMANDで対処できると思います。
#アクセラレータについてはもしかしたら何かしら対処しないといけないこともあるかもしれません。
> ノートパッドをどうしたらデスクトップにかえるのかそもそもFindWindowでとれるのかです
この状況ではフックは難しい気もしますが…
#実際に試してみたわけではないので、正しくないかも
思いついた点だけでもお返事もらえてうれしいです
ありがとうございます
デスクトップでファイルの移動を禁止するにはどうしたらいいかと聞いたときに
フック系かなといわれたので
まだ調べはじめたばかりなのでまだまだがんばっていきたいと思います
今現在ではWM_MOUSEMOVEイベント・WM_COMMANDどちらもしっぱいしました
MOVEイベントでは完全に失敗しました。使い方を間違ってるだけなんでしょうけど
WM_COMMANDは本当に今現在使い方がわからないので今調べてる最中ですすみません
アクセラレータというのは追加・拡張機能と調べた結果そう思ったわけなのですが
つまりソフトをつかってということでしょうか
重ねてお返事ありがとうございます
ずいぶん長い間放置に近く申し訳ありません
意志が弱いようでなかなか進めないのかなと考えこんでおります
1回質問するとその質問にたいして大抵の方が解決されてるようで
すごいなと思います
で今まで何をしてたのかといいますと
「猫でもわかるWindowsプログラム」の書籍をかって勉強中でした
今は中身理解とまではいかないですが本見ながらなんとかプログラムうごかして
ばたばたしてます
やっと3分の1終わった程度です
まだまだ先はながそうです・・・
今回申し訳ありませんが別に聞きたいことができたのでこちらは一時解決とさせていただきます
申し訳ありません
またレベルがおっついてきましたら聞きたいと思いますのでその時がきましたら
よろしくお願いします
どうもすみませんでした
ツイート | ![]() |