[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/09/26(Tue) 17:06
投稿者名:シーモア
Eメール:
URL :
タイトル:
HOTKEYに右クリックを登録したいのでコードが知りたい
システムに先に取られてできないような気がしますが、
可能ならば、右クリックをHOTKEY登録したいのですが
コードがわかりません

Public Const HOTKEYF_SHIFT = &H1  '[Shift]キー
Public Const HOTKEYF_CONTROL = &H2 '[Ctrl]キー
Public Const HOTKEYF_ALT = &H4  '[Alt]キー
Public Const HOTKEYF_EXT = &H8  '[ESC]キー?
Public Const VK_HOME          As Long = &H24 'Homeキー

上記のようなコードがコードが右クリックにも割り当ててないでしょうか?
ご存知の方がいましたらおしえてください

投稿時間:2006/09/27(Wed) 10:16
投稿者名:シーモア
Eメール:
URL :
タイトル:
言い換えますと右クリックメニューを出したくないということです
何でもいいのでHOTKEY登録をして
HotKeyProc で
If uMsg = WM_LBUTTONDOWN Then
のようにすれば「右クリックをした」という判定はできるのですが
右クリックメニューが表示されてしまいます
HOTKEYを使わないでDirectInputDevice8を用いた方法でも結果は同じです
右クリックしたときに、右クリックメニューを出さない方法はないでしょうか

Public Const WM_RBUTTONDOWN = &H205
Public Sub InitHotkey()
    Dim lngResult As Long
    glngWndProc = SetWindowLong(frmControl.hwnd, _
                               GWL_WNDPROC, _
                               AddressOf HotKeyProc)
    lngResult = RegisterHotKey(frmControl.hwnd, 0, 0, WM_LBUTTONDOWN)
End Sub

Public Function HotKeyProc(ByVal hwnd As Long, _
                        ByVal uMsg As Long, _
                        ByVal wParam As Long, _
                        ByVal lParam As Long) As Long
    On Error GoTo ErrorHandler
    If uMsg = WM_LBUTTONDOWN Then
        Debug.Print "WM_LBUTTONDOWN"  <--ここに入れば右クリックした
    End If
    HotKeyProc = CallWindowProc(glngWndProc, _
                                hwnd, _
                                uMsg, _
                                wParam, _
                                lParam)
ErrorHandler:
End Function

投稿時間:2006/09/27(Wed) 15:05
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 言い換えますと右クリックメニューを出したくないということです
> 右クリックしたときに、右クリックメニューを出さない方法はないでしょうか
サブクラス化して、WM_CONTEXTMENU を握り潰すとか。
http://hanatyan.sakura.ne.jp/vbhlp/sscdll.htm
http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu9.htm

投稿時間:2006/09/27(Wed) 15:40
投稿者名:シーモア
Eメール:
URL :
タイトル:
Re^2: 言い換えますと右クリックメニューを出したくないということです
> > 右クリックしたときに、右クリックメニューを出さない方法はないでしょうか
> サブクラス化して、WM_CONTEXTMENU を握り潰すとか。
> http://hanatyan.sakura.ne.jp/vbhlp/sscdll.htm
> http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu9.htm
ありがとうございます
まず
(プログラマのメモ帳さんのサイト)
[指定したホームページが存在しないか、
お客様のご都合で停止させて頂いております]
SimpleSubClass.dll
を取得することができませんでした
あと「右クリックを禁止する」ということではなくて、
『「右クリックでメニューを出さずに、別の処理をしたい」
http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu9.htm
のように、自アプリケーション上だけではなく、例えばデスクトップなど
どこで行ったとしても関知して処理したい』ということなのですが
不可能でしょうか...

投稿時間:2006/09/27(Wed) 16:31
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 言い換えますと右クリックメニューを出したくないということです
> あと「右クリックを禁止する」ということではなくて、
> 『「右クリックでメニューを出さずに、別の処理をしたい」

禁止はしていませんよ、コンテキストメニューの表示のメッセージ(命令)を
横取り(無視)しているだけで、違う処理に差し替える事も可能です。


> のように、自アプリケーション上だけではなく、例えばデスクトップなど
> どこで行ったとしても関知して処理したい』ということなのですが

他のアプリのフックは、VBでは無理のようです。

投稿時間:2006/09/28(Thu) 09:53
投稿者名:シーモア
Eメール:
URL :
タイトル:
Re^4: 言い換えますと右クリックメニューを出したくないということです
ありがとうございます

> 他のアプリのフックは、VBでは無理のようです。
DirectInputDevice8を用いてどこででも右クリックを関知することはできました
但しメニューは表示されてしまいますのですぐに消すという方法で対処しようかと思います

ちなみにですが、レジストリー
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer
にキー「NoViewContextMenu」を作成しREG_DWORD "0X00000002"という値を設定して再起動すると
デスクトップとエキスプローラの詳細欄では右クリックメニューを表示しないようにはできました
(これだけでは役に立ちませんが)

花ちゃんさん、どうも貴重は情報をありがとうございました