デスクトップの監視

解決


ケロロ2等兵  2005-06-23 07:24:05  No: 58018

いつもお世話になっていますケロロです。
開発環境は 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でとれるのかです

それとイベントですがマウスがドラッグしたかとかファイルのコピー・貼り付け等を感知する機能というのはあるのでしょうか?
ググったりして調べてはいるのですがめぼしい情報にあたらないです

すみませんがご教授ねがえたらと思います
それでは


うぃろ  2005-06-23 09:47:03  No: 58019

フックについてはあまり詳しくないのですが、思いついた点を挙げてみます。

> それとイベントですがマウスがドラッグしたかとかファイルのコピー・貼り付け等を感知する機能というのはあるのでしょうか?
ドラッグは、WM_MOUSEMOVEイベントを受け取ったときにマウスボタンが押されていたらドラッグなのでは?
ファイルのコピー・貼り付け等はWM_COMMANDで対処できると思います。
#アクセラレータについてはもしかしたら何かしら対処しないといけないこともあるかもしれません。

> ノートパッドをどうしたらデスクトップにかえるのかそもそもFindWindowでとれるのかです
この状況ではフックは難しい気もしますが…

#実際に試してみたわけではないので、正しくないかも


ケロロ2等兵  2005-06-24 08:18:14  No: 58020

思いついた点だけでもお返事もらえてうれしいです
ありがとうございます
デスクトップでファイルの移動を禁止するにはどうしたらいいかと聞いたときに
フック系かなといわれたので
まだ調べはじめたばかりなのでまだまだがんばっていきたいと思います

今現在ではWM_MOUSEMOVEイベント・WM_COMMANDどちらもしっぱいしました
MOVEイベントでは完全に失敗しました。使い方を間違ってるだけなんでしょうけど
WM_COMMANDは本当に今現在使い方がわからないので今調べてる最中ですすみません
アクセラレータというのは追加・拡張機能と調べた結果そう思ったわけなのですが
つまりソフトをつかってということでしょうか

重ねてお返事ありがとうございます


ケロロ2等兵  2005-08-18 09:38:55  No: 58021

ずいぶん長い間放置に近く申し訳ありません
意志が弱いようでなかなか進めないのかなと考えこんでおります
1回質問するとその質問にたいして大抵の方が解決されてるようで
すごいなと思います

で今まで何をしてたのかといいますと
「猫でもわかるWindowsプログラム」の書籍をかって勉強中でした
今は中身理解とまではいかないですが本見ながらなんとかプログラムうごかして
ばたばたしてます
やっと3分の1終わった程度です
まだまだ先はながそうです・・・

今回申し訳ありませんが別に聞きたいことができたのでこちらは一時解決とさせていただきます
申し訳ありません
またレベルがおっついてきましたら聞きたいと思いますのでその時がきましたら
よろしくお願いします
どうもすみませんでした


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加