07/06/26 23:18:28
通信相手というか
IPなどを確認できるHPから入手した自分のIPをいれて
自分のPC→インターネット→自分のPCといった経路を試したかっただけです
確かに読み直すとわかりにくかったですね。
日本は世界でも一番難しい言語なのでお許しください
>>363さんの意見が正解みたいですね
ありがとうございました
370:デフォルトの名無しさん
07/06/26 23:19:30
>日本は世界でも一番難しい言語なので
なるほど、あんたにとっては日本語さえまともに使えないと言うわけだ。
371:デフォルトの名無しさん
07/06/26 23:24:19
絡むなよ。長くなるだろ
372:デフォルトの名無しさん
07/06/26 23:28:24
>>369
つ推敲
373:デフォルトの名無しさん
07/06/26 23:33:22
>>369
君、香ばしいね。結構気に入ったよ、チュッ。またおいでね。
374:デフォルトの名無しさん
07/06/26 23:33:22
>>369
ルーターはそういう処理はしないよ
375:デフォルトの名無しさん
07/06/26 23:38:27
NATループバックとかいう、御節介をしてくれるルーターもあるけど、まぁあれだ。
376:デフォルトの名無しさん
07/06/26 23:44:17
>>369
本当にインターネットを介した通信のテストが必要なのかと小一時間。
その程度のプログラムなら、
LAN上の2台のPC(VirtualPC等でもいいよ)でテストすれば十分だ。
ていうか、場合によっては人様に迷惑をかけることにもなるので、
よくわからないうちはインターネットでテストしちゃいかん!
本当にインターネットでテストしないといけない場合は、
NTTのフレッツ系と、異なる2つのプロバイダを契約するとかしてだな・・・(以下略
377:デフォルトの名無しさん
07/06/26 23:44:56
>>364-366
まぁ普通に読めば分かるし、これは屁理屈というかうざいなw
378:デフォルトの名無しさん
07/06/26 23:45:21
育ってきた環境が違うから~スレ違いはしょうがない~♪
379:デフォルトの名無しさん
07/06/26 23:50:05
>>377
トラブルシューティング系の質問の基本を叩き込んでおかないと。
380:デフォルトの名無しさん
07/06/26 23:52:18
>ソフト?
>何か不安になる言い方。
これはないだろこれはw
381:デフォルトの名無しさん
07/06/27 00:46:21
EM_STREAMIN メッセージをリッチエディットに送信するときに
GetStdHandleを渡してもコンソールの内容を読めないのはなんでだろ(´・ω・`)
382:デフォルトの名無しさん
07/06/27 01:10:48
EM_STREAMINは標準ストリームから入力するわけじゃないから
383:デフォルトの名無しさん
07/06/27 01:14:51
もう少し詳しく書くと
EM_STREAMINってのはリッチエディットコントロールのウィンドウプロシージャから
アプリケーション定義の関数をコールさせてデータをストリーム入力するメッセージ
入力データはアプリケーション定義の関数内で自分で用意しなければならない
標準入力は全然関係ないよ
384:デフォルトの名無しさん
07/06/27 01:20:50
IStream と FILE *が混ざってるのだろうか?
385:デフォルトの名無しさん
07/06/27 08:44:39
ウインドウハンドルからスレッドIDとプロセスIDはGetWindow~で取得できるのですが、
スレッドIDから作成したウインドウハンドルを取得するAPIはありますか?
今はプロセスIDから取得したスレッドID、または、スレッドIDをEnumWindowで取得したスレッドIDと比較して
該当がないかどうか探しています。
386:デフォルトの名無しさん
07/06/27 08:56:56
GetWindowHandle
387:デフォルトの名無しさん
07/06/27 08:58:10
ああスレッドIDからか。じゃあシラネ
388:デフォルトの名無しさん
07/06/27 09:07:29
>>386
お前、それ楽しいか?
389:デフォルトの名無しさん
07/06/27 09:19:55
EnumThreadWindows?
390:デフォルトの名無しさん
07/06/27 09:25:57
GetGUIThreadInfo?
391:デフォルトの名無しさん
07/06/27 09:30:19
そのものズバリ、が無いのは1つとは限らないからだ
392:デフォルトの名無しさん
07/06/27 09:55:53
>>389
これですよこれ。
そのものずばりですね。ありがとうございました。
393:デフォルトの名無しさん
07/06/27 09:58:48
Enumは自分でもあげてるじゃん
394:デフォルトの名無しさん
07/06/27 10:00:12
EnumWindowがわかってて気がつかないってことは、
EnumWindowも人に聞いたんだろ。
395:デフォルトの名無しさん
07/06/27 10:09:54
IMEコンポジションウィンドウは使いたいが、IMEパッドは
使わせたくないという場合、パッドの起動を抑制する手段は
あるでしょうか?
396:デフォルトの名無しさん
07/06/27 12:08:20
>>343
Mutexなどで待機した場合
SetWindowsHookExの内部実装次第でデッドロックしますよね?
397:デフォルトの名無しさん
07/06/27 12:14:01
>>394
はエスパー
398:デフォルトの名無しさん
07/06/27 12:16:52
いや、Windowsの開発関係者だろう
399:デフォルトの名無しさん
07/06/27 12:36:51
そんなことより396
400:デフォルトの名無しさん
07/06/27 12:39:52
そんなことより400(σ・∀・)σゲッツ
401:デフォルトの名無しさん
07/06/27 12:46:05
目くそ鼻くそを洗う
402:デフォルトの名無しさん
07/06/27 12:48:50
いいことじゃん
403:デフォルトの名無しさん
07/06/27 12:51:48
>>394
すぐ隣に並んでいるんだから、普通は、気がつくよな。
404:デフォルトの名無しさん
07/06/27 13:04:07
俺はすぐ隣に並んでいるあいつの気持ちさえ気がつかなかったよ
405:デフォルトの名無しさん
07/06/27 13:18:16
>>394
おっしゃるとおり、EnumWindowsもGoogle先生に聞きました。
以後はMSDNの周辺等も調べてみます。
406:デフォルトの名無しさん
07/06/27 14:58:12
プロセスIDからそのプログラムが
どのような引数(CommandLine?)で動いてるか知る方法はありますか?
WMIの「Win32_Process」で取れるのですが
この方法だと「CommandLine」プロパティを見るのですが
Windows Server 2000ではサポートされてないんです。
(Windows Server 2003以降、Windows XP以降でサポートらしいです)
諦めかけてたんですが「ProcessExplorer」ってソフトで
CommandLineが見れるのでAPIで何とかなるのかと思い
質問しました。
よろしくお願いします。
407:デフォルトの名無しさん
07/06/27 15:02:26
フックで進入してGetCommandLineすればいいんじゃまいか?
408:デフォルトの名無しさん
07/06/27 15:27:15
>>406
ProcessExplorerはドライバまで使って色々やってるようだから、真似するのは大変よ。
プロセスのコマンドライン引数などの情報は、
プロセスのメモリ空間の決まった場所に格納されているので、
それをReadProcessMemoryで読んでしまうのがいいと思う。
どのアドレスに格納されているのかは、覚えてない。
409:デフォルトの名無しさん
07/06/27 15:29:16
NT系限定ならフックよりCreateRemoteThreadでのDLL注入のほうがローコストかもね
対象プロセスにウィンドウ無くてもいいし
410:デフォルトの名無しさん
07/06/28 12:00:47
>395 もお願いしますよ
411:デフォルトの名無しさん
07/06/28 12:12:07
コンポジションウィンドウって何だ?
412:デフォルトの名無しさん
07/06/28 12:21:09
>>396
例えば、どんな内部実装だとデッドロックすると思うの?
413:デフォルトの名無しさん
07/06/28 12:57:02
X Window SystemのLeaveNotifyイベントみたいな
マウスカーソルがウィンドウから出た
というのは、WM_* でいうと何に当たるんでしょうか?
414:デフォルトの名無しさん
07/06/28 13:25:29
>>413
WM_MOUSELEAVE
詳細はググって調べてくれ。普通は飛んでこないメッセージだから。
415:デフォルトの名無しさん
07/06/28 13:46:27
>>414
サンクス。流し読みした感じでは、自力で座標取得した方がいいかなこれは。
416:デフォルトの名無しさん
07/06/28 13:49:04
自力って、、、スレッドでループでもさせんのか
マウスキャプチャーしてるなら、こんな質問しないだろうしなあ
417:デフォルトの名無しさん
07/06/28 13:59:54
>>416
いや、古い環境では無理なんじゃないか?って意味。
418:デフォルトの名無しさん
07/06/28 14:07:19
95とかNT3.1とか相手にしてるの?
大変だね
419:デフォルトの名無しさん
07/06/28 14:18:47
>>417
そういう意味か。
気にするほど最近の話でも無いみたいだけど、
昔はそういう目的にはキャプチャーだったなあ
>>418
それは古すぎw
95はともかく、NTは3.51あたりで
420:デフォルトの名無しさん
07/06/28 14:28:39
変動する数値をアイコンに反映させたい場合どうすればいいでしょうか?
HBITMAPをHICON型に変換すればできそうなんですが、
方法も分からずもっと簡単な方法がありましたら教えて下さい。
421:デフォルトの名無しさん
07/06/28 15:24:21
>>420
そもそもそのアイコンはどこにどんな状態で表示するもの?
422:デフォルトの名無しさん
07/06/28 15:32:12
>>420
CreateIconで作るしかないんでない?
423:デフォルトの名無しさん
07/06/28 16:08:13
ありがとうございます。
>>421
タスクトレイのアイコンに数値でCPU使用率とか表示してるアプリがありますよね?
あんな感じで変動する数値を表示できたら便利だと思ったのです。
>>423
その方法も調べたのですがビットパターンがよく分からなくて一度諦めました。
424:デフォルトの名無しさん
07/06/28 16:17:16
CreateIconIndirectするか、イメージリストに追加してImageList_ExtractIcon
425:デフォルトの名無しさん
07/06/28 16:21:15
>>411
IME使った時に文字がフロートする部分ね。
要はIMEは使いたいがその時MEパッドは起動してほしくないと。
426:デフォルトの名無しさん
07/06/28 17:20:56
>>424
ありがとうございました。
427:デフォルトの名無しさん
07/06/28 23:08:03
ちょっとお舞ら
win32アピを利用して丸を描くプログラムを作ったんですよ
ほかのウインドウが被ってしまったんだけど
そしたらその部分が空白になっちゃったんだよ
ウインドウの状態も保持しないてどんな仕様してんだよ
不良品じゃね?
428:デフォルトの名無しさん
07/06/28 23:10:01
おまえが描画したい状態を保存しとけばいいんじゃね?
んでWM_PAINTが来たらまた描けばいいんじゃね?
429:デフォルトの名無しさん
07/06/28 23:16:16
ちょっとお舞ら
>>427って
不良品じゃね?
430:427
07/06/28 23:28:00
>>428
おれ記憶力わるいんで無理
431:デフォルトの名無しさん
07/06/28 23:28:37
諦める
これで解決
432:デフォルトの名無しさん
07/06/28 23:31:10
>>430
お前が記憶するわけではないのだからお前の記憶力などどうでもいい。
そのためのコンピュータではないか。メモリはたんまりとある。
433:デフォルトの名無しさん
07/06/28 23:51:56
>>430
おまえ頭わるいんで無理
434:デフォルトの名無しさん
07/06/29 00:03:53
>>423
ビットパターンって、普通にビットマップのはずだが
ANDマスクは透過部分が1、透過しない部分が0のピクセルあたり1ビットのモノクロビットマップ
XORマスクは透過部分が0、他は普通になカラービットマップ
435:デフォルトの名無しさん
07/06/29 00:29:57
>>433
うるせぇボケ死ね
436:デフォルトの名無しさん
07/06/29 07:28:45
このスレ的に一人前とはどの程度?
ヴぁかにされたくない。
437:デフォルトの名無しさん
07/06/29 07:47:24
>>436
馬鹿にされても怯まず開き直れたら君も立派な一人前だ
438:デフォルトの名無しさん
07/06/29 09:33:48
>>434
カラーはDDBなんでそう単純には行かないのだよ
439:デフォルトの名無しさん
07/06/29 09:34:33
>>434
つーか>>424で解決してるのになんで蒸し返す
440:デフォルトの名無しさん
07/06/29 10:12:04
>>436
コンパイルに成功したらもう一人前
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;
:
688:688
07/07/08 11:12:17
>>687
ああ、宣言時は可能だったっけか
689:デフォルトの名無しさん
07/07/08 11:13:54
>>682
マジレスすると拡張子がcじゃなくてcppだから
俺、2冊も買っちゃったし良本だよな
がんがれ
690:デフォルトの名無しさん
07/07/08 11:17:35
全部見当違い。
2005のデフォルトのオプションを考えれば分かるだろ。
なんでここはこんなに馬鹿しかいないんだ?
691:デフォルトの名無しさん
07/07/08 11:23:25
>>690
バカ筆頭の人が言うと、
さすがに迫力がありますね
692:デフォルトの名無しさん
07/07/08 11:28:06
僕バッカー
693:デフォルトの名無しさん
07/07/08 11:28:26
>>685-686
スレ違いなのにありがとうございます。
ソースは.cppのC++です。事前に宣言してみましたが無理でした
エラーは、ちゃんと文字型の宣言に入れろ。ってことかなと思ってますが本でも
CDに入ってたサンプルもこの通りだったのでやっぱり問題はコンパイラの設定でしょうか?
試しにCHAR型で宣言してやってみたらそれならうまくいきました
文字数制限にひっかかったのでtxtですみませんがエラーです
URLリンク(kansai2channeler.hp.infoseek.co.jp)
694:デフォルトの名無しさん
07/07/08 11:28:35
底の浅い知識すらも持っていないくせに、
確認すらしないで適当を並べる馬鹿は何とかならないのか?
695:デフォルトの名無しさん
07/07/08 11:31:55
MessageBoxWが呼ばれてるのかなゃ
696:デフォルトの名無しさん
07/07/08 11:32:48
コンパイルオプションに/J
697:デフォルトの名無しさん
07/07/08 11:32:54
>>689
ごめんなさい更新する前に書き込んでしまって見てなかった
まさしくそれでした…
.cに変えたらちゃんとコンパイルしてくれました
これからコツコツ勉強して以降と思います。みなさんありがとうございました
698:デフォルトの名無しさん
07/07/08 11:34:56
書籍のサポートは作者がやるべきだよな
699:689
07/07/08 11:37:50
いえーいあたった。
お前らジュース一本だ
690はパンも買って来い
700:デフォルトの名無しさん
07/07/08 12:40:48
なんでcppじゃダメなん?
上位互換じゃないの?
701:デフォルトの名無しさん
07/07/08 12:48:09
型チェックが厳しくなってるから
702:デフォルトの名無しさん
07/07/08 12:50:00
2重引用符で囲った文字列はリードオンリーになるので、
constが必要。
また、BYTEはunsigned char型であって、char型とは別物。
const BYTE* bytes = "BYTE *";
なら通る。
MessageBoxA(NULL, reinterpret_cast<char*>(bytes), NULL, MB_OK);
なら通る。
703:デフォルトの名無しさん
07/07/08 12:52:22
ちゃうわぼけ
704:デフォルトの名無しさん
07/07/08 12:53:27
>>682
エラーが出ます教えてください
という人に限って、
エラーメッセージを読んでない。
しかも、
エラーメッセージをコピペしない。
エラーメッセージによっては難解だったり、
本当の間違いを指していなかったりするが、
少なくとも>>693のtxtのエラーメッセージは、
非常に親切で適切なものだから、
エラーメッセージを読めば分かる。
705:デフォルトの名無しさん
07/07/08 13:12:21
エラーメッセージって
的を得ないことが多いのと
一般的に言っても不親切なのは
なんとかなりませんかね?
706:デフォルトの名無しさん
07/07/08 13:21:16
中に人が入ってるわけじゃないから
文句言うだけ無駄
707:デフォルトの名無しさん
07/07/08 13:23:07
>>705
的を得ないならいいじゃないか。的を得たら射掛けられちゃうぞ。
708:デフォルトの名無しさん
07/07/08 13:24:54
>>705
そりゃぁ、お前さんの書いたコードが「的を得てない」からだろう。
コンパイラが、わけわかんねーぞ、というのは、わけわかんないコードを食わせるからだ。
709:デフォルトの名無しさん
07/07/08 13:43:56
VC++のエラーメッセージなんて随分質が高いと思うけどねぇ
まぁC++でテンプレート絡みのエラーメッセージがイミフなのは
そういうもんだとあきらめれ
710:デフォルトの名無しさん
07/07/08 13:51:05
的をもらいました やったね!
711:デフォルトの名無しさん
07/07/08 14:02:37
まぁ、エラーメッセージは、直訳みたいなので英語でおkみたいなのはあるw
712:デフォルトの名無しさん
07/07/08 15:27:07
夜店の射的の話。的は人形だったり。
713:デフォルトの名無しさん
07/07/08 15:33:57
タブコントロールを作ってそれをデバッグ(@err,hr)でみてたら
ERROR_NO_IMPERSONATION_TOKEN
現在、クライアントを偽装していないスレッドが・・・・
とかいうエラーが出てくるんですがこれの意味に心当たりがある方は
教えていただけないでしょうか?
714:501
07/07/08 17:20:57
会社でよくいそうな堅物っぽいやつが
見当違いとか、知識が無いとか、確認してないとか
がんがってかっこつけたのに結果をだされてるのにワロタ
いいものを見せてもらった
715:501
07/07/08 17:23:11
俺の質問も相手してくれよ
716:デフォルトの名無しさん
07/07/08 17:40:59
>>715
>>551で終わっていないの?
717:デフォルトの名無しさん
07/07/08 17:44:20
ウインドウにボタンをはっつけて、
ウインドウのWM_PAINTでBeginPaintしてウインドウを真っ黒に塗りつぶしても、
ボタンは塗りつぶされないのですが
なんでかチラチラします、これはどういう仕組みでしょうか?
718:デフォルトの名無しさん
07/07/08 17:56:34
ボタンはゲイツ仕様だから
719:デフォルトの名無しさん
07/07/08 18:55:17
そういう仕組みだぼけ
720:デフォルトの名無しさん
07/07/08 19:14:17
実装に興味があるならwineかReactOSがオヌヌメ
後者のほうが詳細まで追えるからオヌヌメ
721:デフォルトの名無しさん
07/07/08 19:31:23
その前に基本的なことを勉強
722:デフォルトの名無しさん
07/07/08 19:38:04
>>717
>>717がボタンも含めてウィンドウを真っ黒に塗りつぶした後、Windowsがボタンを描いているから。
黒く塗ってあとから書き直したら、そらチラチラするわ。
723:デフォルトの名無しさん
07/07/08 19:50:37
ボタンを塗りつぶすとWINDOWS法違反によって逮捕されますから
辞めた方がいいですよ
724:デフォルトの名無しさん
07/07/08 19:50:51
>>717
そりゃぁ背景を黒く塗っても、手前にあるボタンは塗られないよ。
ボタンまで黒く塗りたければ、ボタンをオーナードローで黒く濡るべし。
725:デフォルトの名無しさん
07/07/08 20:35:06
つーか、ボタンがチラチラしない方法が知りたいんじゃないの?
726:デフォルトの名無しさん
07/07/08 21:07:04
ボタンの所だけクリップ領域から外せばいい
727:デフォルトの名無しさん
07/07/08 21:20:38
WS_CLIPCHILDREN
728:デフォルトの名無しさん
07/07/08 21:55:07
Enterで通知がくるIDOKを別の定義IDに切り替えたいんですが
何か方法はありますか?
因みにダイアログじゃないです
729:デフォルトの名無しさん
07/07/08 21:58:07
IDOKが来たら切り替えたい定義IDをSendする
730:728
07/07/08 23:06:07
>>729
!?
盲点だったそんな簡単なことも気づかなかったのか俺orz
教えてくれてありがとうございます。
731:729
07/07/09 00:09:55 BE:99304122-2BP(0)
おいw
ジョークだよな?
732:デフォルトの名無しさん
07/07/09 12:46:20
いいえ本気です
733:デフォルトの名無しさん
07/07/09 12:49:23
「本気」と書いて「マジ」と読む
734:デフォルトの名無しさん
07/07/09 14:22:56
up
735:デフォルトの名無しさん
07/07/09 18:34:50
ヘルプみたさに
プラットフォームSDK入れてみたんだけど
hxsファイルってどうやってみればいいんでしょうか?
736:デフォルトの名無しさん
07/07/09 18:47:15
ドキュメントエクスプローラー、かな?
ついてなかった?
737:デフォルトの名無しさん
07/07/09 19:19:09
さがしてみます。ありがとう
738:デフォルトの名無しさん
07/07/09 20:44:47
さがしたけどなかった。次は一時間後にさがしに行くです。
739:デフォルトの名無しさん
07/07/09 20:47:21
普通に入れたら、スタートメニューに登録されるよ。
740:デフォルトの名無しさん
07/07/09 21:25:11
すみませんさっき気づきました
ぐぐったりVCいれたりといろいろってみましたが
まさかこれ系がスタートメニューに登録されるとはorz
741:デフォルトの名無しさん
07/07/11 03:12:58
USBゲームパッドを使いたい場合はwin32apiでは対応できませんか?
やっぱダイレクト系しかないんでしょうか
742:デフォルトの名無しさん
07/07/11 04:57:38
joyGetPos
743:デフォルトの名無しさん
07/07/11 05:02:51
いいことおもいついた、お前俺のケツのなかにションベンしろ!
744:デフォルトの名無しさん
07/07/11 05:28:12
ウホスレは間に合ってます
745:デフォルトの名無しさん
07/07/11 09:24:01
>>742
ありがとうございます
これマルチメディアの欄にあったりして
なかなか見つからない
746:デフォルトの名無しさん
07/07/11 10:37:23
Windows3.0 MMEを思い出した
747:デフォルトの名無しさん
07/07/11 11:49:46
>>745
マルチメディアAPIのジョイスティックAPIはゲームポート接続想定した仕様だからおすすめできない。
(認識軸数、ボタン数に制限)
748:デフォルトの名無しさん
07/07/11 20:49:32
>>747
アナログ6軸、ハットスイッチ1つ、32ボタン対応してるから十分だと思うが。
749:デフォルトの名無しさん
07/07/11 22:05:10
突然だけどLocalFreeって使わない方がいいのか?
LocalFree使うぐらいならHeapAllocとか使った方がいいとか言う
記事があったもんで。それとHeapAllocとVirtualAllocの使いどころは
大体確保するメモリがどのくらいを目安にすればいいのかね。
そういうレス見たこと無いから参考までにお前さん方の意見聞いてみたい。
因みに俺はLocalAllocが簡単に使えるからそっち使ってる。
後mallocに関してはAPIじゃない(最終的にHeapAlloc呼んでるみたいだが)
から省いてくれい。
750:デフォルトの名無しさん
07/07/11 22:07:21
>LocalFree使うぐらいならHeapAllocとか使った方がいいとか言う記事
なんだその腐った記事。
751:デフォルトの名無しさん
07/07/11 22:18:29
>LocalFree使うぐらいならHeapAllocとか使った方がいい
わろた
ところで VirtualAlloc HeapAlloc でぐぐったか
URLリンク(www.geocities.jp)
752:デフォルトの名無しさん
07/07/11 22:24:06
>>749
俺はAPI関数を直接呼ぶとしたら、確かにHeapAlloc/VirtualAlloc系というつもりでいる。
「Local/Global関数ではなく、Heap関数を使え」とは、MSDNライブラリにも書いてある。
URLリンク(msdn2.microsoft.com)
URLリンク(msdn.microsoft.com)
特に移動可能メモリなんて今では利点も必要性もない。
//でも実際はクリップボードなんかでGlobal関数を多用する現実。
//Heap関数を直接使わずmallocやnew、std::vectorを使う毎日。
でも、どうせどうせメモリ確保なんて時間のかかることだし、
Local/GlobalからHeapに変えて速度向上するようなアプリケーションがあったら、
メモリ確保の戦略自体を見直すべきで、
わざわざHeapに変える必要なんてないなんて言う奴もどこかにいた。
でもこれから書くコードで必要がなければあえてGlobal/Local関数を選ぶ理由もないはず。
ところで、VirutalAllocを使う目安はMSDNライブラリによれば1、2MBから。
URLリンク(msdn2.microsoft.com)
753:デフォルトの名無しさん
07/07/11 23:24:54
なんとなく気になってCRTのソース読んでみたのだが、
VC2005のリリース版CRTのmallocは、HeapAllocに直結してるのな。
CRT内部で改めて分割して使っていると思い込んでたよ。
754:デフォルトの名無しさん
07/07/12 00:11:18
crt no source ha iduko?
755:デフォルトの名無しさん
07/07/12 00:16:52
>>754
Visual C++ならVisual C++のフォルダ(bin, include, libなどがあるフォルダ)
にあるcrtというフォルダ。ただし、Expressには付属していない。
756:デフォルトの名無しさん
07/07/12 01:06:41
GlobalAllocとLocalAllocの違いがわからない
757:デフォルトの名無しさん
07/07/12 01:15:16
ここにわかりやすい解説が
URLリンク(konuma.txt-nifty.com)
758:デフォルトの名無しさん
07/07/12 01:15:35
Win16では、nearポインタ・farポインタの違いがあったが、
Win32では違いなし。
もしかしたら9xではだめかもしれないが、
NTでは、GlobalAllocしたものをLocalFreeすることすら可能なはず。
759:デフォルトの名無しさん
07/07/12 01:35:59
Windows 3.1 SDK のヘルプからコピペしてみた。Win32では殆ど無意味だけど。
Global memory is all memory in the system that has not been allocated by an application or reserved by the system.
Local memory is the memory in the data segment of a Windows application.
760:デフォルトの名無しさん
07/07/12 01:51:49
LocalAllocは内部でHeapAllocと同じ事してるんだろ確か
761:デフォルトの名無しさん
07/07/12 02:35:41
ぶっちゃけ、何かの理由がない限り、
HeapCreate()の引数dwMaximumSizeには0を指定するわけで、
ということは、HeapAlloc()で巨大なメモリを確保しようとしたら、
自動的にVirtualAllocに飛ばされるわけで、
意識してVirtualAllocを呼ばなくてもいいんじゃないかな。
それどころか、C++ なら 何か理由がない限り、new 一択だろう。
もしヒープの速度がネックになるようなら、
ヒープ上ではなくスタック上に取れるようなアルゴリズムを検討すべき。
自分は遅いプログラムのチューニングをしていて、
ヒープの速度がネックになっているのを見たことがないよ。
762:デフォルトの名無しさん
07/07/12 08:28:40
>>755
thank u. express dakara nakata
763:デフォルトの名無しさん
07/07/12 14:49:19
Local/GlobalAllocって、戻り値が専用型なもんで、「解放する方法が明確に解る」
って理由で外部にAPI公開するDLLなんかでは採用してる例がある。
確かにポインタだけ返して「解放はVirtualFreeで」とかいう仕様だと勘違いで
他の解放関数に渡してしまうケースが無いともいえない。
764:デフォルトの名無しさん
07/07/12 14:59:06
>>761
>自分は遅いプログラムのチューニングをしていて、
>ヒープの速度がネックになっているのを見たことがないよ。
漏れもそんなのは見たことないが、malloc/free 系と memcpy 系の
関数を差し替えるのは、ほとんど手間がかからずある程度の効果が
期待できるのでまず手始めにやっちゃうな。
765:デフォルトの名無しさん
07/07/12 15:00:00
そんな怪しい挙動するくらいなら、解放するAPI用意したほうがいいと思うんだけどなぁ・・・
766:デフォルトの名無しさん
07/07/12 15:05:04
IMalloc/CoTaskMemAllocはどうよ
767:デフォルトの名無しさん
07/07/12 15:09:25
COM のときは使うな CoTaskMemAlloc 。
768:デフォルトの名無しさん
07/07/12 15:12:36
>>761
それはプロファイラに捕捉されてないだけだと思うぞ。
ヒープは頻繁に呼ばれるので、僅かなコストが積もって大きくなる。
InitializeCriticalSectionAndSpinCount()のスピンカウントの説明を読めば片鱗が知れよう。
とはいえ、下手なアルゴリズムやコーディングによる遅さに比べれば、微々たるものだが。
769:デフォルトの名無しさん
07/07/12 15:16:19
カーソルの影って、APIでオンオフはできるんですけど、そもそもシステムカーソルにしか
適用されませんよね。
とあるアプリで独自のカーソルにも影が付くのがあったんで、リソースを見てみましたけど
元カーソルは影付きではありませんでした。
影を付けるAPIみたいなのはあるんでしょうか?
770:デフォルトの名無しさん
07/07/12 15:16:46
>>768
google mallocの話とか、読み物としてはおもしろいからなぁ。
URLリンク(slashdot.jp)
まあ初心者の手の届かないところに保管しておくべき話だけどね。
771:デフォルトの名無しさん
07/07/12 16:27:02
>>770
gccやglibcにパフォーマンスを要求すること自体が間違ってる。
ポータブルでフリーであることが目的で、ちゃんと動けば十分という代物なんだから。
ついでに言うと、
unixの世界ではプロセスをポコポコforkする文化が長かったし、
フリーのOSはSMP性能が悪いのが普通だった。
パフォーマンスよりも、動くこと、簡単なことが優先されてた。
バグの原因になるのでmallocしたメモリはfreeするな
なんて真顔で言う連中が跋扈していた世界だから。
772:デフォルトの名無しさん
07/07/12 16:29:36
>>771
過去がどうであれ、今それを真顔で言われてもわりと困るんだが。
773:デフォルトの名無しさん
07/07/12 18:00:59
要は、Linuxの世界は後発であるが故に遅れている、ということ。
もちろんLinux上で走るからといって、glibcを使う必要はないわけで、
フリーだろうがプロプライエタリだろうが、別のライブラリを使えばいいだけのこと。
ただ、何でもかんでも別のライブラリを使うのが良いとは限らない。
Windowsのバージョンが上がると、
MSVCRTやOSのヒープマネージャが、
より現状のPC環境に向いたものに変るので。
774:デフォルトの名無しさん
07/07/12 18:14:22
Unixについて言ってるのかLinuxについて言ってるのかはっきりしろと。
775:デフォルトの名無しさん
07/07/12 18:18:23
ていうかスレ違い
776:デフォルトの名無しさん
07/07/12 18:22:26
IDEのバスをリセットする(RESET#端子をアサートする)方法を教えてください。
IDEのデバイスに対してDEVICE RESETコマンドを送ることはできたのですが、
いざデバイスがハングアップした状態では、コマンドも受けとってもらえないわけで。
777:デフォルトの名無しさん
07/07/12 20:48:02
Documents and Settings\ユーザー名\NTUSER.DATとかの
OS可動中に開けないファイルを読み込み専用で良いので
開く方法を教えてください。
破壊がないか定期的にチェックをしたいので。
778:デフォルトの名無しさん
07/07/12 20:54:30
ACPIが有効なPC上で、CPU温度を定期的に取得する方法を教えてください。
以下のvbsを実行すれば温度を取得できるのですが、
一定間隔で実行しても温度に変化がありません。
(OS起動時に一度だけ取得してる様に見える)
なんとか更新させるか、別の方法がないか探してます。
cputemp.vbs------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set outFile = fs.CreateTextFile("CPUtemp.txt", True)
Set wbemServices = GetObject("winmgmts:" & "\\localhost\root\wmi")
Set wbemObjectSet = wbemServices.InstancesOf("MSAcpi_ThermalZoneTemperature")
For each Item in wbemObjectSet
outFile.WriteLine "CPU Temperature: " & (Item.CurrentTemperature - 2732) / 10 & "°C"
Next
outFile.Close
cputemp.vbs------------------------------
779:デフォルトの名無しさん
07/07/12 21:15:07
みんなやたら高度だな
780:デフォルトの名無しさん
07/07/12 21:43:08
PatchGuardてIATへの書き込みもガードするんですか?
カーネル領域でないのにガードされるんですか?(´;ω;`)
教えてエロい人(´・ω・`)
781:デフォルトの名無しさん
07/07/12 21:43:20
>>777
2003 Server以降なら、シャドー・コピーという手がある。
XPの場合はAPIとして表には出ていないがntbackupが使っている。
ダサい方法だが、ntbackupを子プロセスとしてキックして、
目的のファイルにバックアップ取って、
すぐさまntbackupで別の場所にリストアするという手がある。
ちなみに、
CreateFileでFILE_FLAG_BACKUP_SEMANTICSつけてダメだった?
782:デフォルトの名無しさん
07/07/12 22:19:02
>>781
色々ありがとうございます。
SE_BACKUP_NAME、SE_RESTORE_NAMEの特権を取得した後、
{ HANDLE h;
h = CreateFile("C:\\Documents and Settings\\user\\NTUSER.DAT"
,GENERIC_READ
,FILE_SHARE_READ
,0
,OPEN_EXISTING
,FILE_FLAG_BACKUP_SEMANTICS // FILE_ATTRIBUTE_NORMAL|
,0
);
if (h != INVALID_HANDLE_VALUE) {
printf("pass\n");
CloseHandle(h);
} else {
printf("ng\n");
}
}
の様にしましたがダメでした。
ntbackupの方法も検討してみます。
783:デフォルトの名無しさん
07/07/12 22:33:25
ちなみにGetLastErrorのコードは
CreateFile 20h:プロセスはファイルにアクセスできません。別のプロセスが使用
中です。
でした。
784:デフォルトの名無しさん
07/07/12 22:35:30
FILE_SHARE_WRITEとFILE_SHARE_DELETEも付けたほうがいいよ。
785:デフォルトの名無しさん
07/07/12 22:37:19
FILE_SHARE_WIFEとFILE_SHARE_DAUGHTERもつけたほうがいいよ
786:784
07/07/12 22:40:26
MSDNライブラリのCreateFileのFILE_SHARE何とかのところには、
"Subsequent open operations"と書かれているけど、
それは自分が一番最初にCreateFileする時の話で誤解がある。
実際には、同時にオープンする他者全員に対しての許可なので、
FILE_SHARE_WRITEを付けない = 許可しない場合には、
すでにWRITE有りでオープンしている人がいると、エラーになる。
787:デフォルトの名無しさん
07/07/12 22:45:51
>>781
ntbackupでバックアップ/別フォルダへのリストアに成功しました。
コマンドラインオプションから指示を出せる様なので、
この方法でできそうです。
ありがとうございました。
788:デフォルトの名無しさん
07/07/12 22:50:39
>>784
,FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ
としましたが同じエラーでした。
789:デフォルトの名無しさん
07/07/12 23:16:10
>>777
そんなこと聞く人が破壊がないかチェックなんてできるの?
790:デフォルトの名無しさん
07/07/12 23:20:40
楽勝だよ
791:778
07/07/12 23:26:06
>>778お願いします。
できないと死にそうです。
792:デフォルトの名無しさん
07/07/12 23:28:24
出来ないと死にそうなくらい、ヤバい温度になるのか?
793:デフォルトの名無しさん
07/07/12 23:37:07
>>789
たぶんレジストリの内容をまとめて盗むスパイウェアでも作ってるんだろう。
>>791
自分だったらACPIではなく、SMBus(I2C)で温度センサーの値を読むが。
794:デフォルトの名無しさん
07/07/12 23:46:24
>>792
部屋が灼熱地獄なんです
熱中症になる前にお願いします
795:デフォルトの名無しさん
07/07/12 23:47:57
>>761
標準の new は、小さなサイズの要求を大量に行うと、
メモリを無駄に使用してしまう。
数年前でも2GBのメモリ空間はかなり窮屈で
無駄にされるとかなり痛いので、
自前のアロケータを書いたことがある。
796:デフォルトの名無しさん
07/07/12 23:51:50
>>793
何故ですか?
センサー毎にハードコーティング要るんじゃかったですか?
そんな馬鹿馬鹿しい事やってられません
797:793
07/07/12 23:56:49
>>796
SpeedFanやEverestなどのメジャーなツールが取っている手段だから。
できるかどうかわからない方法を調べるよりは、
できることがわかっている方法を調べるほうがいいでしょ。
798:デフォルトの名無しさん
07/07/12 23:57:58
>>793
>SMBus(I2C)で温度センサーの値を読むが。
どのようにするのですか?
なんか、デバドラ作らないと出来ないような気がしますが、
簡単にAPIで値読めるのですか?
799:デフォルトの名無しさん
07/07/13 00:00:56
>>795
数年前なら、64ビットが選択肢に入ってたろうに。
自分ならまず設計を見直すよ。
大量にnewするオブジェクトたちが、本当に個別に寿命管理が必要なのか、と。
800:デフォルトの名無しさん
07/07/13 00:11:43
Boost.Pool最強説
801:795
07/07/13 00:20:51
>>799
漏れは、マシンもOSも調達されてから投入されたので、
64bit化しようとは、流石にいえない。
そもそも、実装されるメモリの量も余裕は無かったし。
個別の寿命管理は確実に必要だったと今振り返っても思うよ。
802:デフォルトの名無しさん
07/07/13 00:28:50
つーか温度計る手段がいまだに規格化されてないってのがアホだよな
WMIで得られる筈が>>778みたいな半端な物で形骸化してるみたいだし
今ではデスクトップPCでさえサスペンド/レジュームする時代なんだぜ
803:デフォルトの名無しさん
07/07/13 01:06:26
URLリンク(homepage.mac.com)
804:デフォルトの名無しさん
07/07/13 01:07:30
URLリンク(forum.windowspower.de)
URLリンク(freshmeat.net)
URLリンク(www.footslog.com)
805:デフォルトの名無しさん
07/07/13 02:33:43
>>803
(゚д゚)ハァ?
806:デフォルトの名無しさん
07/07/13 03:01:36
>>787
もしVistaで動かす予定があるならntbackupは廃止されたから
まじめにボリュームシャドウコピーを使う方法も併用する必要がある
807:デフォルトの名無しさん
07/07/13 07:17:28
>>802
計測ってより計測法でも利権が絡むからね。
808:デフォルトの名無しさん
07/07/13 08:05:05
>>801
それは、
何かよほどのこと
って奴だったんだよ、たぶん。
ラージアドレス(/3GB)を使ってもアドレス空間が足りないが、
かといってPAEなんて使いたくないという場合には、
いっそのことプロセスを分けてしまうという手もある。
プロセスを跨ぐオーバーヘッドが巨大だけどね。
809:デフォルトの名無しさん
07/07/13 08:09:20
>>806
強引な荒技もあるよ。
デフラグのAPIを使ってファイルのディスク上の所在を調べて、そこを直に読んでしまうという手もある。
もちろん、そんな行儀の悪いことは、よほどの理由がないとダメだが。
810:デフォルトの名無しさん
07/07/13 17:13:50
CreateProcessでCREATE_SUSPENDEDを利用してNotepad.exeを起動して、
とまってるときのMessageBoxAとMessageBoxWのアドレスと、
その後、ResumeThreadした後のMessageBoxAとMessageBoxWのアドレスが違うような気がするんですけど、
これって気のせいですか?
811:デフォルトの名無しさん
07/07/13 17:17:33
DefineDosDevice()で、特定のフォルダを新規ドライブとしてマウントできるけど、
そのとき、元のフォルダのほうをACLなりEFSなりで自プロセス以外から見えなくすることは可能?
812:デフォルトの名無しさん
07/07/13 17:53:48
>>810
CREATE_SUSPENDEDで作成されたプロセスは初期化が完了している保証は無い
813:デフォルトの名無しさん
07/07/13 18:37:58
むしろ初期化終わってないのが普通じゃない?
この段階だとGetModuleFileNameExのようなAPIが失敗するもんで、
どうやってこの初期化だけを完了させるのか知りたかったりする
(forでResume/sleep/Suspendを細切れにしてまわしてた)
814:デフォルトの名無しさん
07/07/13 18:45:57
PEヘッダ解析して、PE.EntryPointのアドレスを書き換えるか、
ブレークポイントをしかけておくってのはどうだい?
815:デフォルトの名無しさん
07/07/13 19:50:28
CREATE_SUSPENDEDで止まっているときに色々やるのはオススメしない。
Windowsのサービスパックで挙動が変るのならまだしも、
WindowsUpdateで配られるモジュールのアップデートで挙動が変ってしまうから。
安全なのはプロセスのエントリポイントを乗っとること。