Win32API質問箱 Build ..
[2ch|▼Menu]
441:デフォルトの名無しさん
07/06/29 10:27:02
>>439
すまんね、アンカーなかったから気付かなかったよ
まぁ参考ってことで

442:デフォルトの名無しさん
07/06/29 13:04:54
開き直りたくないんです。
ヤラレル前にヤラレナイような一人前はどの程度?

443:デフォルトの名無しさん
07/06/29 13:10:14
>>442
お前以外の程度

444:デフォルトの名無しさん
07/06/29 14:36:20
>>442
442と443以外の程度

445:デフォルトの名無しさん
07/06/29 15:03:06
「〜以外の程度」という単語に強烈な違和感を覚える。

446:デフォルトの名無しさん
07/06/29 15:08:16
442と443以外の程度の以外の程度の以外の程度

確かに・・・

447:デフォルトの名無しさん
07/06/29 15:09:18
以上以下じゃなくて以外だからなあ・・・

448:デフォルトの名無しさん
07/06/29 15:12:50
442以外が一人前で442のみが一人前でないという意味か!
ほんとうにありがとうございました

449:デフォルトの名無しさん
07/06/29 15:16:54
>>436
MSDNライブラリに載っていることくらい、質問しないで自分で解決できる程度。
ようするに、このスレが必要ない程度。

450:デフォルトの名無しさん
07/06/29 15:49:57
タスクトレイに表示されている他のアプリのアイコンのハンドルを
取得するかして、アイコンの画像を得たいのですが、できるでしょうか?
最悪タスクトレイ部分のビットマップでもいいです。

451:デフォルトの名無しさん
07/06/29 15:53:44
できますよ

452:デフォルトの名無しさん
07/06/29 15:56:26
特定のファイルが存在するか確認したいんですが、
自動的に環境変数のパスを検索してくれる関数はないでしょうか?


453:デフォルトの名無しさん
07/06/29 16:16:00
>>452
環境変数のパスってPATHのこと?
もしそうなら検索するファイルって実行ファイル?
だったらFindExecutableとか

454:デフォルトの名無しさん
07/06/29 16:20:19
>>452
EnvironmentStrings系のAPIでも使って自分で検索して下さい

455:デフォルトの名無しさん
07/06/29 16:29:59
っと、実行ファイルそのものの検索なら SearchPath() だったな

456:デフォルトの名無しさん
07/06/29 16:53:06
変な人がいるので再投稿しますね…

タスクトレイに表示されている他のアプリのアイコンのハンドルを
取得するかして、アイコンの画像を得たいのですが、できるでしょうか?
最悪タスクトレイ部分のビットマップでもいいです。

やり方を教えてください。

457:デフォルトの名無しさん
07/06/29 16:55:02
変な人?
ググれば見つかるのに何を言ってるんだ低脳

458:デフォルトの名無しさん
07/06/29 17:16:58
>>453-455
ありがとうございました。
SearchPath()で戻り値がファイル名より長ければとしました。

459:デフォルトの名無しさん
07/06/29 17:58:26
>IMEの使用はそのままで、IMEパッドのみ起動を抑制する

まったくレスが付きませんが、これは結局無理なんでしょうかね?

460:デフォルトの名無しさん
07/06/29 18:06:59
>>459
イメージわかないんだよねえ

461:デフォルトの名無しさん
07/06/29 18:12:40
最近のUACとかよくわかんないしうざいんだなー


462:デフォルトの名無しさん
07/06/29 18:44:59
>>459
多分無理だと思うが、そもそも何でそんなことがしたいんだ?

IMEの変換ウィンドウなんか出さずにすべて自前描画しているような
ゲームでさえ、IMEパッドは使えてしまうからなぁ。

IMEを自作しないと駄目だと思う。

463:デフォルトの名無しさん
07/06/29 18:46:37
SendMessage で WM_KEYDOWN/UP 送るときに、
VK_LBUTTON って送れない?

464:デフォルトの名無しさん
07/06/29 19:41:04
>>462
フルスクリーン時にフォーカスが移るのが
イヤだったので、抑制したかったんですよね。
やっぱ無理なんでしょうね。

465:デフォルトの名無しさん
07/06/29 20:47:55
>>456
ゴルァ
1回の質問で複数のことを聞くな。


466:デフォルトの名無しさん
07/06/29 20:54:16
変な人がいるので再投稿しますね…

467:デフォルトの名無しさん
07/06/29 21:02:38
>>464
HIDEすりゃいいじゃん

468:デフォルトの名無しさん
07/06/29 21:03:08
>>456
トレイのハンドル取ってDC取得してコピー
これで分からないならこのスレではもう相手にされないよ

−−−−−−−−終了−−−−−−−−−−

469:デフォルトの名無しさん
07/06/30 00:25:53
タスクバーを自動的に隠す設定にしている
俺への挑戦だな。受けて立とう。ちょんわちょんわ。

470:デフォルトの名無しさん
07/06/30 00:30:39
関係ないよ

471:デフォルトの名無しさん
07/06/30 08:29:52
なんでこんな高圧的なんですか?
琴線に触れてしまいましたか・・・

472:デフォルトの名無しさん
07/06/30 08:31:59
誰だお前

473:デフォルトの名無しさん
07/06/30 08:55:14
琴線の使い方間違ってる。

474:デフォルトの名無しさん
07/06/30 08:58:25
逆鱗と勘違いしてんだろうな。リア中かも名。

475:デフォルトの名無しさん
07/06/30 09:11:16
俺の金銭に触れたら大逆鱗だぜ。

476:デフォルトの名無しさん
07/06/30 09:15:17
逆鱗は小さいと思うんだ。

477:デフォルトの名無しさん
07/06/30 11:38:45
ぎゃくりんで変換されないんですけど本当はなんて読むんですか

478:デフォルトの名無しさん
07/06/30 11:39:16
ぎゃくうろこ

479:デフォルトの名無しさん
07/06/30 11:44:47
>>477
「逆鱗」で検索すれば判ると思いますよ。

480:デフォルトの名無しさん
07/06/30 11:54:18
>>477
メモ帳にコピペして「変換」キーを押せば分かる。

481:デフォルトの名無しさん
07/06/30 12:12:12
C#をつかってます。
ユーザーさんからあるAPIでEntryPointNotFoundExceptionがでるって報告があがりました。
まあぶっちゃけILCreateFromPath なわけなんですが
MSDNには

Minimum operating systems Windows 2000

とあって、そのユーザーさんはスクショからみるにXPなんです。
うちのXPでは動いてるんですが、ありえるんでしょうかこんなこと。
私がしでかした間抜けで不可解な未知のバグの可能性と、
その人のshell32.dllがぶっこわれてる可能性と
どっちが高いでしょうか?

482:デフォルトの名無しさん
07/06/30 12:17:01
ジャンクション(フォルダへのシンボリックリンク)内にあるファイルの実体のpathを
取得する方法を教えてください。

483:デフォルトの名無しさん
07/06/30 12:24:47
僕ハッカー

484:デフォルトの名無しさん
07/06/30 13:08:03
Win98でもXPに見せることはできる

485:デフォルトの名無しさん
07/06/30 13:24:48
>>482
DeviceIoControl使えば取得できる。


486:デフォルトの名無しさん
07/06/30 15:06:27
PROCESS_INFORMATIONの、dwProcessIdか、dwThreadIdからウィンドウハンドルを求めたいんですが、
方法ありますでしょうか、情報ありましたらよろしくお願いします。

487:デフォルトの名無しさん
07/06/30 15:14:18
ものすごくありふれた情報だけどググったの?

488:デフォルトの名無しさん
07/06/30 15:55:36
スレも検索してないだろ。昨日か一昨日見たぞ

489:486
07/06/30 17:59:00
コメントありがとう御座います。
ひととおり検索はしてみたのですが情報が多く期待した情報が見つけることが出来ませんでした。
できましたら、検索キーワードだけでも教えていただけないでしょうか。
よろしくお願いします。


490:デフォルトの名無しさん
07/06/30 18:03:09
具体的に何で何を検索したのか言ってみろよ

491:デフォルトの名無しさん
07/06/30 18:13:23
>>489
えぇ〜!?どんだけ〜(ry

492:デフォルトの名無しさん
07/06/30 19:04:48
>>489
>>223

493:デフォルトの名無しさん
07/06/30 19:47:12
385じゃね

494:デフォルトの名無しさん
07/06/30 20:07:09
>>489
なんでお前の代わりに俺がスレを読み直さないといけないんだ?
やることはわかってんのに、なんで自分でやらないの?

495:デフォルトの名無しさん
07/06/30 20:25:57
無知の無知に愛の鞭

496:デフォルトの名無しさん
07/06/30 20:28:45
>>485
どうもありがとうございます。これから調べてみます。


497:デフォルトの名無しさん
07/06/30 21:22:24
>>481
エントリポイント名を ILCreateFromPathW に変えてみる、とか。
家のXP SP2のshell32.dllはA、W、無し(=W)と3つエクスポートされてるけどなあ。

498:486
07/06/30 21:29:04
さくっと、検索キーワード教えて頂けませんでしょうか。


499:デフォルトの名無しさん
07/06/30 21:32:29
PID2HWND これでぐぐればおkじゃん?

500:デフォルトの名無しさん
07/07/01 05:29:22
うぜーから放置で

501:デフォルトの名無しさん
07/07/01 09:39:03
DllMain の DLL_PROCESS_ATTACH でLoadLibraryしたら×
DllMain の DLL_PROCESS_DETACH でFreeLibraryしたら×
とMSDNにあります。
Dllの利用元に処理をしてもらうわけでなく、何かの関数を呼んでもらうわけでなく、
DllのATTACH時に別のDllを動的にLoadLibrary〜初期処理、DETACH時にそのLoadしたDllを終了処理〜FreeLibrary
する実装の代替案ってどういうふうに書いたらいいですか?
設定ファイルにかかれたDllファイル名からを動的にDllから読み込んで、
前処理しておいて、設定毎に処理を変更する動作をつくりたいんです。
いまのところATTACH時にLoadLibraryして、DETACH時にFreeLibraryするのを作ったんですが
問題がでてないんですけど、MSDNにすんなってかいてあるんで・・・。
初めてDLLのなにかの関数が呼ばれたときにLoadLibrary〜前処理するってのは無しで。

502:デフォルトの名無しさん
07/07/01 09:55:13
やっぱ初めてDLLのなにかの関数が呼ばれたときにLoadLibrary〜前処理するってのは有りで。

503:デフォルトの名無しさん
07/07/01 09:56:56
確か他のDLLが初期化途中だとループする可能性があるから駄目なんだったかな

A初期化中にBをロード→B初期化中にCをロード→C初期化中にAをロード→・・・

みたいな
DLL_PROCCESS_ATTACHが処理を返してからなら参照カウンタが増える
(カウンタが1以上ならDLL_PROCCESS_ATTACHは投げられない)からループしない

504:デフォルトの名無しさん
07/07/01 10:44:44
質問なんですけどダイアログで使えるコントロール(タブとかシークバー)を自前のWindowで使いたい場合はどうすればいいのでしょうか?
CreateWindowで作れるコントロールの中には無いっぽいのでどうすればいいか困ってます。

505:デフォルトの名無しさん
07/07/01 10:53:35
commctrl.h

506:デフォルトの名無しさん
07/07/01 11:33:25
>>501
CoInitialize/CoUninitializeみたいに別途初期化・終了処理の関数を用意したり、
暗黙的リンク(必要に応じて遅延読み込み)したり。

507:デフォルトの名無しさん
07/07/01 11:57:39
Microsoft Platform SDKとはなんですか?
これだけでほかの開発環境なくてもプログラミングできるのでしょうか

508:デフォルトの名無しさん
07/07/01 12:10:29
>>507
Windowsアプリを作るうえで必要になるライブラリ群。
ライブラリなので、当然これだけでは何も作れない。

509:デフォルトの名無しさん
07/07/01 12:15:58
ここは既にプログラミングの環境が構築できてる、
あるいはできるという条件の元でWin32APIについて質問するスレです。

環境の構築ができてないレベルだと、>507の質問に回答が出ても理解できないかもしれないが
そこまで面倒見れない

510:デフォルトの名無しさん
07/07/01 12:23:08
そうですか
WIN32APIとはまた違ったものなんですね

511:デフォルトの名無しさん
07/07/01 12:26:28
まあでもWin32 APIを使うためのヘッダやインポートライブラリと、
ドキュメント・サンプル・ツールなんかが入っているセットと言えばいいかな。

でも、今はWindows SDKになったが。

512:デフォルトの名無しさん
07/07/01 13:19:04
>>507
百聞は一見に如かず

無償でダウンロードできる代物なのだから、
とりあえずインストールしてみて、
HDDにコピーされたファイル群を眺めてみれ。

必要かどうか分からないなら、とりあえず、
潰してもいい環境にインストールすりゃいい。

潰してもいい環境を用意できないようなら、
HDDに十分な空き容量とVirtualPCを。

513:デフォルトの名無しさん
07/07/01 13:20:18
Windows SDKはコンパイラ・リンカが付いてくるよ。

514:デフォルトの名無しさん
07/07/01 14:07:20
Windows SDKのコンパイラは /analyze が付いてるよ。

515:デフォルトの名無しさん
07/07/01 16:04:39
ファイルをドラッグ&ドロップして起動した時に、
そのドロップされたファイルを読み込ませたいのですが、
lpCmdLineを引数にfopenしてもオープンできません。
どうすれば読み込ませられますか?

516:デフォルトの名無しさん
07/07/01 16:08:34
それでできないことはないはず。
まずは試しにlpCmdLineを表示させてみな。

517:515
07/07/01 16:23:37
表示してみました。
"C:\Documents and Settings\〜中略〜\aa.mp3"
正しいパスが表示されてるっぽいです。

518:デフォルトの名無しさん
07/07/01 16:31:49
「"」を取り除け

519:501
07/07/01 16:42:33
IDないと502にみたいな偽者がでてくるのか・・・

>>503
そうなんですよ。でも別の代替の処理を考えつかないんです。
>>506
暗黙的に行うと、DLLのパスが設定ファイルから渡して動的ロードできないので使ってないです。
CoInitialize/CoUninitializeはなんで制約がないのか調べて見ます。

520:515
07/07/01 16:57:26
いけました。本当にありがとう。

521:デフォルトの名無しさん
07/07/01 16:59:45
>>519
すみません、代替処理見つからないなんて釣りだと思いました。

522:デフォルトの名無しさん
07/07/01 20:40:22
>>514
マジですか。お得ですね。
VSのコンパイラをSDKのものに差し替えたくなりますな。

523:デフォルトの名無しさん
07/07/01 20:45:14
>>519
CoInitialize/CoUninitializeの話は、

DLL_PROCESS_ATTACHでLoadLibraryするのではなく、
そのDLL特有の、LoadLibraryなどの初期化処理を行う関数をExportして、
それをDLLを使う側に呼んでもらうことにする

ってことかと。

524:デフォルトの名無しさん
07/07/01 20:48:38
>>517
CommandLineToArgvW
とか使ってパースしる!

525:デフォルトの名無しさん
07/07/01 21:00:45
ANSI考慮するなら__argc,__argv。
標準ライブラリが必要だけど

526:デフォルトの名無しさん
07/07/01 21:38:43
>>519
プログラム側でロードが終わった時点で初期処理すればいいだけのような気がするんだけど
CreateでロードしてんならLoadLibraryが処理返してから初期処理とやらをすれば良いじゃん

527:デフォルトの名無しさん
07/07/01 21:52:59
>>514
まじで?!
70万だして買っちまったよ・・・

528:デフォルトの名無しさん
07/07/01 22:00:15
まじだよ。/? すると
                         -CODE ANALYSIS-
/analyze[:WX-] enable code analysis
    WX- - code analysis warnings should not be treated as errors even if /WX is invoked

って出る。バージョンとかは同じだけど、付属のバイナリ群はdiffとるとどれもちがうっぽい。
まあ使い方わかんないし、最近Cやってないから必死こいて調べないし、スレ違いだけど

529:デフォルトの名無しさん
07/07/01 22:19:48
>>523
>>526
そのやりかただとフックとかしかけたときにそのDLLの
アタッチ時に別のDLLを呼べない。
というわけで初めてCALLBACKされたときに初期化するしかなくなる。

530:デフォルトの名無しさん
07/07/01 22:32:41
>>529
>というわけで初めてCALLBACKされたときに初期化するしかなくなる。

これが正しいんだと思うが
適当にメッセージ投げろよ

>そのやりかただとフックとかしかけたときにそのDLLの
>アタッチ時に別のDLLを呼べない。

グローバルにフック仕掛けてたら必要ないプロセスに無駄なDLLロードすることになるじゃん

531:デフォルトの名無しさん
07/07/01 23:26:12
お前ら。

DLL作るときは、ロードアドレス、ちゃんと設定しとけよな。
VCとかのデフォルト値のままだと、リロケートすることになるし、仮想メモリ空間をぶった切ることになるぞ。

532:デフォルトの名無しさん
07/07/01 23:31:02
どっちにしろ、デフォルト1000:0000でグローバルフックする
ような連中もいるんだから無駄
仮想メモリがぶった切られるったって、MS純正のDLLとしてが
4000:0000とかに存在する現状では寂しい限り。

533:デフォルトの名無しさん
07/07/01 23:36:45
64bitいや128bitの時代はまだか

534:デフォルトの名無しさん
07/07/01 23:37:46
128bitになるころは画面はホログラムになってますか?

535:デフォルトの名無しさん
07/07/01 23:50:29
>>532
行儀が悪い輩がいるからといって、自分まで行儀悪くしてどうするよ。

人様が作った行儀が悪いDLLはReBaseでベースアドレスを変更しちまえ。


536:デフォルトの名無しさん
07/07/02 00:41:53
どのへんに置いとくのが適切なのかわからん

537:デフォルトの名無しさん
07/07/02 00:46:11
>>536
MSDNライブラリ等で
ReBaseImage
のところに説明がある。

538:デフォルトの名無しさん
07/07/02 00:59:03
Comboboxのedit controlを取得するのってGetWindow(コンボのハンドル, GW_CHILD)しかない?
ComboboxexならCBEM_GETEDITCONTROLがあるんだけど、、
Comboboxで安全にeditを取得する方法があるのなら、知ってる人いませんか?

539:デフォルトの名無しさん
07/07/02 01:27:39
CB_GETCOMBOBOXINFO

540:デフォルトの名無しさん
07/07/02 02:02:06
>>539
ずばりのもの、ありがとう。解決しました。
MSDNをみるとCB_GETCOMBOBOXINFOはXp、
windows2000では、GetComboBoxInfoが使えますね。

541:デフォルトの名無しさん
07/07/02 02:46:42
>>528
Windows2000環境にインストールしようとして断られた・・・orz

ちなみに、どのバージョンのWindowsSDKなのか教えてもらえると助かります。

542:デフォルトの名無しさん
07/07/02 11:14:35
>>541
因みに、私は教えてあげません。

543:デフォルトの名無しさん
07/07/02 11:46:53
/analyzeというか、PREfastには2種類ある。

先にDDKで提供されていたドライバ開発者向けと、
後からVCの上位版に提供されたアプリ開発者向けが。

Windows SDK付属のコンパイラで使えるのは前者だけだったりしてね。

544:デフォルトの名無しさん
07/07/02 14:05:50
>>543
ちょっと試してみたけど、VSTS付属のものと同じ出力だった。
Windows SDKの方はコマンドラインからしか試してないけどVS連携はまあきつそうか。

以下テストコード。タブを全角に変換してるので注意ね。

#include <CodeAnalysis/SourceAnnotations.h>
#include <windows.h>
[returnvalue:SA_Post(MustCheck=SA_Yes)]
double CalcSum ([SA_Pre( Null=SA_No )] double* source,unsigned int size);
double CalcSum (double* source, unsigned int size)
{
  double sum = 0;
  for( int i = 0; i < size; ++i ) sum += *source;
  return sum;
}
int f()
{
  double buf[100];
  for (int i = 100; i >= 0; i++) buf[i] = i;
  CalcSum(buf, 99);
  return (int) 1;
}
int main()
{
  wchar_t buf[255];
  GetEnvironmentVariableW(L"PATH", buf, 256);
  return f();
}

545:544
07/07/02 14:10:04
続き。

上のコードのコンパイル結果。

c:\test>cl test.cpp /analyze
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

test.cpp
c:\test\test.cpp(14) : warning C6292: Ill-defined for-loop: counts up from maximum
c:\test\test.cpp(14) : warning C6201: Index '100' is out of valid index range '0' to '99' for possibly stack allocated buffer 'buf'
c:\test\test.cpp(15) : warning C6031: Return value ignored: 'CalcSum'
c:\test\test.cpp(14) : warning C6386: Buffer overrun: accessing 'buf', the writable size is '800' bytes, but '808' bytes might be written: Lines: 13, 14
c:\test\test.cpp(21) : warning C6202: Buffer overrun for 'buf', which is possibly stack allocated, in call to 'GetEnvironmentVariableW': length '512' exceeds buffer size '510'
c:\test\test.cpp(21) : warning C6386: Buffer overrun: accessing 'argument 2', the writable size is '510' bytes, but '512' bytes might be written: Lines: 20, 21
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.

/out:test.exe
test.obj

546:デフォルトの名無しさん
07/07/02 14:58:39
?

547:デフォルトの名無しさん
07/07/02 15:29:42
>>545
これって、VCProのcl.exe関連を差し替えて、SDK付属のCodeAnalysis関連ヘッダもコピーしてやればIDE上で使えるんだろか

548:デフォルトの名無しさん
07/07/02 15:37:33
ファイル差し替えなくてもディレクトリ設定変えてやればいんじゃね?
IDE上での設定UIは無いだろうから手動でclのパラメータ追加しないとだめだろうが。

549:544
07/07/02 16:12:09
>>547
すまんがVC++Proはすぐに使えるところにないのでその辺の検証は誰かやってちょ。

あとはまあコード分析とかそんなにしょっちゅう使わなくても
たまにとかリポジトリにコミット前にとか自動テスト前とかでもいいんじゃね? とか。
vcbuild.exeをうまいこと使うと自動化できるんじゃなかろかと。

550:デフォルトの名無しさん
07/07/02 17:38:37
VC++Proの場合。

VC++ディレクトリの「実行ファイル」に
C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin
を追加し、これを優先度一番上に。
(x64なら...\v6.0\VC\Bin\x86_x64)
同じく「インクルードファイル」に
C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\INCLUDE
を追加し一番上に。

あとはプロジェクトオプションで「構成プロパティ」-「C/C++」-「コマンドライン」で
「追加のオプション」に「/analyze」を記述してやればいい。
本格的なアノテーションまではチェックしてないが、簡単なバッファオーバーラン検出
程度は動作しているのを確認。

ちなみにこれDebugビルドでは使えるがReleaseビルドでは使えないという認識でOK?
厳密にはAPIの話題ではないが、Win32 APIの引数や戻り値チェックもしてくれるのでとりあえず。

551:501
07/07/02 19:35:00
DLLロード後に初期化処理関数をDLLロード側から呼んでもらうようにします。
>>503
>>506
>>521
>>523
>>526
>>529
>>530

レスポンスありがとうございました。

552:デフォルトの名無しさん
07/07/02 22:49:54
Analysisってそんなにすごいものなの?
70万もだしたというひとがいたが

553:デフォルトの名無しさん
07/07/02 23:00:05
>>552
Analysisだけに70万ではないし、
プロ用の開発ツールが高価なのは普通のことだから。

RationalのPurifyとか、
CompuwareのDevPartnerStudioとか、
かなりの金額するでしょ。

554:デフォルトの名無しさん
07/07/02 23:20:11
たとえ趣味でもつぎ込む人はつぎ込むしね

555:デフォルトの名無しさん
07/07/02 23:43:15
現在開いてるページのURLとタイトルを取得したいのですが、
そのような関数がございましたらご教授下さい。

たとえばここでしたら、
タイトル→Win32API質問箱 Build54
URL→スレリンク(tech板)
と、獲得したいです。

556:デフォルトの名無しさん
07/07/02 23:46:56
脱力

557:デフォルトの名無しさん
07/07/02 23:57:42
>>555
FindWindowEx使って力業で探せ

558:デフォルトの名無しさん
07/07/03 00:06:31
何でもAPI一つで出来ると思うな

559:デフォルトの名無しさん
07/07/03 00:11:19
普通IWebBrowser2使うだろ

560:デフォルトの名無しさん
07/07/03 00:13:48
>>559
IEとは言ってない。

意地悪な解釈ではあるがな。

561:デフォルトの名無しさん
07/07/03 00:18:57
つーか
>現在開いてるページのURLとタイトルを取得したいのですが、
>そのような関数がございましたらご教授下さい。

この質問通りに答えるなら「無い」が正解

562:デフォルトの名無しさん
07/07/03 00:33:13
>>560
「現在開いてる」というのを詳しく。

何が、誰が、
そういう情報がゴッソリ欠落しているぞ。




563:デフォルトの名無しさん
07/07/03 00:37:27
>>560
どういうわけか、
インタフェースとしてではなく、クラスを指してIWebBrowser2という人達が多いのです。

IEそのものや、既存のIEコンポーネントを使ったプログラムに対してではなく、
タイトルを取得するためだけに、新たにIEコンポーネントを使い、
URLのドキュメントを取ってこさせ、タイトルを取得するという手もなくはないです。


564:デフォルトの名無しさん
07/07/03 06:50:32
ダイアログベースのアプリで、キーリピートのときに鳴り続ける警告音を消したいのですが
どうしたらよいのでしょうか。


565:デフォルトの名無しさん
07/07/03 08:47:12
もっと詳しく書かないと。

566:デフォルトの名無しさん
07/07/03 10:00:17
WM_KEYDOWNのLPARAM見てリピートが1より大きかったらメッセージ潰せばいいんじゃね

567:デフォルトの名無しさん
07/07/03 10:58:12
そのダイアログのせいで鳴ってるの?
キューいっぱいとか。キーメッセージ握りつぶしてる?

568:デフォルトの名無しさん
07/07/03 11:04:29
メッセージポンプを自分で止めている可能性もあるな。

569:デフォルトの名無しさん
07/07/03 12:13:46
>>561
IE6まではDDE使って取得できたんだがな、IE7以降これが動作しなくなった
しかしFirefoxやOpera等使われていたら動かないわけで。
2chスレに限って言えば専ブラ使われていたらだめなわけで。

570:562
07/07/03 12:33:58
アンカーミスしてました。

>>562>>555あてです。

571:デフォルトの名無しさん
07/07/03 13:16:38
そんくれーわかるっつの

572:デフォルトの名無しさん
07/07/04 08:16:50
>>550
ちょwww
俺のPro版、なんかアナライズしてるww

573:デフォルトの名無しさん
07/07/04 09:11:47
IEでグーグル開いたときに検索窓でますよね
あそこに文字列をいれるのにいい方法ってありますか?
キーダウンで擬似的にキーボードおされた状態ってのはうまくいったのですが
たまに失敗したり、一文字ごとにウェイトいれないとだめなのでちょっと・・・
セットウインドウテキストが良さげなので
全てのIEの子ウインドウハンドルに送ってみたのですがまったく反応ありませんでした

574:デフォルトの名無しさん
07/07/04 09:23:51
フォームに入力するのVBのサンプルならいっぱいある

575:デフォルトの名無しさん
07/07/04 09:24:58
Google限定なら別のアプローチのがよさげ

576:デフォルトの名無しさん
07/07/04 09:27:29
どうでもいいけど「キーダウン」とか「セットなんとか」とか
強烈に読みづらいから素直にアルファベット表記してくれ。
あとIEのテキストフォームはデザインがWindowsと同じってだけで
IE独自の実装してるからテキストボックスに見えて
テキストボックスじゃない。
API通していじるのは諦めた方がよさげ。

577:573
07/07/04 09:32:47
あ、ウインドウのタイトルが変わりましたw
これ面白いですね

そうなんですかどうりで反応しないわけだ
VB覚えようかな

578:デフォルトの名無しさん
07/07/04 09:41:48
1.クリップボードに好きな単語を入れる
2.C-V を送る

でいいじゃん?
俺だったらそんな面倒くさいことせずに、
検索語を別の窓から入力させて、結果をIEで開くように作るが。

579:デフォルトの名無しさん
07/07/04 09:55:31
あ、クリップボードも試してみたのですが
効かなかったから・・・ハッ!Σ(゚□゚;)!!
その貼り付けたには気づかなかったorz

別窓のは技術が高くないと無理かと

580:デフォルトの名無しさん
07/07/04 09:58:50
IE上のコントロールはドロップダウンリスト以外は全部ウィンドウハンドル持たないIEの独自描画。

581:デフォルトの名無しさん
07/07/04 10:04:28
いや、URLリンク(www.google.com) とかを
そのままシェルに渡してやればいいだけだと思うんだが…

582:デフォルトの名無しさん
07/07/04 10:06:42
別窓作って文字入力
入力文字をURLエンコードして連結
シェルに渡す

583:デフォルトの名無しさん
07/07/04 10:08:05
      _人人人人人人人人人人人人人人_
        >    な なんだってー!!    <
        ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
試行錯誤したのが馬鹿みたいだ

584:デフォルトの名無しさん
07/07/04 10:16:16
そうだね。

585:デフォルトの名無しさん
07/07/04 10:18:45
試行錯誤すること自体は無駄じゃないよ

586:デフォルトの名無しさん
07/07/04 10:26:35
質問の仕方がわるいんだからしょうがない。

587:デフォルトの名無しさん
07/07/04 10:39:00
どうしても、IE上のコントロールを制御したいと言うなら、
↓スレあたりが参考になるやもしれん

IEコンポーネントを使い倒すスレ Ver.2
スレリンク(tech板)

588:デフォルトの名無しさん
07/07/04 10:40:49
>>576
読みづらい以前に、

特別なキーワードを、
言い換え可能な普通の言葉で書いたら、
わけわかんないよ。

WM_KEYDOWNではなく、他のものかもしれないと気をつけて読まないといけないから。

589:デフォルトの名無しさん
07/07/04 10:42:35
>>577
VBでやると簡単だが、VBでしかできないわけじゃない。

Win32APIには、Cスタイルのものと、COMのものがある。
VBはCOMを扱うのが楽。VCだと慣れるまで面倒。
VB6ならともかく、VB.NETでやるくらいならC#でやりなされ。

590:デフォルトの名無しさん
07/07/04 10:57:36
いやあ日本人なのでカタカナの方が読みやすいかなと思ってw
しかし天才がいるもんですね
cgiとかってのに直接送ってるみたいなもんでしょ?驚きました

591:デフォルトの名無しさん
07/07/04 11:00:28
>>590
日本語版のMSDN に 「WM_KEYDOWN」 が 「キーダウン」 と書かれたらすげー迷惑
発音しているものが動作を指しているのか、特定のキーワードなのかを即座に区別できねーじゃん

592:デフォルトの名無しさん
07/07/04 12:58:05
プログラムの定数的なのは、別に英語でもそのまま定数で書くよw

593:デフォルトの名無しさん
07/07/04 13:11:46
ダブリューエム_キーダウンと書くかWM_KEYDOWNとするかは
翻訳者の自由だぁ〜〜!!
予約語いずフリーダム♪
ハイ一緒に!

594:デフォルトの名無しさん
07/07/04 13:16:14
消えろ

595:デフォルトの名無しさん
07/07/04 14:20:11
キーダウンと書いたのを見て、実際にキーを押した事だと思ったよ・・・

596:デフォルトの名無しさん
07/07/04 16:50:55
こんにちは、ちょっとした疑問の解決作を教えてください。

エディタをサブクラッシングしようと思い、以下のコードを書きました。


WNDPROC OldEditProc;
LRESULT CALLBACK EditSubProc(HWND,UINT,WPARAM,LPARAM);

...

OldEditProc=(WNDPROC)SetWindowLong(hEdit,GWL_WNDPROC,(LONG)EditSubProc);


しかし、これだとデフォルトの警告レベルで、warningが2つもでるんですよね・・・。
( 『LRESULTからLONGに切り詰めます』 というのと、『LONGからWNDPROCへ変換します』 というもの )

これ、どうにかしてwarningを取る方法は無いでしょうか? ご教授御願いいたします。

環境はWinXPPro-sp2 ,VC++.NET です。

597:デフォルトの名無しさん
07/07/04 18:04:20
何故warningになるのか考え、それの対処を調べるんだ
ヒント:64bit

598:デフォルトの名無しさん
07/07/04 18:28:42
>>596
#include <atlwin.h>した上で、SetWindowLongではなく、SetWindowLongPtrを使え。
その際、そのLONG型のキャストをLONG_PTR型へのキャストにする必要がある。。
URLリンク(msdn.microsoft.com)

<atlwin.h>をインクルードする理由は、<windows.h>をインクルードしただけだと、
32ビット版でのSetWindowLongPtrがあまりにもお粗末なので、
結局警告が表示されることに変わりがないから。

599:596
07/07/05 00:32:56
おぉ〜凄いっ!
教えていただいた通りにやってみると、warningが出ないです〜っ!!

大変参考になりました。
本当にありがとうございました。 m(。−_−。)m

600:デフォルトの名無しさん
07/07/05 11:26:11
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
これを
int APIENTRY WinMain();
こういう風にしたんですが、できませんか?

601:デフォルトの名無しさん
07/07/05 12:37:22
できません

602:デフォルトの名無しさん
07/07/05 12:40:38
できます


603:デフォルトの名無しさん
07/07/05 12:42:48
できますん

604:デフォルトの名無しさん
07/07/05 12:43:56
つかわないんならなくてもいいだろ

605:デフォルトの名無しさん
07/07/05 12:44:06
できます



606:デフォルトの名無しさん
07/07/05 13:01:44
APIENTRYだから、できませんね。
__cdeclならできるんだけど。


607:デフォルトの名無しさん
07/07/05 13:33:23
できます




608:デフォルトの名無しさん
07/07/05 13:34:51
あぴえんとりー

609:デフォルトの名無しさん
07/07/05 13:44:52
キチガイが住み付いてるな。

610:デフォルトの名無しさん
07/07/05 13:53:45
自己紹介乙

611:デフォルトの名無しさん
07/07/05 13:53:54
自分で分かってるなら大丈夫だから安心していいよ

612:デフォルトの名無しさん
07/07/05 13:54:48
ワレワレハ、ウチュウジンダ

613:デフォルトの名無しさん
07/07/05 14:08:55
そういえば言語言ってなかった・・・
C言語なんですがやっぱ無理かったです
本当にありがとうございました

614:デフォルトの名無しさん
07/07/05 15:16:05
プログマーが日本語おかしいのはヤバイ
数学より国語的な能力が必要だとおもう

615:デフォルトの名無しさん
07/07/05 15:17:37
プログマー

616:デフォルトの名無しさん
07/07/05 15:19:02
釣られるプロだクマー

617:デフォルトの名無しさん
07/07/05 15:20:19
プラグマー

618:デフォルトの名無しさん
07/07/05 15:21:26
>>617
差し替えで簡単に置きかえられるプログラマー?

619:デフォルトの名無しさん
07/07/05 15:23:10
#pragmar

620:デフォルトの名無しさん
07/07/05 15:25:44
プギャー

621:デフォルトの名無しさん
07/07/05 15:37:07
まるで動物園だな、ここは

622:デフォルトの名無しさん
07/07/05 16:34:57
人間だって動物さ

623:デフォルトの名無しさん
07/07/05 18:31:04
マ板は釣り易いことで有名くま

624:デフォルトの名無しさん
07/07/05 18:33:42
プラモデルみたいなプラグラマ

625:デフォルトの名無しさん
07/07/05 19:35:36
>>624
語源は両方ともギリシア語だけど、出所が違うの。

スレ違いだからほどほどに。

626:デフォルトの名無しさん
07/07/05 21:38:06
プログマー笑ったwwwwwwwwwwwwwww

627:デフォルトの名無しさん
07/07/05 21:45:13
面白くない。いい加減にしとけ

628:デフォルトの名無しさん
07/07/06 00:08:47
ウィンドウのタイトルバー上のホイール操作で
ウィンドウを半透明にできるユーティリティを作りたいんだが
システムフックしてDLL上でコードを長々と書いて一応できることはわかった。
だけどexe側で処理させたいのだが、なにかよい方法はないだろうか?
exeに、呼び出されたDllのインスタンスハンドルを送ってそこで明示的な関数ロードとかやったけどできなかったよ

629:デフォルトの名無しさん
07/07/06 01:00:07
今市意味が分からないんだけど

ホイール操作を捕まえて半透明化するサブクラス化用のプロシージャを書いて
フックを入れてからサブクラス化すればいいと思う

630:デフォルトの名無しさん
07/07/06 01:36:59
>>628
そういう機能のWindowTPというソフトがあるが、自分で作りたいだけ?

631:デフォルトの名無しさん
07/07/06 02:12:13
>>629
おk、サブクラス化試してみるわ
ありがと

>>630
今作ってる奴の機能の一部として搭載予定。
まぁ自己満足だけどね
ありがとー

632:628
07/07/06 03:28:14
('A`)・・・・?


URLリンク(techtips.belution.com)
>指定されたウィンドウの属性を変更する SetWindowLong() は、
>指定するウィンドウが呼び出し側のスレッドと同じプロセスに属していない場合に失敗します。

これを信じて四苦八苦してたのに
自身のexe側から他のプロセスのウィンドウを半透明化できちゃったぞ・・・?
う〜む・・・

633:デフォルトの名無しさん
07/07/06 04:25:29
そんな古い上にどこの馬の骨が書いたか分からんようなサイト見ずに、MSDN読めよ。

URLリンク(msdn2.microsoft.com)
> Windows 95/98/Me: The SetWindowLong function may fail if the window specified by the hWnd parameter does not belong to the same process as the calling thread.

634:デフォルトの名無しさん
07/07/06 13:45:15
Dllから呼び出したダイアログにXPスタイルが効かないんだけどなんでだかわかる?
manifestやらcomctl32やらをexeの設定方法でやってんのがダメなのか…。

わかんなくて頭爆発しそうなのでそろそろ米国行きの飛行機に乗りに行きます。



635:デフォルトの名無しさん
07/07/06 13:51:55
どうぞ。

636:デフォルトの名無しさん
07/07/06 13:52:50
そのDLLを呼んでるEXEの設定はどうなのよ

637:634
07/07/06 15:08:31
>>636
最終的に写真屋のフィルタ(8bf)にするDLLなんでナカミはよぅわからんのです。

ただ、さっき「猫でも〜」の外部DLLからダイアログ呼ぶプログラムでも
試してみたけどコレもダメだったので
写真屋のAPIの問題っつーより私の問題らしいです。



638:デフォルトの名無しさん
07/07/06 15:52:17
>>634
ISOLATION_AWARE_ENABLEDについて調べるんだ

639:634
07/07/06 21:29:52
うおおおおおおおおおお!
プリプロセッサにISOLATION_AWARE_ENABLED書いただけで
うまくいきましたッ!

>>638

ありがとーーーーーーー!
愛してるッ!


640:デフォルトの名無しさん
07/07/06 22:21:54
きんもー☆

641:デフォルトの名無しさん
07/07/07 08:08:18
任意のプロセスがCreateFileしたファイルのパス、それを取得する方法て何かないですか?

使用OSはVistaです

フィルタドライバ書かなきゃいけないんでしょうか?…

642:デフォルトの名無しさん
07/07/07 08:26:24
CreateFileのAPIフッ(ry

643:デフォルトの名無しさん
07/07/07 08:52:36
DLL側から、呼ばれているプロセスのIDかウインドウハンドルを取得するにはどうすればいいですか?

FindWindowでウインドウタイトル指定して取得していたんですが、
多重起動されたらだめじゃんってことに気が付いて・・・・

おしえてくださいm(_ _)m

644:デフォルトの名無しさん
07/07/07 09:05:30
普通に自分のプロセスIDを取得しろよ。
DLLをなんだと思っているんだ?

645:デフォルトの名無しさん
07/07/07 09:43:56
>>642
VistaでAPIフックしたら実行時に警告出ませんか?

646:デフォルトの名無しさん
07/07/07 10:31:26
>>644
普通にプロセスIDを取得する方法を教えてくださいm(_ _)m

647:デフォルトの名無しさん
07/07/07 10:33:33
GetProcessID()

648:デフォルトの名無しさん
07/07/07 10:35:14
URLリンク(www.microsoft.com)

649:デフォルトの名無しさん
07/07/07 10:44:49
>>646
GetCurrentProcessId()

名前からしてそのものズバリな訳だが
このくらいググれ

650:デフォルトの名無しさん
07/07/07 10:54:50
>>645
> VistaでAPIフックしたら実行時に警告出ませんか?
そりゃあドライバでも一緒だと思うが?

651:デフォルトの名無しさん
07/07/07 10:56:57
人を利用する事しか頭に無い奴に回答をくれてやるな。

652:デフォルトの名無しさん
07/07/07 12:05:24
32bitVistaだとドライバの場合ロゴとらないとWindowsの動作自体に制限かかるんだっけ?

64bitだとフックもドライバも現実的じゃないよな

653:デフォルトの名無しさん
07/07/07 12:15:12
いつも思うんだけど
なんでこんなにフックしたい奴が多いんだ

654:デフォルトの名無しさん
07/07/07 12:23:35
フックで躓く奴が多いんだと思われ
別に集まりたくてフックしたい奴らばっかり集まってるわけじゃないでそ

655:デフォルトの名無しさん
07/07/07 13:42:09
あやしげなソフト作ろうとしてんだろうな

656:デフォルトの名無しさん
07/07/07 14:36:33
>>649
ググるよりも前に、PlatformSDKのヘルプ、または、MSDNライブラリだろう。
検索してもいいし、普通に目次から辿っても見つけられる。
ていうか、普通に目次から辿って見つけられないのは、よほどのアレだぞ。

657:デフォルトの名無しさん
07/07/07 14:41:47
>>653
質問のしかたを見ると、厨房くさい
やろうとしていることを見ると、怪しい

>>555あたりなんかは、
特定のサイトにアクセスしているときだけキーログを取ろうとしている
とも見れるしなぁ。

怪しいプログラムを書くなら、人に聞かずに自力で何とかしろってんだ。

658:デフォルトの名無しさん
07/07/07 15:09:00
するどい人だな。まったく想像できなかったぜ

659:デフォルトの名無しさん
07/07/07 19:10:52
>>653
そりゃあ2ちゃんだから釣り師が多いんだろ

660:デフォルトの名無しさん
07/07/07 19:55:26
上手い事言ったつもりかも知れんが面白くない

661:デフォルトの名無しさん
07/07/07 21:45:07
俺窓プログラム作って初めて実用的なの作ったのはフック使ったネトゲーツールだったな
調べながら実装したし窓プログラムの根本的な概念もそんな理解してなかったから
コードはめちゃくちゃ汚かったが勉強にはなったな。
そうこうしながら1年後あたりにAPIフック使ってパケット取得ツールも作ったわ。
APIフックは俺がしょぼいからだろうが4ヶ月かかってやっとできたんだけどなw

フックぐらいはちょっと頑張ればすぐできるだろ。
人に聞くのが悪いとは言わないが、フックに関しては
参考サイトいっぱいあるんだから自分で調べようぜ。
特に目的が限りなく黒に近いものを作るんならなおさら。


662:デフォルトの名無しさん
07/07/07 21:48:36
単なる物臭か根性無しだろ

どうせヒマ人が答えるんだしいいじゃねーか別に

663:デフォルトの名無しさん
07/07/07 21:49:53
オレには真っ黒にしか見えないが、
そういうことをやってる当人には灰色に見えるんだろうな

664:デフォルトの名無しさん
07/07/07 21:56:14
ためしに検索したらたくさんでてきた

しょぼいキーロガー程度ならすぐできるな

665:661
07/07/07 22:06:04
>>663
まあ真っ黒だわなw

ただ、そういうの作る奴が全部俺みたいな考えだとは思わないが
俺自身はネトゲーツール作って使おうという思考よりも
技術的な勉強をする為にそれを作ろうっていうのが
どっちかって言うと大きかったな。


それの作成にあたっての動機付け(動機があったほうが頑張るから)
が欲しかったからたまたまやってたネトゲーをターゲットにした感じ。

まあ、ここはそういう議論スレじゃないから以降これに関しての発言はしない。

666:デフォルトの名無しさん
07/07/07 22:15:24
逆だろ。
升ツール作る為に技術的な勉強をする必要があったんだろ。

まぁ一般的な解凍ツールやブラウザとかは既に便利なものを作ってるヤツがいるからな
自分が利用する便利なツールで世の中に出回ってないものしか作ろうとしたら
真っ黒なツールしかねーんだろうけど。

667:デフォルトの名無しさん
07/07/07 22:18:43
フックが真っ黒ならTClockすら真っ黒だし
悪用できる技術=悪じゃないでしょ

スレ違いも程々にしとけ

668:デフォルトの名無しさん
07/07/07 22:23:16
犯罪幇助にしか使われなくなったら京都府警がUSER32.DLLを取り締まるから無問題。

669:デフォルトの名無しさん
07/07/07 23:30:04
>>668
京都府警じゃ信用ならん
神奈川県警にしとけ

670:デフォルトの名無しさん
07/07/07 23:34:47
フックは夢が広がるから困る

671:デフォルトの名無しさん
07/07/07 23:36:08
いい加減にしろ

672:デフォルトの名無しさん
07/07/08 00:00:38
いい加減にしろ

673:デフォルトの名無しさん
07/07/08 00:06:15
どうもありがとうございました。

674:デフォルトの名無しさん
07/07/08 00:25:49
フックってなんだよ素人の俺に説明しろ

675:デフォルトの名無しさん
07/07/08 00:26:15
ヒント:船長

676:デフォルトの名無しさん
07/07/08 00:34:23
ガッツ石松の左

677:デフォルトの名無しさん
07/07/08 00:49:02
ワロスw

678:デフォルトの名無しさん
07/07/08 01:23:45
上岡龍太郎

679:デフォルトの名無しさん
07/07/08 02:42:57
こんな時間に人がいるとは思えないが。。

リソースファイルを使わずにアイコンをロードして使いたい場合
CreateBitmapを使えばいいんでしょうか?
それとも他にアイコン専用のAPIがあるんでしょうか?

680:デフォルトの名無しさん
07/07/08 04:04:32
意味が分からない。
ファイルから読み込むならLoadImage使え。
作るならCreateIcon使え。

681:デフォルトの名無しさん
07/07/08 07:29:42
LoadIcon

682:デフォルトの名無しさん
07/07/08 10:36:43
WinAPIを勉強しようと思いWindowsゲームプログラミングという本を読みながら勉強
してるんですが、この本の通り打ち込んでもエラーでコンパイルできないところ
があります。
このソースなんですが何故でしょうか?すみませんが教えてください(´・ω・`)
ソフトはPlatformSDKをインストールしてVisual C++ 2005でやっています

#include <windows.h>

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
) {
BYTE * bytes = "BYTE *";
PBYTE pByte = "PBYTE";
LPBYTE lpByte = "LPBYTE";

MessageBox(NULL , bytes , NULL , MB_OK);
MessageBox(NULL , pByte , NULL , MB_OK);
MessageBox(NULL , lpByte , NULL , MB_OK);
return 0;
}

683:デフォルトの名無しさん
07/07/08 10:39:25
>>682
どう見てもスレ違いです

684:デフォルトの名無しさん
07/07/08 10:42:38
ごめんスレ違いだったのか

685:デフォルトの名無しさん
07/07/08 10:57:34
>>682
たぶん、コンパイラ設定だろうね。
エラーさらしてみ

686:デフォルトの名無しさん
07/07/08 10:57:53
>>682
まず質問として何のエラーかを明確にしてくれないと困る。

それのソースはCか?C++か?
Cだとしたら値を代入する前に型宣言を最初に全てやってないと
コンパイル時エラーになったと記憶してるが。

BYTE * bytes = "BYTE *";
PBYTE pByte = "PBYTE";
LPBYTE lpByte = "LPBYTE";

BYTE *byte;
PBYTE pByte;
LPBYTE lpByte;

byte = "BYTE *";
pByte = "PBYTE";
lpByte = "LPBYTE";
※但し、実験してないから間違ってるかもしれん(そこまで保証する義理はないが)

環境がVC2005ならMessageBoxの第二引数の型をキャストしないと警告も出ないか?

687:デフォルトの名無しさん
07/07/08 11:08:57
> Cだとしたら値を代入する前に型宣言を最初に全てやってないと 
> コンパイル時エラーになったと記憶してるが。 
ブロック冒頭の変数宣言時の初期化する/しないは自由です。

/* cでもOK */
void test()
{
  int n1;
  int n2 = 1;
  int n3;
  int n4 = n2;
    :


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4326日前に更新/179 KB
担当:undef