[スタート]メニューの無効化

解決


ひよっこ  2003-04-18 20:45:14  No: 106753

Windowsの[スタート]メニューを一時的に使用できなくすることって出来ますか?
[スタート]メニュー非表示設定にしても、使用することが出来るのでVBあたりで無効化したいのですが、方法がありましたら教えてください。
よろしくお願いします。


DotL  2003-04-19 07:51:43  No: 106754

VBではなくVC++でやるべきです。確実なのはWM_USER+260のメッセージがタスクバーに届かないようにします。たとえば、

(フックのセット)

フックハンドル=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,NULL,GetWindowThreadProcessId(FindWindow("Shell_TrayWnd",""),NULL));

(フックプロシージャ)

LRESULT GetMsgProc(int nCode,WPARAM wParam,LPARAM lParam)
{
    if (nCode>=0)
    {
        if (((MSG*)lParam)->message==WM_USER+260) (((MSG*)lParam)->message=0);
    }
    return CallNextHookEx(フックハンドル,nCode,wParam,lParam);
}

でもフックはだめですよねー?


ひよっこ  2003-04-22 09:49:01  No: 106755

>DotLさん書き込みありがとうございます。
C++はあまりバリバリでないので変な質問になってしまいますが
フックしたら起動中のアプリケーションすべてにもイベントが取得できなくなくなることですよね・・・?
極論、自分のアプリだけイベントが取得できればいいんですけど・・・
VBでは無理みたいですね・・・;失礼しました。


たかみちえ  URL  2003-04-22 15:34:46  No: 106756

フックは簡単に言うと、本来のウィンドウのプロシージャにメッセージが行く前に、
独自処理を通すっていうだけです。
そこで次のフックプロシージャもしくはウィンドウプロシージャにメッセージをそのまま渡すこともできるし、
そこで消してしまう(次のプロシージャにはそのメッセージはなかったことにする)ことも、変更することもできます。
  次のフックやウィンドウにはちゃんとメッセージは届きますし、イベントは届きますよ。

  多分あなたのパソコンにもいくつものフックアプリケーションが入ってると思います、フリーソフトではAgainTyper、窓立て2、マウ筋、秀Capsなどが入ります。
  簡単に言うと"〜Hook.dll"のような名前のあるDLLが、
その場にあるフリーソフトの多くは、フックを入れてるんでしょう。
  それらが入っていても、他のソフトは普通に動作しますよね。

  ただ確かに、VBでは不安定すぎるので、確実にC言語でやったほうがいいでしょう。
  Delphiでも十分可能ですけど、VBではDLLが作れないし独自定義のウィンドウメッセージの取得もつらいし、やはりちょっと条件が悪すぎます^^;確かに、両方とも知恵で切り抜けている人もいますが…。

  CもDelphiも、フックソフトを作るくらいの物を作れるだけのものなら、
お金をかけずに手に入ります。
(C言語はBCC、DelphiはDelphi6Personalが、ともにBorlandで登録してダウンロード可能)


ひよっこ  2003-04-28 03:04:48  No: 106757

>たかみちえ様  詳しい助言ありがとうございます!
今までもHookが必要な場面は遭遇したのでしたが、無視して逃げていました・・・皆様の助言を元に、これを機会に勉強しようと思います。
本当にありがとうございました!


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

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






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