ページ 11

LhaplusやWinRARのようなDLL

Posted: 2006年3月21日(火) 12:22
by str200
最近ActiveBasicを使い始めたものですが、
私はファイルを右クリックしたときに出るLhaplusやWinRARのような
ポップアップ形式のメニューを作りたいのですがプログラミングの初心者
であるためよくわかりません。
LhaplusやWinRARはDLLファイルを使っているという事はレジストリを調べて
わかったのですが。
どなたか教えて下さい。

Re: LhaplusやWinRARのようなDLL

Posted: 2006年3月22日(水) 04:03
by Sinryow
最近ActiveBasicを使い始めたものですが、
私はファイルを右クリックしたときに出るLhaplusやWinRARのような
ポップアップ形式のメニューを作りたいのですがプログラミングの初心者
であるためよくわかりません。
LhaplusやWinRARはDLLファイルを使っているという事はレジストリを調べて
わかったのですが。
どなたか教えて下さい。
LhaplusやWinRARは普段使っていないので分からないですが
エクスプローラとかでファイルを右クリックして出るようなポップアップでしたら,TrackPopupMenu関数を利用して出すことができます。
この時,表示するメニューはABのメニューエディタで作成できます。

メニューIDを「IDM_TestMenu」にしたとして,以下のような感じで記述します。(サンプルプログラムの内容をそのまま持ってきている点にご注意下さい)

コード: 全て選択

' ウィンドウ上で右クリックすることでメニューを表示することを想定
Sub MainWnd_RButtonDown(flags As Long, x As Integer, y As Integer)
	Dim hSubMenu As HMENU, pt As POINTAPI

	' メニューハンドルは hMenu_[メニューID] となるので,このことから
	' 子メニューのハンドルをGetSubMenuで取得する。
	hSubMenu = GetSubMenu(hMenu_IDM_TestMenu, 1)

	' ポップアップメニューを表示する位置を求める。
	pt.x = x
	pt.y = y
	ClientToScreen(hMainWnd, pt)

	' ポップアップメニューを表示する。
	TrackPopupMenu(hSubMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hMainWnd, ByVal NULL)
End Sub
サンプルを以下の場所にアップしておきます。
http://www.sinryow.net/hitori/TrackPopupMenu.lzh
※ウィンドウ上の適当な場所を右クリックするとポップアップメニューが出ます

参考ページ:http://www.kumei.ne.jp/c_lang/sdk/sdk_44.htm

Re: LhaplusやWinRARのようなDLL

Posted: 2006年3月22日(水) 14:15
by ノッチ
>
最近ActiveBasicを使い始めたものですが、
> 私はファイルを右クリックしたときに出るLhaplusやWinRARのような
> ポップアップ形式のメニューを作りたいのですがプログラミングの初心者
> であるためよくわかりません。
> LhaplusやWinRARはDLLファイルを使っているという事はレジストリを調べて
> わかったのですが。
> どなたか教えて下さい。
> LhaplusやWinRARは普段使っていないので分からないですが
> エクスプローラとかでファイルを右クリックして出るようなポップアップでしたら,TrackPopupMenu関数を利用して出すことができます。
恐らくstr200さんの実現したいことはエクスプローラーの右クリック
メニューに独自のメニューを追加したいということだと思います。
そうだとすると、この実現にはレジストリをいじるだけでできます。
と言ってもレジストリをいじるのは知識がないと危ないです。&僕はよくわかりません。
予想ではHKEY_CLASSES_ROOTか
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
あたりの"*"のところに全てのファイルに共通、".txt"等にその拡張子特有の
メニューを追加させて処理させるのだと思うのですが・・・。
このへんはレジストリに詳しい人の意見を聞いたほうがよろしいです。

Posted: 2006年3月23日(木) 00:11
by ゲスト
「シェルエクステンション」
っていう奴ですね。
私も詳しくないのでアドバイスすることは出来ないのですが、
C++やDelphiで書かれた同機能を有するソフトで、
いくつかソースを公開しているソフトがあったと思いますので、
まずはそちらを参考にしてみることから始めてはいかがでしょうか?