by konisi » 2008年3月02日(日) 14:18
書いた文章 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]こんなコードを作ってみましたが、どうでしょう?
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Declare Function AppendMenu Lib "USER32.DLL" Alias "AppendMenuA" (hMenu As HMENU,uFlags As DWord,uIDNewItem As DWord,lpNewItem As *Byte) As Long
Dim hMenu_RightMenu As HMENU
Const hMenu_RightMenu_ID1 = 10001
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Dim pa As POINTAPI
Select Case dwMsg
Case WM_RBUTTONUP
pa.x=LOWORD(lParam)
pa.y=HIWORD(lParam)
ClientToScreen(hWnd,pa)
TrackPopupMenu(hMenu_RightMenu,TPM_LEFTALIGN,pa.x,pa.y,0,hMainWnd,ByVal 0)
Case WM_COMMAND
Select Case LOWORD(wParam)
Case hMenu_RightMenu_ID1
MessageBox(hMainWnd,"Test OK","ok",MB_OK)
MainWndProc=0
Exit Function'イベントプロシージャ側で使える情報はなくなった
End Select
End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
Sub MainWnd_Destroy()
DestroyMenu(hMenu_RightMenu)
TestMenu_DestroyObjects()'プロジェクト名によって異なる。
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hMenu_RightMenu=CreatePopupMenu()
AppendMenu(hMenu_RightMenu,0,hMenu_RightMenu_ID1,"TEST")
End Sub
よく見たら読み違えていました。すみません。
テキストファイルに限らないのであれば、次の方法が使えます。
レジストリHKEY_CLASSES_ROOT\*\shellのサブキーに適当な名前のキーを追加し、規定値を「署名を貼り付け」にします。
次に、commandという名前のキーを先ほど作ったキーのサブキーに追加します。
commandの規定値を、実行ファイルに渡されるコマンドにします。ファイル名は%1等としてください。
例:
HKEY_CLASSES_ROOT\*\shell\append = 署名を貼り付け
HKEY_CLASSES_ROOT\*\shell\append\command = C:\Test.exe "%1"
[hide=書いた文章]こんなコードを作ってみましたが、どうでしょう?
[hide][code]Declare Function AppendMenu Lib "USER32.DLL" Alias "AppendMenuA" (hMenu As HMENU,uFlags As DWord,uIDNewItem As DWord,lpNewItem As *Byte) As Long
Dim hMenu_RightMenu As HMENU
Const hMenu_RightMenu_ID1 = 10001
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Dim pa As POINTAPI
Select Case dwMsg
Case WM_RBUTTONUP
pa.x=LOWORD(lParam)
pa.y=HIWORD(lParam)
ClientToScreen(hWnd,pa)
TrackPopupMenu(hMenu_RightMenu,TPM_LEFTALIGN,pa.x,pa.y,0,hMainWnd,ByVal 0)
Case WM_COMMAND
Select Case LOWORD(wParam)
Case hMenu_RightMenu_ID1
MessageBox(hMainWnd,"Test OK","ok",MB_OK)
MainWndProc=0
Exit Function'イベントプロシージャ側で使える情報はなくなった
End Select
End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
Sub MainWnd_Destroy()
DestroyMenu(hMenu_RightMenu)
TestMenu_DestroyObjects()'プロジェクト名によって異なる。
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hMenu_RightMenu=CreatePopupMenu()
AppendMenu(hMenu_RightMenu,0,hMenu_RightMenu_ID1,"TEST")
End Sub[/code][/hide]
[/hide]よく見たら読み違えていました。すみません。
テキストファイルに限らないのであれば、次の方法が使えます。
レジストリHKEY_CLASSES_ROOT\*\shellのサブキーに適当な名前のキーを追加し、規定値を「署名を貼り付け」にします。
次に、commandという名前のキーを先ほど作ったキーのサブキーに追加します。
commandの規定値を、実行ファイルに渡されるコマンドにします。ファイル名は%1等としてください。
例:
HKEY_CLASSES_ROOT\*\shell\append = 署名を貼り付け
HKEY_CLASSES_ROOT\*\shell\append\command = C:\Test.exe "%1"