■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build34
251 名前:デフォルトの名無しさん :2005/08/11(木) 13:30:00
>>247
VCスレ池

252 名前:デフォルトの名無しさん :2005/08/11(木) 17:49:48
>>235

察するに、CriticalSectionで囲まれた部分が何か重い処理を必要としていて、
もしこの部分を他のスレッドが使用していたら、待つのに時間がかかるから
他のスレッドはその処理を実行するのを一時あきらめよう、っていうことかな?

bool g_bEnter = false;
void f1()
{
EnterCriticalSection(&cs);
bEnter = true;

bEnter = false;
LeaveCriticalSecion(&cs);
}
void f2()
{
EnterCriticalSection(&cs);
bEnter = true;

bEnter = false;
LeaveCriticalSecion(&cs);
}
としときゃ、bEnterを調べることによってロックされているかわかるんじゃない?
まあ多少穴はあるが、用は足りるのでは?

253 名前:デフォルトの名無しさん :2005/08/11(木) 18:06:39
長時間ロックするリソースを複数のスレッドで触るのは良くないです。
スレッド分割の設計を見直したほうがいいと思う。


254 名前:デフォルトの名無しさん :2005/08/11(木) 18:22:13
スレ違いですが、シューティングゲームを作ろうと思っています。
WM_TIMERの時に最小限の範囲(rect)をInvalidateRectして
WM_ERASEBKGNDも使ってます。
しかし、それでもちらつきがとれません。
どうすればいいでしょうか?

255 名前:デフォルトの名無しさん :2005/08/11(木) 18:23:50
GUIなどを担当するプライマリスレッドがあって、
プライマリスレッドがワーカースレッドを作って何か処理させる、というモデルなんじゃないの?
ワーカースレッドがひとつ動いてる間は、新たなワーカースレッドを作って処理させるためのボタン
なりメニューなりをDisableにして禁止したい、というケースじゃないかと想像してるんだが。
これは普通に、あっていいと思うけど。

256 名前:デフォルトの名無しさん :2005/08/11(木) 18:26:13
>>254
スレ違いといいつつ書き込む馬鹿に教える事など無い

257 名前:デフォルトの名無しさん :2005/08/11(木) 18:27:42
まあまあ。
>>254
それはゲーム屋(俺は違うが)はみんな知ってるダブルバッファリング処理をしてないからだね。
ゲームならWind32APIを直接使わずに、DirectX9.0c SDKを使う方がいいと思うよ。

258 名前:デフォルトの名無しさん :2005/08/11(木) 18:29:43
スレ違いというより鼬害。

259 名前:254 :2005/08/11(木) 18:53:35
>257
dクス。ついにDirectXか

260 名前:デフォルトの名無しさん :2005/08/11(木) 19:13:14
ついにDirectXか
ついにDirectXか
ついにDirectXか
ついにDirectXか

今更DirectXか、だろ

261 名前:デフォルトの名無しさん :2005/08/11(木) 19:32:13
Win32API を使用して、WindowsNTのIPアドレスを自動変更する
プログラムを作成したいのですが、IPアドレスエディットコントロールで
どうしてもIPを拾えず、変更も出来ません。
何かうまい方法はないでしょうか?



262 名前:デフォルトの名無しさん :2005/08/11(木) 19:34:12
IPアドレスエディットコントロールは、
ただ、ネットワークの設定画面なんかでよくある
IPアドレス入力に特化したエディットコントロールってだけですから

263 名前:デフォルトの名無しさん :2005/08/11(木) 19:38:38
>>255
じゃぁロックの設計が良くない。

本当にロックしないといけないのは、
ワーカースレッドが触っている対象物ではなく、
ワーカースレッドが動いているかどうかを管理している部分だろう。

264 名前:261 :2005/08/11(木) 19:40:23
ちょっと聞き方が悪かったです==;
2000やXPではIP取得し変更をかけられたんですが
NTで使える命令が知りたかったのですが・・


265 名前:263 :2005/08/11(木) 19:41:01
管理している部分で、アトミックな操作が必要な部分だけをロックする。
そうすりゃ、ロック待ちの時間はとても短くなるでしょ。

266 名前:デフォルトの名無しさん :2005/08/11(木) 19:49:55
よくわからないが、ひょっとすると、WindowsのIP変更ダイアログを
自動で出現させて、そこのIPアドレスエディットコントロールを弄る、という
話なのか?

267 名前:261 :2005/08/11(木) 20:01:01
NTで下記の命令が使えないみたいです。

NicSet.IpAddress
NicSet.IpSubnet
NicSet.DefaultIpGateway
NicSet.DNSServerSearchOrder

NTでは無理なのでしょうか?


268 名前:デフォルトの名無しさん :2005/08/11(木) 20:16:02
.NETか

269 名前:デフォルトの名無しさん :2005/08/11(木) 20:23:46
>>267
よーわからんが、本当にNicSetってWin32APIの一部なの?
MSDNで検索してもそれらの関数ひとつもヒットしないんだが。


270 名前:デフォルトの名無しさん :2005/08/11(木) 20:43:35
WMIだべ。

271 名前:デフォルトの名無しさん :2005/08/11(木) 20:45:16
>>237
そういう API があるかどうか以前に、本質的に無理だろ?
「ロックされていない」という返却値を受け取った直後にロックされたらどうするんだよ

272 名前:デフォルトの名無しさん :2005/08/11(木) 20:47:35
>>269
NicSetはインスタンス名だろう
ググったら同じ名前で宣言しとるVBソースとかあったし
そんなとこから引っ張ってきてんじゃないか?

>>267
ち な み に API で は あ り ま せ ん

273 名前:デフォルトの名無しさん :2005/08/11(木) 20:56:52
WMIって便利な仕組みをWIN2Kで実装したんで使って〜
って2000が出てきたときにMS方面から聞いた記憶がある。

274 名前:デフォルトの名無しさん :2005/08/11(木) 21:08:44
まぁ、動かん言うことはNTには無いということだろう

275 名前:デフォルトの名無しさん :2005/08/12(金) 07:32:31
意味不明のコンパイルエラーがでると思ったら
richedit.hに
#define wReserved wEffects
の一文が

276 名前:デフォルトの名無しさん :2005/08/12(金) 10:37:43
OSが勝手に開放してもかまわないようなメモリ領域をアロケートすることってできないですか?
どうでもいい高速化のためのキャッシュデータに使ったりして
スワップしそうならその領域を勝手に開放して新規の確保には失敗するとか。

277 名前:デフォルトの名無しさん :2005/08/12(金) 10:45:57
>>276
キャッシュ用のメモリは、
確保する最大サイズを指定した独自のヒープから確保するようにすれば?


278 名前:デフォルトの名無しさん :2005/08/12(金) 10:53:14
あるかないか、あるならなんというAPIかという質問なんですが。

279 名前:デフォルトの名無しさん :2005/08/12(金) 10:54:47
>>276>>278
そういったものはない。

280 名前:デフォルトの名無しさん :2005/08/12(金) 10:55:34
ヤバイ。winAPIヤバイ。まじでヤバイよ、マジヤバイ。
winAPIヤバイ。
まず広い。もう広いなんてもんじゃない。超広い。
広いとかっても
「東京ドーム20個ぶんくらい?」
とか、もう、そういうレベルじゃない。
何しろ無限。スゲェ!なんか単位とか無いの。何坪とか何?fとかを超越してる。無限だし超広い。
しかも膨張してるらしい。ヤバイよ、膨張だよ。
だって普通は地球とか膨張しないじゃん。だって自分の部屋の廊下がだんだん伸びてったら困るじゃん。トイレとか超遠いとか困るっしょ。
通学路が伸びて、一年のときは徒歩10分だったのに、三年のときは自転車で二時間とか泣くっしょ。
だから地球とか膨張しない。話のわかるヤツだ。
けど宇宙はヤバイ。そんなの気にしない。膨張しまくり。最も遠くから到達する光とか比較してもよくわかんないくらい遠い。ヤバすぎ。
無限っていたけど、もしかしたら有限かもしんない。でも有限って事にすると
「じゃあ、宇宙の端の外側ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超寒い。約1ケルビン。摂氏で言うと−272℃。ヤバイ。寒すぎ。バナナで釘打つ暇もなく死ぬ。怖い。
それに超何も無い。超ガラガラ。それに超のんびり。億年とか平気で出てくる。億年て。小学生でも言わねぇよ、最近。
なんつっても宇宙は馬力が凄い。無限とか平気だし。
うちらなんて無限とかたかだか積分計算で出てきただけで上手く扱えないから有限にしたり、fと置いてみたり、演算子使ったりするのに、
宇宙は全然平気。無限を無限のまま扱ってる。凄い。ヤバイ。
とにかく貴様ら、宇宙のヤバさをもっと知るべきだと思います。
そんなヤバイ宇宙に出て行ったハッブルとか超偉い。もっとがんばれ。超がんばれ。

281 名前:デフォルトの名無しさん :2005/08/12(金) 10:57:29
宇宙のままになっている所を直せよ。

282 名前:デフォルトの名無しさん :2005/08/12(金) 11:19:40
こんにちは

リッチエディットでSetOptions(ECOOP_OR,ECO_NOHIDESEL);を指定すると、
スクロールバーの表示がおかしくなるのですが、
このような不具合をご存知な人はいますか?

283 名前:デフォルトの名無しさん :2005/08/12(金) 11:55:46
>>278
キャッシュに使ってる最中にOSが勝手に解放したらどうなるのか考えたら
そんなものがあるわけないことくらい分かるだろ

284 名前:デフォルトの名無しさん :2005/08/12(金) 12:30:49
だよな

285 名前:282 :2005/08/12(金) 12:55:38
あげますあげます

286 名前:デフォルトの名無しさん :2005/08/12(金) 12:59:12
こめんとああうしろあうしろあう

287 名前:デフォルトの名無しさん :2005/08/12(金) 16:46:13
pMsgBox = GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");

このように一度ロードしたDLLを開放せず何度もロードを繰り返して大丈夫でしょうか?
同じDLLでLoadLibraryを繰り返し実行してみたところ何度実行してもインスタンスハンドルが変わらなかったので、
一度メモリにロードされたものは再度ロードしようとしても実際はロードされないのだと思いますが・・・。

288 名前:デフォルトの名無しさん :2005/08/12(金) 17:15:12
C/C++プログラマは、大丈夫と明言されていない場合は危険性があって当たり前と覚悟するクセをつけること。

289 名前:デフォルトの名無しさん :2005/08/12(金) 17:30:17
ロジとかM$のマウスについてるチルトホイールの左右は検出できませんか。
point32解析するしかないのかなぁ

290 名前:デフォルトの名無しさん :2005/08/12(金) 17:40:05
>>288
dクス。
エラー処理は手抜きせず呼んだあとはちゃんと開放するようにします。

291 名前:デフォルトの名無しさん :2005/08/12(金) 18:17:43
CreateToolhelp32Snapshotだとsvchostとかのフルパスは取得出来ないのですか?
エクスプローラが親プロセスになってるプログラムなら取得出来るのですが…。

292 名前:デフォルトの名無しさん :2005/08/12(金) 19:30:36
>>287
既にロード済みであることがわかっている場合はGetModuleHandle()。
LoadLibrary()とFreeLibrary()は参照カウンタを使っているとAdvanced Windowsに書いてあったような気がする。

293 名前:デフォルトの名無しさん :2005/08/12(金) 19:39:04
>>291
普通に取れると思うけど。

294 名前:デフォルトの名無しさん :2005/08/12(金) 19:46:34
質問:
スクリーンセーバとか、作るとき、IMEを消したいんですが、
そんなAPI関数ありましたっけ? 
それとも何か他の方法が、、、?

295 名前:デフォルトの名無しさん :2005/08/12(金) 19:49:07
なんでこのスレはフックの話が多いの?

ウィルスとかトロイの木馬とか作ってる香具師ばっかりなのか?

296 名前:デフォルトの名無しさん :2005/08/12(金) 19:50:51
ソース持ってる組織に入れない人が寂しがるスレなのさ

297 名前:デフォルトの名無しさん :2005/08/12(金) 19:58:39
>>294
無い。別の方法を使う。「VC++ 立川さん」でググれ。


298 名前:294 :2005/08/12(金) 20:14:30
>>297
ググッた。 出た。 わかた。 
ありがと。 この立川さんって人すごいね?

299 名前:デフォルトの名無しさん :2005/08/12(金) 21:00:29
>>289
ただの横スクロール

300 名前:デフォルトの名無しさん :2005/08/12(金) 21:11:16
>>295
使用用途の話はスレ違い。
だが、フックやプロセスメモリアクセスはイヤンな用途しか使い道がないような希ガス。
というよりその関数や機能自体そんな目的で作られてるようにも思える。

301 名前:デフォルトの名無しさん :2005/08/12(金) 21:16:11
>というよりその関数や機能自体そんな目的で作られてるようにも思える。

アフォか

302 名前:デフォルトの名無しさん :2005/08/12(金) 21:34:13
SetWindowPosでWindowが移動出来ないんです。
SetWindowPos( m_hWnd , rect , SWP_NOSIZE);
って感じで実装してるんですが、rect内容が変わってる事、戻り値が0になってること、フラグの組み合わせなど
確認したんですが、どれもダメで。
何がいけないんでしょう?、ん〜わかんない。
よろしくお願いします。


303 名前:デフォルトの名無しさん :2005/08/12(金) 21:45:04
>>293
たぶん制限ユーザーなんだろう。

304 名前:デフォルトの名無しさん :2005/08/12(金) 22:09:21
>>301
フック系関数やReadProcessMemory、WriteProcessMemoryの使い道を述べよ

305 名前:デフォルトの名無しさん :2005/08/12(金) 22:19:12
>>304
ウイルス...

306 名前:デフォルトの名無しさん :2005/08/12(金) 22:20:35
デバッガ

307 名前:デフォルトの名無しさん :2005/08/12(金) 22:21:18
> フック系関数
MFCのソースでも見ろ
> ReadProcessMemory、WriteProcessMemory
MSDNの分類見れば自明

308 名前:デフォルトの名無しさん :2005/08/12(金) 22:23:00
>>304
デバッガ

309 名前:デフォルトの名無しさん :2005/08/12(金) 23:39:39
デバッガを作っているわけでも、
CBTを作っているわけでもないのに、
それらのAPIを使うのは、
行儀が悪いよね。

310 名前:デフォルトの名無しさん :2005/08/12(金) 23:47:25
それらのAPIがスパイウェアやウイルスのためにあるのはもはや明確

311 名前:デフォルトの名無しさん :2005/08/12(金) 23:50:53
DeleteFileなんてAPIがあるからウイルスにファイルを消されるんだ。
ReadFileなんてAPIがあるからウイルスに(ry

312 名前:デフォルトの名無しさん :2005/08/12(金) 23:52:57
BitBltなんてAPIがあるから山田にスクリーンショットを(ry

313 名前:デフォルトの名無しさん :2005/08/12(金) 23:57:44
そいや、前スレの終わりごろに、Winnyをクラックしようとしてる香具師がいたな。

アプリケーションのファイルやレジストリのアクセスを監視したければ、
Sysinternalsのツールのようなやり方をすべきで、
フックしたりすべきじゃないんだよな。

314 名前:デフォルトの名無しさん :2005/08/13(土) 00:01:38
>>311>>312
DeleteFileもReadFileもBitBltもウイルス以外に使い道は広い。
だがWriteProcessMemoryなんてデバッガとウイルスとクラックツールぐらいしか使い道がない。
デバッガ作れるような技術がある奴ならWriteProcessMemory相当のコードは書けると思うが。
それにデバッガ作る奴なんてそれほど多くない。
これはMSが厨房向けに容易にウイルスが作成できる環境を提供してると思われ。

315 名前:デフォルトの名無しさん :2005/08/13(土) 00:07:55
> デバッガ作れるような技術がある奴ならWriteProcessMemory相当のコードは
> 書けると思うが。
ReadFileがなくてもファイルを読めるのか? (メモリマップトファイルを使えば
読めるがそういう話じゃなくて)
APIってそういうものだろ

316 名前:デフォルトの名無しさん :2005/08/13(土) 00:09:02
> これはMSが厨房向けに容易にウイルスが作成できる環境を提供してると思われ。
それでMSにどういう得があるんだよ
デンパ垂れ流すのもたいがいにしろ

317 名前:デフォルトの名無しさん :2005/08/13(土) 00:12:19
>>313
WOW64のファイルシステムリダイレクションやレジストリリダイレクションが
ユーザーモードで実装されていることについてはどうお考えですか

318 名前:デフォルトの名無しさん :2005/08/13(土) 00:34:44
MSマウスの左右のサイドキーが押された時に発生するメッセージは何でしょうか?
また、発生するメッセージを調べるにはどうしたらいいのでしょうか?

319 名前:デフォルトの名無しさん :2005/08/13(土) 00:53:42
>>318
つ [Spy++]

320 名前: ◆Pu/ODYSSEY :2005/08/13(土) 01:10:28
あれってXBUTTONだと思ったが違ったっけ?
第4・第5とも同じメッセージが割り当てられてるから、PARAM値を見ないと判定できないんじゃなかったっけ。

321 名前:291 :2005/08/13(土) 01:22:09
制限ユーザーじゃないんだけどなー。
何故かC:\からのフルパスが取れるのは一部だけ…

322 名前:デフォルトの名無しさん :2005/08/13(土) 01:43:24
んーAdministratorだとフルパスが取れたからそうなのかと思ったけど外してたか

323 名前:デフォルトの名無しさん :2005/08/13(土) 02:37:19
>>317
この話といったいどんな関係が?

それらはフックすることでAPIコール前に調整しているのではなく、
APIコールした後にOSのモジュール内で調整しているんですよ。

324 名前:デフォルトの名無しさん :2005/08/13(土) 02:44:38
>>323
> この話といったいどんな関係が?
「フックしたりすべきじゃない」と考える論拠によるのでお聞かせ願えますか

325 名前:デフォルトの名無しさん :2005/08/13(土) 02:51:22
>>291
どうやってる?
具体的にコードを示したほうがいいぞ。

エスパー能力を発揮すると・・・
PROCESSENTRY32構造体のszExeFileを見てたりする?

EnumProcessModulesして、
GetModuleFileNameExしたらどう?


326 名前:デフォルトの名無しさん :2005/08/13(土) 02:54:45
>>324
それじゃわからない。
もっと詳しく、この話とどう関係するのか説明してよ。

どうしてWOW64だとフックしなきゃいけないの?

327 名前:デフォルトの名無しさん :2005/08/13(土) 03:22:14
317じゃないが。

>>304
OSからしてソース非公開である以上、アプリがソース公開されているはずもなく、
ソースのない状況でもアプリをメンテナンスする必要性(あるいは需要)がある以上、
フックのような仕組みは必要悪として存在せざるをえない。
(バイナリパッチが使えないシチュエーションも存在する)

>>313
カーネルモードドライバでやるべきってのは間違い。
その程度の用途でいちいちカーネルモードにコード突っ込んでるようじゃ、
とてもじゃないが安定したシステムなんか望めない。
皆がSysintarnalsレベルの技術者ではない。

まあ、Server系ではフック類は無効になってるとかしたほうがいいとは、個人的には思うけどな。
あくまで「パソコン」としてのWindowsに必要なだけで、「サーバ」にはいらんだろうし。


328 名前:デフォルトの名無しさん :2005/08/13(土) 04:28:15
>>327
なるほど、フィルタドライバだとカーネルモードになるってことか。

バグがなくても危険きわまりないAPIフックと、
バグがなければ安定するフィルタドライバ、
どっちを選ぶかというと・・・後者でしょ。

なんだかんだ言ってるけど、やってることはクラックなんですよ。


329 名前:デフォルトの名無しさん :2005/08/13(土) 04:57:13
>>328
ダウト。ありえない仮定を持ち出すのは詭弁の第一歩だよ。

APIフックでコケるのはフックかけられる側プロセスだけで、
その程度でシステムダウンするほどNTカーネルはやわじゃない。
(9xは現代的OSじゃないのでしらん)
カーネルモードドライバはコケればほぼ確実にシステムごともっていく。

これはバグがどの程度あるにしたところで、変わらない事実。

> やってることはクラックなんですよ。
だから何。カーネルモードでやろうがどこでやろうが、クラックはクラックだが?

クラックかクラックじゃないかなんて、技術に対する解釈の相違にすぎんよ。
少なくともスレ違いだ。

330 名前:デフォルトの名無しさん :2005/08/13(土) 05:21:38
どうでもいいの

331 名前:デフォルトの名無しさん :2005/08/13(土) 05:35:08
あれ?

332 名前:デフォルトの名無しさん :2005/08/13(土) 05:44:59
英語版しかAPIヘルプを持っていないので四苦八苦しましたが、デバッグ機能についておおよそ理解しました。
しかし、わからないことがあります。

1. ブレークポイントを利用してデバッギーを停止させたいわけですが、APIヘルプにはデバッギー側からDebugBreak()をコールする方法しか載っていません。
INT 3やDRxを利用したい場合、システムのサポートは一切ないのでしょうか・・・?
だとすると、
INT 3 -> ReadProcessMemory()/WriteProcessMemory()を使う
DRx -> SetThreadContext()/GetThreadContext()を使う
ということでいいのでしょうか?

2. 一般の(アプリケーションの)デバッガではデバッギーをロードした時にはEIPはPEヘッダのエントリポイントになっています。
しかしCreateProcess()でCREATE_SUSPENDEDを指定した場合や、DEBUG_PROCESSを指定した場合(初期ブレークポイント例外イベントまでContinue)、スレッドコンテキストを取得してもそのような位置にはなっていません。
まあ待ちループ中なので当たり前と言えば当たり前かもしれませんが・・・
デバッガはどうやって「頭出し」を行っているのでしょうか?まさかPEヘッダを解析してエントリポイントにINT 3やDRxを仕掛けているとか・・・?
ちなみにWin98です。

333 名前:332 :2005/08/13(土) 05:55:09
あっ私は前スレ608です。

334 名前:デフォルトの名無しさん :2005/08/13(土) 07:23:30
>>329
おぃおぃ詭弁だとレッテルはって誤魔化すのはヤメれ。

APIフック
バグがあると危険
バグがなくても危険

フィルタドライバ
バグがあると危険
バグがなければ安全


ちなみにSysinternalsのFilemonはクラックじゃないぞ。
OSが備えている機能を意図した通りに使っているからね。

それに対して、他のプロセスに任意のDLLを割り込ませるのはクラックだろう。

335 名前:デフォルトの名無しさん :2005/08/13(土) 08:03:27
>>334
詭弁に反論する意味がないのは自明だと思うので、無視させてもらう。

336 名前:デフォルトの名無しさん :2005/08/13(土) 08:10:30
>>335


フックだってグローバルにやれば、バグがあったら大惨事だ。
そんなに安全だっていうなら、APIをフックするDLLを、
レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windowsの
AppInit_DLLs
に設定してみ。

337 名前:デフォルトの名無しさん :2005/08/13(土) 08:17:22
何かさ、クラックっていう言葉のニュアンスがオレが思ってるのと違う。
技術の内容じゃなくて、悪意のあるのがクラックかとオモテタヨ。
このごろは説明書に載ってない使い方をするとクラックなんですか。
くわばらくわばら。

338 名前:デフォルトの名無しさん :2005/08/13(土) 08:18:51
>>336
バグがなければ安全
→事実に対して仮定を持ち出す

ちなみにSysinternalsのFilemonはクラックじゃないぞ。
フックだってグローバルにやれば、バグがあったら大惨事だ。
→ごくまれな反例をとりあげる

詭弁のガイドラインくらい読もうぜ。
まあそうでなくても、常識的なWindowsプログラマなら、お前さんの事なんか信用しないけどな。
おおっと、こう言ってしまうと
→主観で決め付ける
に該当してしまうな。悪い悪いwww

もう黙るわ。

339 名前:デフォルトの名無しさん :2005/08/13(土) 08:25:31
>>337
大抵のソフトの説明書には使用することによって発生した損害は一切負わない
とかって免責があるからどんな使い方しても問題無いんじゃない?w

ただ俺が思うのはフリーソフトなら免責ってのはわかるが
シェアなのにその免責っておかしくね?
それこそクラックしたくなる罠


340 名前:デフォルトの名無しさん :2005/08/13(土) 08:38:46
>>337
いや、悪意あるだろ。

自分の書いたプログラムのプロセス空間に、
勝手にスレッド起こされたり、
勝手にDLL読み込ませられたり、
勝手にAPIをフックされたりしたら、
嫌だろ。

だいたいあれだろ、Winnyの動作を変えたくてクラックしようとしてるんだろ。
ただでさえWinnyやってるだけで人間の屑なのに、それをクラックするなんて・・・。


341 名前:デフォルトの名無しさん :2005/08/13(土) 08:40:22
>>338
> 詭弁のガイドラインくらい読もうぜ。

笑わせてくれるな。

ガイドラインがどういうものか、わかってないだろ。


342 名前:デフォルトの名無しさん :2005/08/13(土) 08:41:49
>>340みたいな奴に限ってかちゅ〜しゃが手放せないんだよな

343 名前:デフォルトの名無しさん :2005/08/13(土) 08:44:16
>>341
説明ヨロ

344 名前:デフォルトの名無しさん :2005/08/13(土) 08:47:16
>>339
基本的には包丁を使用することによって発生した損害をメーカが負う必要は必ずしもないのと一緒だが
それに便乗してメーカ側の怠慢による結果までどさくさまぎれに免責しようって傾向はあるな

345 名前:デフォルトの名無しさん :2005/08/13(土) 08:52:03
クオリティ低ス…

346 名前:デフォルトの名無しさん :2005/08/13(土) 09:13:36
>>340
俺は別に自分の作ったソフトがクラックされてもかまわんけど?
むしろそうやって変な動作をさせられたほうが普段見えないバグを発見してくれてよかったりする。
ある程度想定外のことをされてもまともに動くようにはしてるが。
Winnyは元々挙動に問題があるからそれを修正しようとしてるのであって不正な動作をさせようとしてるわけではないだろ。
ディスクの負荷が高すぎるからWriteFileなんかをフックして特殊なバッファリング機能をつけるとか。
47氏がタイーホされて開発が継続できないからバグや不具合の修正はユーザーの仕事。
それでいいじゃないか。

347 名前:デフォルトの名無しさん :2005/08/13(土) 09:23:45
>ある程度想定外のことをされてもまともに動くようにはしてるが。
それは無駄なコスト。
16連打クリックとか物理メモリ8MBとかそういう「想定外」ならともかく
フックなんぞされたときの動作まで保証する必要はないだろ。

348 名前:デフォルトの名無しさん :2005/08/13(土) 09:30:23
>>347
そりゃあ変な関数にすり替えられちゃダメだが。
フックできなくしてあるのではなくてフックされたら困るような設計はしてないということ。

349 名前:デフォルトの名無しさん :2005/08/13(土) 09:38:43
勝手に妙な前提条件付けて否定しにかかる変な奴がいるな

350 名前:デフォルトの名無しさん :2005/08/13(土) 09:41:28
>>348
行儀良いフックに限って言うなら、
そのフックによって挙動がおかしくなる設計というのを想像できないが。

351 名前:デフォルトの名無しさん :2005/08/13(土) 10:45:22
暗号関係のAPIを学んでいるんですが、
一部の関数に、

CP〜とCrypt〜という、プレフィクスの違うものがあるのですが、
これはどちらを使えばいいのでしょうか?

なぜかCrypt〜のほうがぐぐるとヒットしやすいのですが。
MSDNだとCPのほうが分かりやすいリンクを貼られていたりもします。
どちらも説明は同じような意味のことが書いてあるのですが……。

352 名前:デフォルトの名無しさん :2005/08/13(土) 10:52:19
勝手にしろよ

353 名前:351 :2005/08/13(土) 10:54:03
すみません。
自己解決しました
MSDNもっとよく読むべきだったOrz

354 名前:デフォルトの名無しさん :2005/08/13(土) 11:12:33
Winny厨はダウソ板にカエレ!

フックなんていうイヤラシイことは人に聞かずに自力でヤレ!

自信過剰なフックは事故のもと。安易にフックするな。

人様のプログラムに悪さする暇があったら、自分でアプリを作れ。

355 名前:デフォルトの名無しさん :2005/08/13(土) 11:16:48
フックが危ないならフィルタドライバ使えばいいじゃない

356 名前:デフォルトの名無しさん :2005/08/13(土) 11:50:41
何が目的かなんてどうでもいいよ。APIの良し悪しについて語るスレじゃないし。技術的な質問に対して答えるだけ。
質問者の目的を邪推してくだらん話をグダグダ続けてないで、もっと有意義なスレにしましょう。↓

357 名前:デフォルトの名無しさん :2005/08/13(土) 12:25:08
Winnyのフックのしかたを教えてください。
なんかIATがないんですけど。

358 名前:デフォルトの名無しさん :2005/08/13(土) 12:26:31
>>357
あるよ
http://www.iat.co.jp/

359 名前:デフォルトの名無しさん :2005/08/13(土) 12:33:07
>>357
「Winnyのフックの仕方」はなんとなくスレ違いじゃね?
ついでだからマジレスするとtelockのアンパッカーを探してください。

360 名前:デフォルトの名無しさん :2005/08/13(土) 12:35:30
>>353
えっ…気になって調べてみたけど、違いが分からないっす_| ̄|○

361 名前:デフォルトの名無しさん :2005/08/13(土) 13:02:48
WinnyのAPIフックのしかたを教えてください。
すでに走っているWinnyのAPIを乗っとりたいので、アンパックしたくありません。

362 名前:デフォルトの名無しさん :2005/08/13(土) 13:06:10
>>361
消えろ

363 名前:デフォルトの名無しさん :2005/08/13(土) 13:11:24
まあまあ。でも特定のソフトについての質問なら、なんとなくここで聞くことじゃないと思うけどねぇ。
ダウソ板の人のほうが詳しかったり?

364 名前:デフォルトの名無しさん :2005/08/13(土) 13:34:02
telockでパックされたEXEによる既存のプロセスのAPIをフックする方法を教えてください。

365 名前:デフォルトの名無しさん :2005/08/13(土) 13:35:05
フックの正当性を書いてた奴は、やっぱりny厨か。

ほんとろくでもない人間ばっかりだな。

366 名前:デフォルトの名無しさん :2005/08/13(土) 13:40:45
>>364
フックDLL注入

367 名前:デフォルトの名無しさん :2005/08/13(土) 13:42:49
てか見苦しいから止めようぜ。別にフックするつもりもないんだろ。

368 名前:デフォルトの名無しさん :2005/08/13(土) 13:48:07
http://pc8.2ch.net/test/read.cgi/tech/1123873415/

369 名前:デフォルトの名無しさん :2005/08/13(土) 13:49:42
プログラマなら手段を隠蔽されることに嫌悪感を示すものだと思っていたが、
「フックなんてない方が良い」などと言う人がいるんだなぁ

手軽な言語が流行るわけだ

370 名前: ◆Pu/ODYSSEY :2005/08/13(土) 13:53:03
コンソールアプリでprintfで出力してるものをGUI画面に出力したいと思ったことならある。
結局リダイレクトのほうがてっとり早いんかな

371 名前: ◆Pu/ODYSSEY :2005/08/13(土) 14:12:25
クラック以外にも十分有用だと思うけどねぇ
有名な2chツールでいくと、kage(かちゅ〜しゃの下駄)とか

372 名前:デフォルトの名無しさん :2005/08/13(土) 14:24:19
>>366
IATがないと言ってるだろがボケ
試しもしないで知ったか書くな!

>>365
フックは正当に認められた権利です。



373 名前:デフォルトの名無しさん :2005/08/13(土) 16:19:15
>>321
どうやってやってる?
Process32Firstだけじゃ、多分フルパスは取れないんで。
↑で取れたプロセスIDから取得しないとだめだと思うよ。

374 名前:デフォルトの名無しさん :2005/08/13(土) 16:50:00
お前ら、フックで単独スレ立てろ

375 名前:デフォルトの名無しさん :2005/08/13(土) 16:54:31
Win9xはProcess32FirstのPROCESSENTRY32.szExeFileにフルパス入る。
NT系はファイル名しか入らなかったはず。

376 名前:デフォルトの名無しさん :2005/08/13(土) 18:12:45
「フックはいかん」というならフックされたAPIをフックし返す
もしくはフックを無効化する方法を考えろ!


・・・思いつかんorz

377 名前: ◆Pu/ODYSSEY :2005/08/13(土) 18:18:22
私の肛門もフックされそうです

378 名前:デフォルトの名無しさん :2005/08/13(土) 18:19:11
フックというのが出来なかったら
ウイルスとか減りますか?

379 名前:デフォルトの名無しさん :2005/08/13(土) 18:32:20
>>376
API使わなければいんじゃね?

>>378
あんまり変わらんと思われ

380 名前:デフォルトの名無しさん :2005/08/13(土) 18:35:10
>>378
IntelliPointが動かなくなるので首吊ります

381 名前:デフォルトの名無しさん :2005/08/13(土) 19:01:30
実際問題フックさせないようにするにはどうしたらいいですかね?
先にSetHook〜をフックしておいてフックを妨害するって方法しか
出てきません。

382 名前:デフォルトの名無しさん :2005/08/13(土) 19:07:23
>>381
API使わなければいんじゃね?

383 名前:デフォルトの名無しさん :2005/08/13(土) 19:28:42
>>379, 382
おまえら頭いいな

384 名前:デフォルトの名無しさん :2005/08/13(土) 20:14:59
ヒント
UPXとかtelockとかの暗号化・圧縮・クラック防止等のツールが何をやっているのか調べればわかるよ。

売り物のソフトには、フックしたりするような行儀の悪いプログラムを妨害して
フックさせないようにする代物もあるらしい。

とりあえず俺が思いつくのは
・インポートライブラリを使わない
・メモリの要所にライトウォッチを設定して勝手に書き込まれそうになったらプロセス終了しちゃう
・CreateRemoteThreadとかのAPIを先に乗っ取って封じてしまう

385 名前:デフォルトの名無しさん :2005/08/13(土) 20:27:46
とりあえず、ハックとかクラックとかそういうスレ違いの話題は余所でやれ。
http://pc8.2ch.net/test/read.cgi/tech/1122791420/

386 名前:デフォルトの名無しさん :2005/08/13(土) 20:33:45
SDIというのは、MFCじゃないと無理なんでしょか
猫でも、というところでMDIは見たのですが。
ググってもMFCの話しか見当たらないス。

387 名前:デフォルトの名無しさん :2005/08/13(土) 20:43:01
>>386
Petzold の最初のサンプルが立派に SDI だけど、
MFC で出来ていたことの何がしたいの?

388 名前:デフォルトの名無しさん :2005/08/13(土) 20:59:00
386の言うSDIは「俺SDI」だろうな。

389 名前:デフォルトの名無しさん :2005/08/13(土) 21:07:43
>>387
Petzold本の事ですかい?
今知りました。残念ながら無いです。

今までMFC無しで作ってたプログラムに
SDIを追加したいと思いまして。

>>388
って感じ?

390 名前:デフォルトの名無しさん :2005/08/13(土) 21:10:29
>>389
ただ RegisterClass, CreateWindow して WM_DESTROY で PostQuitMessage つーだけのプログラム

391 名前:387,389 :2005/08/13(土) 21:14:46
>>390
出来るのですな!やってみます。
レス有難う御座います。

392 名前:デフォルトの名無しさん :2005/08/13(土) 22:31:46
>SDIを追加したいと思いまして。

たぶんSDIを思い切り勘違いしてるな。


393 名前:デフォルトの名無しさん :2005/08/13(土) 22:39:42
もちろん戦略防衛構想の事だよな

394 名前:デフォルトの名無しさん :2005/08/13(土) 22:40:55
UAE から国民を守るのか?

395 名前:デフォルトの名無しさん :2005/08/13(土) 22:42:07
Windows標準APIではないですが、nkf32でJISをShift-JISに変換するとき、半角カナと
一部の特殊記号(1byte文字)のみ変換せずにそのままスルーすることはできないでしょうか?
(半角カナを全角変換してそのまま出すというAPIはあるのですが)

これらの文字をnkf32でShift-JISに変換すると、誤変換されて文字化けしまい、困っています


396 名前:デフォルトの名無しさん :2005/08/13(土) 22:54:58
nkfのソースに手を入れれ。

397 名前:デフォルトの名無しさん :2005/08/14(日) 04:16:39
>>395
話としては、何を勘違いしているのかに興味はなくもないがスレ違い。
nkfで入出力ともエンコーディングをちゃんと指定しているなら普通化けない。

398 名前:デフォルトの名無しさん :2005/08/14(日) 07:37:33
シフト文字無視して変な場所でぶった切って読んでるに一票

399 名前:デフォルトの名無しさん :2005/08/14(日) 09:55:57
コンボボックスでスクロールバーが表示されるようにするにはどうすればいいんですか?
WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST
だと大きさをオーバーした項目はキーボードの↑↓を押してやらなければ見えません
CBS_DISABLENOSCROLLなどのスクロールのスタイルがあるということはスクロールバーって出ますよね?

400 名前:デフォルトの名無しさん :2005/08/14(日) 12:02:29
プロセス間共有メモリとして作成したファイルマッピングオブジェクトに作成したプロセス以外からMapViewOfFileでマッピングしようとすると
戻り値がNULL、GetLastErrorが5 Access is denied. ERROR_ACCESS_DENIEDを返してきます。

作成側パラメータ
::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, "Testtest");
::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

非作成側パラメータ
::OpenFileMapping(PAGE_READWRITE, false, "Testtest");
::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

コード的に問題はないように思うのですが原因がさっぱり分かりません。


401 名前:デフォルトの名無しさん :2005/08/14(日) 12:24:04
作成側がサービスとか?
第二引数はNULLじゃなくてNULL DACLを指定するとか(セキュリティ的に危なそうだけど)

402 名前:400 :2005/08/14(日) 12:59:01
作成側、非作成側ともに通常のWin32GUIアプリです。(Win32コンソールでも同様の症状)
NULL DACL指定しても相変わらずアクセス拒否られました。
MapViewOfFileでFILE_MAP_READを指定するとマップされるのですがこれでは書き込みできないのでダメぽな状態です。

ちなみにテスト環境はWindows2000SP4、Admi権限ユーザーです。

403 名前:デフォルトの名無しさん :2005/08/14(日) 13:12:34
FILE_MAP_READ | FILE_MAP_WRITEじゃダメなのか?
そこらのサンプル見てもそうなってるけど。
日本語版MSDNにはFILE_MAP_WRITEと同じって書いてるけど嘘だから

404 名前:400 :2005/08/14(日) 13:20:29
     ||
     ||
     ||  バッ
   ∧||∧
  (∩ ⌒ヽノ   OpenFileMappingのDWORD dwDesiredAccessに
   \  _⊃   Create〜のDWORD flProtectの値を間違えて入れてたのが原因らしい
    ∪  Σ
        ≡| ̄ ̄ ̄ ̄|

   ||
   ||
 ∧||∧
(  ⌒ ヽ
 ∪  ノ  鬱出汁脳 てか似たようなAPIの似たような引数で値が違う仕様作ったMS逝ってよし
  ∪∪


405 名前:デフォルトの名無しさん :2005/08/14(日) 17:53:27

     ||
   ∧||∧
  (  ⌒ ヽ
   ∪  ノ
   ∩∪∩
   (・∀・| | ウヒョー
    |     |
  ⊂⊂____ノ
       彡


406 名前:デフォルトの名無しさん :2005/08/14(日) 18:15:13
ウインドウもウインドウクラス名もないプログラムを、二重起動禁止ではないけど、二重起動した場合に1番目起動のプログラムが
終了するまで2番目のプログラムをスリープさせようと思っているのですが、
ウインドウもウインドウクラス名もないプログラムが起動しているか否かを検索するAPIを探しているのですが、見つけられません。
そんなAPIってなんですか?

407 名前:デフォルトの名無しさん :2005/08/14(日) 18:16:37

     ||
   ∧||∧
  (  ⌒ )
   
    | | | ブチッ
    
     ⌒ ヽ
   ∪  ノ
   ∩∪∩
   (・∀・| | ウヒョー
    |     |
  ⊂⊂____ノ


408 名前:デフォルトの名無しさん :2005/08/14(日) 18:17:39
>>406

MUTEXではいかんのか?


409 名前:デフォルトの名無しさん :2005/08/14(日) 18:23:03
    | | |
    
     ⌒ ヽ
   ∪  ノ
   ∩∪∩
   (・∀・| | キタコレwww
    |     |
  ⊂⊂____ノ
     || ブス
     ||
     ||

410 名前:406 :2005/08/14(日) 18:25:18
>>408
ありがとう。知らなかったもので・・・・

411 名前:デフォルトの名無しさん :2005/08/15(月) 02:01:46
LSPのサンプルって今のVC2003に入ってないのかな?
後輩にWinsock+LSPの使い方教えたいんだけどいい資料なくてこまってる。

412 名前:デフォルトの名無しさん :2005/08/15(月) 02:38:19
GUIDの構造体の4個のメンバーには何か意味付けがあるんでしょうか?
文字列化されたものは5個のパートに分かれてるし、何か不思議です。


413 名前:デフォルトの名無しさん :2005/08/15(月) 02:41:08
>>411
またかよ。
ウィルスやトロイの木馬やスパイウェア作りたい香具師は氏ね。

VC2003のサンプルなんか見てるようじゃダメ。
PSDKかDDK探せ。

414 名前:デフォルトの名無しさん :2005/08/15(月) 02:47:37
LSPは喪舞の大嫌いなフックじゃなくて正当なインターフェースじゃん

415 名前:デフォルトの名無しさん :2005/08/15(月) 05:09:55
と、ウイルシを作りたい香具師が申しております

416 名前:デフォルトの名無しさん :2005/08/15(月) 05:21:08
デバッグ機能の悪用をウイルスだの何だの言ってる連中は、
何の技術力もいらない「トロイの木馬」が目下最大の脅威だってのに気づいてない、
ただの時代遅れ。

417 名前:デフォルトの名無しさん :2005/08/15(月) 06:41:04
フック関係で、
ちょっと調べればわかることを、
このスレで質問するような香具師は、

スクリプト・キディ

と同類と見なされても仕方ないだろ。
初心者はそんなものに手を出さずに、
大人しく順序を踏めってもんだ。

本物のハッカーやクラッカーなら、
ちょっと調べればわかることを質問したりはしない。
質問して答えをもらうまでの間に、自力で解決できてしまうから、
いちいち質問なんていう回りくどいことはしないものだ。

418 名前:デフォルトの名無しさん :2005/08/15(月) 07:03:12
> いちいち質問なんていう回りくどいことはしないものだ。

持論語るのは勝手だが、
質問スレでそういう発言をする矛盾にまず気づこうな。

419 名前:デフォルトの名無しさん :2005/08/15(月) 08:13:32
>>418
日本語が読めない香具師ハケーン

420 名前:デフォルトの名無しさん :2005/08/15(月) 08:41:11
つ 「馬鹿ばっか」

421 名前:デフォルトの名無しさん :2005/08/15(月) 09:46:47
>>417
スクリプトキティ以下だろ。

422 名前:デフォルトの名無しさん :2005/08/15(月) 10:32:46
そもそもLSPって何?
Lispの親戚?

423 名前:デフォルトの名無しさん :2005/08/15(月) 13:09:53
おまいらひろゆきがハッキングから夜のおかずまでカバーすると宣言しているのに
フックやLSPぐらいでガタガタ騒ぐんじゃないよ

424 名前:デフォルトの名無しさん :2005/08/15(月) 13:30:25
相手が紳士ならな、喜んで提供するんだがな。

425 名前:デフォルトの名無しさん :2005/08/15(月) 13:56:22
>>423
それ、昔のスローガンだから。
IPを記録するようになった今となっては、変えるのが面倒くさくて放置しているだけで・・・。

426 名前:デフォルトの名無しさん :2005/08/15(月) 14:08:52
>>425
IP記録と関係ねー
単におまいの妄想じゃないか

427 名前:デフォルトの名無しさん :2005/08/15(月) 14:17:10
>>425
今のスローガンは?

428 名前:デフォルトの名無しさん :2005/08/15(月) 14:24:56
>>425
おまいはここの運営かよw

429 名前:デフォルトの名無しさん :2005/08/15(月) 14:42:03
ハッキングの話を書いたら幇助とかで捕まるっちゅーの。

430 名前:デフォルトの名無しさん :2005/08/15(月) 14:47:15
>>429
もう挽回は無理だから、Download板でスレ立てて戦ってこい、な?応援してやるから。

431 名前:デフォルトの名無しさん :2005/08/15(月) 15:21:00
チラシの裏でいいよ

432 名前:デフォルトの名無しさん :2005/08/15(月) 15:31:30
俺は相手が変な目的に使うと想像がついてても質問に答えてるけど。
そう思ったらわかってても答えちゃダメ?

433 名前:デフォルトの名無しさん :2005/08/15(月) 15:34:13
変な目的を匂わせていても
ちゃんとした日本語使っててマナーもしっかりしてる人なら、答える。

434 名前:デフォルトの名無しさん :2005/08/15(月) 15:40:17
自動ログアウト作るのに使ったなフック。
スクリーンセーバでええやんと思いながら。

435 名前:デフォルトの名無しさん :2005/08/15(月) 16:31:35
こんにちは

リッチエディットでSetOptions(ECOOP_OR,ECO_NOHIDESEL);を指定すると、
スクロールバーの表示がおかしくなるのですが、
このような不具合をご存知な人はいますか?

436 名前:デフォルトの名無しさん :2005/08/15(月) 19:56:01
EXE側の(std::vectorの)データをDLL側で参照(&更新)したいんですが、
どうすればいいでしょうか?
上訳:DLL側でEXE側のデータをインポートできませんか?
やっぱりメモリマップドファイルを使わないといけないんでしょうか?
御解答お願いします。

437 名前:デフォルトの名無しさん :2005/08/15(月) 20:01:06
ポインタなり参照を渡せば?

438 名前:デフォルトの名無しさん :2005/08/15(月) 20:03:17
>>436
EXE⇔DLL間で直接そーゆーことをするのはダメ。
やりたい操作を一つずつ関数でラップしてください。

439 名前:デフォルトの名無しさん :2005/08/15(月) 20:06:08
コンソールっぽい機能を作ろうと考えて
モードレスダイアログボックスに
リッチエディットコントロールを貼り付けたもの使っています。

普通のエディットコントロールでは、使えた右クリック
が使えないのですが自分で作成するしかないのでしょうか。

440 名前:デフォルトの名無しさん :2005/08/15(月) 20:14:07
437/438有難うございます。
>>437
データを解放するときに怒られてしまいます。
>>438
やってみます。

441 名前:デフォルトの名無しさん :2005/08/15(月) 22:16:45
>>440
メモリを管理している人が違うから怒られて当然。
std::vectorの実装がEXEとDLLで寸分違わぬ保証をしてあげない限り、生で渡すのはダメ。

基本的にDLLとEXE間では、C++のオブジェクトはやりとりできません。

442 名前:デフォルトの名無しさん :2005/08/15(月) 22:23:05
>>441
応用的には、拡張DLLとかいうのを使えば可能(MFCなんかで使ってる)。
詳しくは忘れた。

443 名前:デフォルトの名無しさん :2005/08/15(月) 22:30:47
というか、コンパイラのバージョン揃えて、
ランタイムをDLLにすればええんでないの。

444 名前:デフォルトの名無しさん :2005/08/15(月) 22:37:55
C++のオブジェクト概念はC++コンパイラの上だけだったような。
機械語に変換されてしまえばオブジェクトもへちまもない。

445 名前:デフォルトの名無しさん :2005/08/15(月) 22:57:25
COM

446 名前:デフォルトの名無しさん :2005/08/15(月) 22:58:01
>>444
わかって無さ杉。

447 名前:デフォルトの名無しさん :2005/08/15(月) 22:59:27
>>446
オマエガナー

448 名前:デフォルトの名無しさん :2005/08/15(月) 23:02:02
>445
C++のオブジェクト概念と、COMのオブジェクト概念は同じものなのかな?

449 名前:デフォルトの名無しさん :2005/08/15(月) 23:02:28
構造体と同じで、仮想関数が有ればvtbl付けるだけだろ

450 名前:858 :2005/08/15(月) 23:12:39
http://pc8.2ch.net/test/read.cgi/tech/1120222322/l5

たのむ・・・・○rz。

451 名前:441 :2005/08/15(月) 23:21:25
>>444
クラスのメンバ構成が違ったり、packが違ったりしたら、やばいだしょが。

452 名前:デフォルトの名無しさん :2005/08/16(火) 02:02:31
>>450
l5って言われてもどれか判らない罠。
まぁ、ハンドルで判るわけだが。

453 名前:デフォルトの名無しさん :2005/08/16(火) 02:49:43
>>450
VC6でやったら普通にWM_IME_STARTCOMPOSITIONきたけど?
もしかしてIMEをONにしないで文字入力してるとかじゃないよな?

454 名前:デフォルトの名無しさん :2005/08/16(火) 07:13:26
>>450
てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる

455 名前:デフォルトの名無しさん :2005/08/16(火) 10:20:50
名無しさんこんにちは。いつも楽しく拝見しています。

ReadConsoleInput でマウスイベントが拾えません。
入力のモードに ENABLE_MOUSE_INPUT は含めています。
どうしたらいいのでしょうか。
Windows2000 を使っています。

456 名前:デフォルトの名無しさん :2005/08/16(火) 15:36:58
タスクバーの長さを変えたいのですが、
過去ログ見てて出てきた

hwndTaskbar = FindWindow("Shell_TrayWnd", NULL);
SetWindowPos(hwndTaskbar,NULL,0,0,960,32,SWP_NOZORDER | SWP_NOSENDCHANGING);

でやると一瞬だけ変化して、すぐに戻ってしまいます。
ShowWindowは普通に持続するみたいなんでなんとかなるんじゃないかと思ったんですが (;´Д`)
どうすれば出来ますかね?

457 名前:デフォルトの名無しさん :2005/08/16(火) 16:14:16
しつこく繰り返せ

458 名前:デフォルトの名無しさん :2005/08/16(火) 18:49:28
>>457
そんなソフトを使いたいか?
ま、>>456の作ったソフトを使うわけじゃないが。

459 名前:デフォルトの名無しさん :2005/08/16(火) 19:04:44
まぁ当然の結果なんだろうけど、
実際にしつこく繰り返してみたらタスクバーがのびたり縮んだりを高速で繰り返して面白すぎることに

460 名前:858 :2005/08/16(火) 19:20:33
>てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる

え、ってことは、日本語入力モードが切り替わったときなんですか?
変換可能な文字(即ち下線付き状態)を入力し始めたら、WMstartがきて、
変換可能な文字の状態を確定(単にリターンキー)したら、WMendがくる
んじゃないんですか??

461 名前:858 :2005/08/16(火) 19:24:39
>>453
確かにVC++のサイトでは、WMIMESTRATCOMPOSITIONの説明が
多数掲載されていますね。そして、なんてことはない
特に意識することなく、メッセージ(&H10D)(0x010D)が発生していますよね。
でも、僕の場合、だめなんです。
112とか、84とか、133とかは、ちゃんときてますし、
200(マウスの移動)なんてのもしっかり発生しています。
(WndProcないで、Msg.ToString()をConsole.WriteLineして監視しました)
でも、肝心の、0x010Dとか、0x010Eとかがきてくれないんです。

(禁断の壷をインストールしたら、ものすごく快適になりました)

462 名前:デフォルトの名無しさん :2005/08/16(火) 19:26:18
>>456
WM_GETMINMAXINFO を何とかしてみるとか?

463 名前:858 :2005/08/16(火) 19:37:13
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
Console.WriteLine(String.Format("{0,5:X}",m.Msg));
base.WndProc(ref m);
}
}
}

もう一度、新しいWindowsApplicationを作ってみました。
フォームにテキストボックスはりつけただけです。
ソースはこれだけです。
IMEを切り替えても(キーボードの左上の「半角/全角」ボタンを
連打しても)、010Dや、010Eはきません・・・(T_T)

464 名前:デフォルトの名無しさん :2005/08/16(火) 21:09:09
>>463
.NET(つかC#?)はよく分からんけど、それですべてのメッセージが来るわけ?
なんかフィルタリングされてるとかじゃないの?

465 名前:デフォルトの名無しさん :2005/08/16(火) 21:42:44
「マウスがどのウインドウ(オブジェクト)の上にいるか」といった情報を取得したいのですが、
とりあえずSetWindowsHookExのWH_MOUSE_LLでマウスのポジションなど取得出来るようになったのですが、
どのウインドウの上にいるか調べる方法で詰まっています。
何方かわかる方よろしくお願いします。


466 名前:858 :2005/08/16(火) 21:43:42
VC# express Beta2です。
WndProc関数内で参照できないメッセージ(フィルタ排除されるメッセージ)
ってあるんですか??

http://www.google.com/search?num=50&hl=ja&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg+WndProc&lr=lang_ja
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg&num=50
http://wisdom.sakura.ne.jp/system/winapi/win32/win9.html ←??

467 名前:デフォルトの名無しさん :2005/08/16(火) 22:08:42
>>466
Win32ではメッセージはちゃんと飛んで、ちゃんと受け取れるので、
あとはC#スレにいったほうがいい。
たぶんコーディング方法を間違えてるとかだろ。

468 名前:デフォルトの名無しさん :2005/08/16(火) 22:10:30
>>465
spy++(VC++ツールにあるでしょう)で適当なFlameにカーソル当てたときのメッセージ見たところ
WM_SETCURSORで戻ってくるときに、hWndが何かしらのパラメータとして与えられていた
おそらく、コールバック関数のいわゆるLOWORD(wParam)か、HIWORDに入れられていると思う(uMsgの値により、変わる模様)

自分だったら、フレームが立ち上がったときのハンドルをGetWindowLongあたりで取得しといて、そのハンドル値と一致したら
それは、フォーカスされたhWndハンドルでってことで、なんちゃらかんちゃら・・・
とやってみると思う

469 名前:858 :2005/08/16(火) 22:13:52
は、はい。

470 名前:858 :2005/08/16(火) 22:27:36
行って来ます。
http://pc8.2ch.net/test/read.cgi/tech/1122001458/34-#tag36

471 名前:デフォルトの名無しさん :2005/08/16(火) 22:37:10
>適当なFlameに
燃えているのか。

472 名前:デフォルトの名無しさん :2005/08/16(火) 22:47:04
IME_*のメッセージは全部エディットボックスのWndProcが食ってるわけね。
当然親たるFormにはまわってこない、と。

473 名前:858 :2005/08/17(水) 01:11:21
>>472
public class TextEX : TextBox
{
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x010D:
this.Parent.Text = "start";
break;
case 0x010E:
this.Parent.Text = "end";
break;
default:
break;
}
base.WndProc(ref m);
}

一応、できました。
食われてたんですね、それを早くいってくださいょぅ・・・。
これ、派生クラス作らないといけないんですか?どうしても。


474 名前:デフォルトの名無しさん :2005/08/17(水) 01:15:09
それはC#特有の話だからスレ違いだと思われ。

475 名前:413 :2005/08/17(水) 02:15:59
PSDKかDDK探してみましたが。うーんこれっていうのはないですねぇ。
別にこれ使われたところで問題ないと思うんだけどなんでそんなに
ウイルスと関連づけようとするの?

476 名前:デフォルトの名無しさん :2005/08/17(水) 09:26:12
>>465
GetCursorPos
WindowFromPoint
ChildWindowFromPoint

477 名前:デフォルトの名無しさん :2005/08/17(水) 09:27:42
>>473
フックでもしとけ

478 名前:デフォルトの名無しさん :2005/08/17(水) 15:25:09
WH_MOUSEのグローバルフックについて質問させてください。
SetWindowsHookExでWH_MOUSEでグローバルフックを掛けているつもりなのですが、
なぜかフックのDLLを呼び出してる側のウインドウの上でしかメッセージが送られてきません。
そのほかのウインドウ、デスクトップ上だとメッセージが送られて来ません。
(ローカルフックみたいな感じ?)
コードはこんな感じなんですが、

#pragma comment(linker, "/section:Shared,rws")
#pragma data_seg("Shared")
HHOOK hMouse = NULL ;
#pragma data_seg()

LRESULT CALLBACK hookProcMouse( int nCode , WPARAM wParam , LPARAM lParam )
{
パラメータの表示処理
}

// フックを仕込む
hMouse = SetWindowsHookEx( WH_MOUSE , (HOOKPROC)hookProcMouse , DLLのインスタンス , NULL ) ;

どうかよろしくお願いします。


479 名前:デフォルトの名無しさん :2005/08/17(水) 18:22:05
Word 文書をオートメーション経由で開いて、
その文書の一部分を (書式や画像なども含めて) 一時的に記録し、
別の文書に貼り付けたいと思います。
Word文書の一部分をメモリに保持することは可能でしょうか?

試行錯誤してみたところ、Word文書を開いて、
抜き出したい部分 (Range オブジェクト) に対して
Copy メソッドを呼び出してクリップボードにコピーし、
クリップボードの "Embed Source" 形式のデータを
メモリに記録しておいて、後で貼り付けたいときに
そのデータをクリップボードに設定して、
WordのPasteメソッドを呼び出せば、
なんとかできるのはできました。

しかし、なんかスマートではないなーという感じがするのと、
これが本当に正しいやり方なのだろうか、という疑問がぬぐえません。

よい方法がありましたらご教授ください。
よろしくお願い致します。

※Win32 API とはあまり関係ないかもしれませんが、
他に聞くところがなかったので、ここで質問させていただきました。

480 名前:デフォルトの名無しさん :2005/08/17(水) 19:40:26
同じ永続化なら、クリップボードよりはCOMのほうがよいかと。

481 名前:デフォルトの名無しさん :2005/08/17(水) 19:40:32
ゲーム作成中です。Windowで動くゲームなのですが、
起動中はスクリーンセーバーを無効にしたいと思っています。
どうやったら、無効にできるんでしょうか。

482 名前:デフォルトの名無しさん :2005/08/17(水) 19:56:33
レジストリにスクリーンセーバー起動の値があるので
それを書き換え、ゲームが終了したら元に戻す

483 名前:デフォルトの名無しさん :2005/08/17(水) 19:58:26
タスクバーをサブクラス化してWM_GETMINMAXINFOだとかWM_SIZEだとかを拾ってなんとか出来ないかと思ったのですが、

LRESULT CALLBACK WndProcTaskBar(HWND, UINT, WPARAM, LPARAM);//プロトタイプ宣言
(中略)
hTaskbar=FindWindow("Shell_TrayWnd",NULL);

m_oldWndProcTaskBar = (WNDPROC)GetWindowLong(hTaskbar GWL_WNDPROC);
SetWindowLong(hTaskbar, GWL_WNDPROC, (LONG)WndProcTaskBar);

としていて、WndProcTaskBarが一度も呼ばれてないようなんですが、どうすればよろしいでしょうか?
ShowWindow(hTaskbar,SW_HIDE);で試すと効くんで、hTaskbarの中身は大丈夫なんじゃないかと思うのですが……


484 名前:デフォルトの名無しさん :2005/08/17(水) 20:07:06
>>483
他のプロセスを乗っ取る場合はそのようにやってもアドレス空間が違うのでうまくいかないのでは?
WndProcTaskBarはDLL内に書いてそれをアタッチさせないとだめかと思う。
漏れもよくわかってないかもしれないけど、とにかく他プロセスへのアクセスは単純でない。

485 名前:デフォルトの名無しさん :2005/08/17(水) 20:13:52
>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.

>An application can subclass a system class, but should not subclass a window class created by another process.

486 名前:デフォルトの名無しさん :2005/08/17(水) 20:18:43
>>484
システムフックのときみたいなもんですかね?
試してみます

>>485
XPで組んでます。
まぁtclock2chでもやってたんで(アレは時計だけサブクラス化してタスクバー自体はフックしてるみたいですが)、
サブクラス化しちゃっても大丈夫かと思ったんですが。

487 名前:デフォルトの名無しさん :2005/08/17(水) 20:27:34
>>481
WM_SYSCOMMANDメッセージでwParamが
SC_SCREENSAVEの時、0以外を返す。

SC_MONITORPOWERてのもある。

488 名前:デフォルトの名無しさん :2005/08/17(水) 20:31:26
>>482
それは再起動しないと有効にならないだろ

489 名前:デフォルトの名無しさん :2005/08/17(水) 20:47:08
>>478
Sharedの定義をきちんとdefファイルに書いてあるか?
とりあえず「パラメータの表示処理」ってやつをOutputDebugStringで出力して本当に取れてないか確認しれ

490 名前:デフォルトの名無しさん :2005/08/17(水) 21:30:44
>>478
その方法じゃデスクトップは取れない
あと、他のウィンドウのメッセージは何を取ろうとしてる?
例えばWM_LBUTTONDOWNはクライアント領域じゃないと送られてこない
非クライアント領域だったら別のメッセージが飛んでくる
あと、リストビューとかもWM_LBUTTONじゃ取れない

491 名前:481 :2005/08/17(水) 22:16:07
>>487
それでできそうです。ありがとうございました。

492 名前:デフォルトの名無しさん :2005/08/17(水) 22:21:00
ソフトキーボードを作ろうとしてるんですが、
自分の窓をアクティブにせずに、
他の窓への入力情報を得るにはどうしたらいいんでしょうか。



493 名前: ◆Pu/ODYSSEY :2005/08/17(水) 22:26:22
>>492
キーボードフォーカスを受け取ったら対象のウィンドウに対してSetFocus

494 名前:デフォルトの名無しさん :2005/08/17(水) 23:04:32
>>492
AttachThreadInput() はどう?

495 名前: ◆Pu/ODYSSEY :2005/08/17(水) 23:18:46
そっちのほうか。すまん、>>493は間違い。

496 名前:デフォルトの名無しさん :2005/08/17(水) 23:24:46
ExitProcessで自分以外のプロセスを終了することは出来ないのですか?

497 名前:デフォルトの名無しさん :2005/08/17(水) 23:43:06
>>496
無理ではないが。

498 名前: ◆Pu/ODYSSEY :2005/08/17(水) 23:49:56
WM_CLOSEとか、コンソールアプリならキーイベントでCtrl-Cを投げるとか

499 名前:デフォルトの名無しさん :2005/08/18(木) 00:55:49
>> ◆Pu/ODYSSEY
どこか頭の調子でも悪いの?

500 名前: ◆Pu/ODYSSEY :2005/08/18(木) 01:02:08
頭が悪い。

というか、メッセージ渡してやって正しい終了手続きで終了させるのがセオリーでないの。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.