[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 00:36 / Filesize : 205 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build77



1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:54:24 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build76
pc11.2ch.net/test/read.cgi/tech/1233622578/

91 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:56:25 ]
9x/NTで動作が違ってても仕方ないと思うけど2000/XPで違うとかは勘弁してほしいな

92 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:00:31 ]
コードを書いたことがあるかどうかはこの際どうでもいい。
OSのバージョンで挙動がころころ変わるのは問題だと言っているのだ。

93 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:02:04 ]
どのAPI?

94 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:02:43 ]
GetModuleFileNameとか?

95 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:06:00 ]
GetVersion(Ex)だろ

返ってくるデータがころころ変わりすぎ
ほんと迷惑なAPIだよ・・・

96 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:06:14 ]
ロングファイル名対応以外になんか変化あったっけ?
UNC表記?

97 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:06:44 ]
>>95
ワロタw

98 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:07:04 ]
GetModule〜は95/98と2k/XPとそれ以降で違うんだっけ

99 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:09:08 ]
Windowsほど互換性に気を遣っているOSは少ないと思うけどなぁ



100 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:10:53 ]
GDIも9xだけ制限が厳しいことがよくある。
GetTextExtentPoint32での文字数は8192字(バイト)以内
CreatePenで2ポイント以上は実線しか作れない
パスで使用可能な描画関数が少ない

101 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:10:55 ]
>>99
お前の感想はどうでもいい

102 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:11:45 ]
まあ他OSがどうしているのかは興味のあるところ。

103 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:12:18 ]
9xは正確にはWin32じゃない(Win32c)から挙動が違ってても不思議ではない

104 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:13:05 ]
寡占企業なんだからちょっとくらい叩いても罰は当たらないと言ってみる

105 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:13:34 ]
今どき win9x のことを気にしないといけないなんて、大変ですねぇ。


106 名前:デフォルトの名無しさん [2009/03/01(日) 18:14:43 ]
XP/Vistaしか気にしない奴は.NETでも使ってろ

107 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:18:23 ]
98でも.NET2.0は入った気がするぞ

108 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:19:59 ]
しかし、LINQの使えない.NET Framework 2.0に用はない。

109 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:22:07 ]
あんまり古いOSにこだわり続けるのもどうなんかな・・・



110 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:23:37 ]
自分では使ったことないけれど、
Uniscribeは再頒布できないようなのに
細かなバージョンアップが続いていて大変そうな印象を持っている。

111 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:25:28 ]
>>109
むしろ古いOSに拘らないならわざわざWin32APIを直接叩く必要は無いでしょ

112 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:31:39 ]
別にXPでAPI叩いたっていいじゃないですか!

113 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:07:50 ]
家では未だに98SEな俺は特に気にしてない。

114 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:28:28 ]
OS によって挙動不審になるAPI;SystemParametersInfo()

115 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:39:49 ]
挙動不審じゃねーだろ

お前じゃあるまいし (w

116 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:03:40 ]
怪しい…

117 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:33:28 ]
TBSTYLE_EX_DRAWDDARROWSの設定されたツールバーのボタンサイズをうまく取得する方法ある?
普通にTB_GETBUTTONSIZEだと▼の部分のサイズが取得できない。

118 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:08:08 ]
>>114
マイドキュメントやシステムフォルダの場所を取得するってのもいい感じにいっちゃっている。

119 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:15:42 ]
プロパティシートのように手軽にタブコントロールでページの切り替えをする方法はないでしょうか?



120 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:54:49 ]
なぜプロパティシートがダメなのかわからないと答えようがない

121 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:57:53 ]
>>115
このAPIの場合は挙動不審でいいんだよ、いちいちケチつけるな。

122 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:04:18 ]
>>120
OKやキャンセルはいらないので…

123 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:32:01 ]
消せばいいじゃねーか

124 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 00:31:14 ]
いろいろとムチャクチャなAPI
SHFileOperation

125 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:11:16 ]
cREATEfILEで開いたものはFPRINTFとかで使えない?

126 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:16:50 ]
使えない

127 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:40:04 ]
GetDCで取得したHDCはずっと使ってもいいですかー?

128 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:49:55 ]
>>125
FILE *fp = _fdopen(_open_osfhandle(handle), "r");とかでいけない?

129 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:53:25 ]
>>127
CS_OWNDCでないならこまめに返すべき



130 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 02:03:08 ]
ども

131 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:57:53 ]
IEコンポーネントでIEがレンダリングしたWebページ全体を
ビットマップにキャプチャーする方法をご存知でしたら教えて
頂きたいのですが...APIを援用してもかまいません

132 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 17:24:21 ]
そのページの上に背景ブラシ NULL のウィンドウをかぶせて、そいつのデバイスコンテキストからビットマップを取得する。

133 名前:131 mailto:sage [2009/03/02(月) 18:39:32 ]
>>132
それで出来るんですか。
ちょっとやってみます。(出来なくても責めません)
ありがとうございました。

134 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:15:25 ]
>>131
OleDrawあたりでいいのか?

135 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:17:25 ]
>>132
マジでそんな簡単な方法でページ全体がキャプチャーできるなら世の中のキャプチャーソフトって糞ばっかってこと?


136 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:26:30 ]
>>135
その方法で、昔、(見せかけの)デスクトップ上を玉が転がり落ちるスクリーンセーバを作ったぞ。

137 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:32:50 ]
>>136
じゃあ多分話してる内容がかみ合ってないな。

・スレを全レス表示して、それを一枚のキャプチャにしたいって話 >>131
・画面に表示されている任意の箇所をキャプチャするって話 >>132

ってことだろう?



138 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:17:42 ]
WM_ERASEBKGND揉み消したらいいのねー

139 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:36:09 ]
WM_PRINTとか拡大鏡系のAPIとかDWMサムネイルとか方法はいろいろある。



140 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:04:18 ]
昔、Sleipnir1.66用のプラグインでそういうの作ったことあったけど、
えらいめんどくさかったなぁ…

141 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:47:44 ]
>>135
オーバーレイはそれじゃ取れないから

142 名前:デフォルトの名無しさん [2009/03/02(月) 22:50:46 ]
とれないね

143 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:52:35 ]
つまり>>132は回答者としてはクズってこと?

144 名前:45 mailto:sage [2009/03/02(月) 22:57:46 ]
そういうこと

145 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:00:36 ]
自演するならもうちょい時間あけような

146 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:12:54 ]
つまり>>144==>>145は自演としてはクズってこと?


147 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:47:32 ]
>>137
それ以前に、>>136は、9xとかの話じゃね?

148 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:50:09 ]
>>143
正しく言うとこのスレにはクズしかいないが正しい
お前も、おれも、そして、残りの奴も全てクズ
クズがクズに向かってクズって楽しいすれだよな
クズどおしの罵倒スレこれがこのスレ
今日は>>143がクズ罵倒開始を宣告したってことだな


149 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 01:32:21 ]
2chで何をいまさらw



150 名前:131 mailto:sage [2009/03/03(火) 01:54:18 ]
回答者への罵倒は質問者への迷惑にもなりますので
何とかご遠慮頂けないでしょうか

151 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 02:03:15 ]
クズに不可能なことを要求しないでね

152 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 09:18:50 ]
>>131
「IE レンダリング ビットマップ」とかでググると出てくるぞ
そこは.netでやってるぽいけど、IEコンポーネント使えれば他言語でもいけるんじゃね?

153 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 16:53:26 ]
流れぶった切って質問。

WinXP&VC++2008EE@Unicodeにて
RASEnumConnectionsというAPIを使ってネットワーク接続を列挙しようとしているんだが、
コード632(構造体のサイズが違います)というエラーが出て、引数が変更無しで帰ってくるんだ。
RASCONN構造体の最初のdwSizeメンバと二つ目の引数にsizeof(RASCONN)を入れてる。
ANSIでもダメだった。ちなみにうちの環境ではsizeof(RASCONN)は1384バイト(@Unicode)らしい。
(スレチだったらすまん&誘導よろ)

154 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 17:02:38 ]
>>153
WINVERマクロの値とras.hを確認

155 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 17:12:23 ]
>>154
レスありがとう。
確認したところ、WINVERが0x600で、RAS.hの範囲が〜0x500までみたいだ。
ちょっと#undefして再定義してくる。

156 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 17:22:10 ]
>>154
出来た!ありがとう。
(windows.h読む前にWINVER設定すればいいのね)
連投スマソ。

157 名前:デフォルトの名無しさん [2009/03/04(水) 16:35:46 ]
ちょっとお馬鹿な質問ですが
SendMessageのLParamに構造体のポインタを与えて時に
別アプリで受けたらそれ読めますか?

158 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 16:58:12 ]
>>157
うん、当然無理に決まってるよね。

159 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 17:00:23 ]
>>158
ですねよ。
素直にマップドピュピュファイルを使いますよ。



160 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 17:32:31 ]
>>33
ですが、まだでしょうか?

161 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 17:45:33 ]
>>160
もうちょっと待ってて

162 名前:デフォルトの名無しさん [2009/03/04(水) 17:59:58 ]
>>160
つグーグル

163 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:02:09 ]
>>162
知らないならレスしないで下さい。ウザいだけです。

164 名前:デフォルトの名無しさん [2009/03/04(水) 18:04:24 ]
>>163
マジレスすると、ググール先生でVB6のソース出てくるだろ?
そのまんまじゃんwww
そのまま使えないなら、33の質問内容が悪い。
もう少し具体的に質問しろwww

165 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:24:07 ]
>>164
知らないならレスしないで下さい。ウザいだけです。

166 名前:デフォルトの名無しさん [2009/03/04(水) 18:28:02 ]
質問もレスなわけだがw

167 名前:デフォルトの名無しさん [2009/03/04(水) 18:36:41 ]
質問に対してググれって言う馬鹿はレスするなって事じゃね?

168 名前:デフォルトの名無しさん [2009/03/04(水) 18:47:50 ]
くれくれ君はググれでいくね?

169 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:58:37 ]
相変わらず外野うぜーな
文句あるならズバっと回答して成仏させてやれよ



170 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:04:10 ]
>>169
知らないならレスしないで下さい。ウザいだけです。

171 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:25:27 ]
マップドピュドピュw

172 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:26:11 ]
>>171
突っ込みたいの我慢してたのに

173 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 20:47:58 ]
>>159はそれを言いたかっただけのクズですか?

174 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 20:51:49 ]
>>157
メッセージよっては OK。WM_COPYDATA とか。

175 名前:デフォルトの名無しさん [2009/03/04(水) 20:58:34 ]
Windows VISTA SP1
VS 2008

homepage2.nifty.com/c_lang/sdk3/sdk_297.htmをみて
以下の様に組み込んだのですが、この プリントダイアログを出した後に、
ウィンドウを閉じてプログラムを終了させると、
なぜか、Windowタスクマネージャ→プロセスに
*.exe が残ってしまいます。残ってしまうので次ビルドすると
error PRJ0008 : ファイル '*.exe' を削除できませんでした。
とメッセージが出てしまいます。
このダイアログを出さない場合は プロセスに*.exeは残らずきちんと消えてくれます。
なぜなのでしょうか?

176 名前:デフォルトの名無しさん [2009/03/04(水) 20:59:51 ]
ソースは以下です。
if (PrintDlg(&pd)==TRUE)
{
StartDoc(pd.hDC, &di);
StartPage(pd.hDC);
GetTextMetrics(pd.hDC, &tm);
//File
//0枚目
wsprintf(PrintBuf,CPrint.szStrFile,0,Common_Data->File0);
TextOut(pd.hDC, 100, tm.tmHeight * 0, PrintBuf,strlen(PrintBuf));
//1枚目
wsprintf(PrintBuf,CPrint.szStrFile,1,Common_Data->File1);
TextOut(pd.hDC, 100, tm.tmHeight * 1, PrintBuf, strlen(PrintBuf));
//2枚
wsprintf(PrintBuf,CPrint.szStrFile,2,Common_Data->File2);
TextOut(pd.hDC, 100, tm.tmHeight * 2, PrintBuf, strlen(PrintBuf));

EndPage(pd.hDC);
EndDoc(pd.hDC);
//DeleteObject(hPen);
DeleteDC(pd.hDC);
}

177 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 21:00:03 ]
なんか残ってるんだろうね。

178 名前:デフォルトの名無しさん [2009/03/04(水) 22:02:12 ]
XP SP2では発生していなかったと思います。
VISTAでは新しい関数を使うのかと思い調べたらPrintDlgEXがありましたが
構造体に何を設定すればいいのか 分からない。必要最低限の設定
でいいんですが・・。

179 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:04:01 ]
指定のウィンドウの一つ下にあるウィンドウのウィンドウハンドルを得る関数って何でしたっけ?



180 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:19:54 ]
GW_CHILD を指定して GetWindow() とか?

181 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:21:00 ]
StartDoc から DeleteDC までを全部コメントアウトしても同様?

182 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:25:53 ]
>>179
GetNextWindowのことか?

183 名前:デフォルトの名無しさん [2009/03/04(水) 22:29:48 ]
>>181
StartDoc から DeleteDC をコメントアウトしても同様です。
PrintDlg(&pd); と単独で記述して プリントダイアログを
出したあとに すぐにキャンセルして そしてプログラムを
終了させても プロセスに残ってしまいます。



184 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:35:42 ]
構造体の中身は?

185 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 00:33:31 ]
>>162>>164
グーグルで最初に出てくるサイトのサンプルをVB.NETに直して色々試したのですが
取得失敗と出て終わってしまい困っています。
res = AccessibleObjectFromWindow(lngHWND, OBJID_CLIENT, IID_IAccessible, objAcc)
でlngHWNDに数字が入っていて、OBJID_CLIENTに-4が入っていて、
IID_IAccessibleの定義は
Private IID_IAccessible As UUID
Private Structure UUID
Dim Data1 As Integer
Dim Data2 As Short
Dim Data3 As Short
Dim Data4() As Byte
Public Sub Initialize()
ReDim Data4(7)
End Sub
End Structure
でイニシャライズもしていて、


objAccは Dim objAcc As IAccessibleのように定義しています。

APIの宣言は
Private Declare Function AccessibleObjectFromWindow Lib "oleacc" (ByVal hWnd As Integer, ByVal dwObjectID As Integer, ByRef riid As UUID, ByRef ppvObject As IAccessible) As Integer
こうなっています。


どこか悪いところとかありましたら教えて頂きたいです。

186 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 00:46:06 ]
VB(笑)

187 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 00:53:22 ]
本題からは逸れるけど、
UUIDなんて構造体作らなくても、System.GUIDを使えばいいし、
hWndの型はIntPtrのほうが適切。

とここまで書いて、UUID構造体の定義がまずいような気がしてきた、Data4のあたり。
System.GUIDにするとどうだ?

188 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 01:16:42 ]
>>187
レスありがとうございます。
System.GUIDというのは
Dim IID_IAccessible As Guid = Guid.NewGuid()
こうすれば良いでしょうか?

hWnd関係は全部IntPtrに置き換えてみました。
TextBox1.Text = GetSysLVHwnd().ToInt32
で65698という数字が帰ってくるので大丈夫だと思います。

何かダメそうなところが分かりましたら教えていただきたいです



189 名前:デフォルトの名無しさん [2009/03/05(木) 01:18:04 ]
>>188
API定義これでどうよ?使ったことないけど。

Private Declare Function AccessibleObjectFromWindow Lib "oleacc" (ByVal Hwnd As Int32, _
     ByVal dwId As Int32, _
     ByRef riid As Guid, _
     <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As Int32



190 名前:>>188 [2009/03/05(木) 01:25:00 ]
よく見てみると、その後こう使ってるのか。動くのかな?
著作権とかはしらね

www.pinvoke.net/default.aspx/oleacc/AccessibleObjectFromWindow.html


   Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim varChild As Accessibility.IAccessible
    Dim hWnd As Int32 = GetForegroundWindow()
    Dim ID As Int32 = 0
    Dim IID_IAcce As Guid = New Guid("618736E0-3C3D-11CF-810C-00AA00389B71")
    Dim aaVal As Int32 = AccessibleObjectFromWindow(hWnd, ID, IID_IAcce, varChild)
    End Sub

191 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 01:48:30 ]
レスありあとうございます。
>>189を試してみましたが
Can not marshal parameter #4: Invalid managed/unmanaged type combination
(Interfaces must be paired with Interface).
というエラーが出てしまい対応できませんでした。

>>190
New Guid("618736E0-3C3D-11CF-810C-00AA00389B71")
を定義すると取得失敗へ行かなくなりました。
varChildに何か入っているようです。
最初のグーグルで最初に出てくるページのサンプルでvarChildを調べる部分でエラーが
出てしまいましたが、また色々やってみたいと思います。
何をやってもNothingのままだったので>>33がやっと解決できましたみたいでありがたいです。
ありがとうございました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef