[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 06/18 16:04 / Filesize : 111 KB / Number-of Response : 495
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Win32API質問箱 Build64



1 名前:デフォルトの名無しさん [2008/04/02(水) 10:21:31 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

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

【前スレ】
Win32API質問箱 Build63
pc11.2ch.net/test/read.cgi/tech/1204600558/


413 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:30:14 ]
全てのプロセス・・・?
自作アプリのみのフックじゃなかったのか


つうか自作アプリなんて真っ赤な嘘で、本当はチートツールでも作りたいだけだろ


414 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:44:27 ]
SetWindowsHookEx使いたくなかったら、リモートスレッドくらいしかないな。
もちろん外部からアドレス計算して書き込む事も可能だけど面倒だね。
SetWindowsHookExが楽なのは、権限無視して潜り込める事だ。

ネットワーク限定だと、ファイアーウォール等の実装と同じ方法で覗けた気もするけどやり方忘れた。
XP以上辺りからOSでそんな機能が用意されていたような。

他には、葱のような実装か。

415 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:45:32 ]
>>413
??

416 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:50:37 ]
>>414
権限は無視されないだろ
そんなことできたらUsers権限でサービスとかもフックできることになるしセキュリティもへったくれもねー

417 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:57:24 ]
裏画面の操作について質問です

mDC = CreateCompatibleDC(hDC);
で互換DCを取得し、mDCに対して文字の表示などの操作を行った後
表画面にmDCを転送したいのですが
転送はBITMAPなどと同じようにBITBLITで転送でよいのでしょうか?

色々試しているのですが何も表示されません




418 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:01:21 ]
>>417
キモいフックネタが続いてる時に君のような質問を見るとホッとするよ。

419 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:12:11 ]
>>415
何がわからないのかがわからない。
>>413の疑問はもっともだろが。

420 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:14:01 ]
小学校の頃騎馬戦をやったのだが人数が合わなくて自分の騎馬だけ女子が上に乗ることになった
最初は上に乗る女子も恥ずかしかったらしく男子の腕にお尻をつけないようにして戦っていた
でも次第に騎馬の体勢が崩れてきて右側を支えていた奴がこけてしまったので
上に乗っていた女子は左側を支えていた自分の右腕にまたがるような格好になった
自分も右腕だけで支えるのはきつかったがなんとか崩れないように右腕で女子を上に押し上げていた
するとその女子は
「あっ・・・まって・・・ちょっと・・・あっ・・・あたってる・・・あたってる・・・あっ・・・」
と自分の右腕を挟みこむようにして腰を捻った。
小学生の自分に「あたってる」のが何なのか分かるはずもなく、
「今はまだがまんして!」
と訳も分からず励ましていた。
女子は「う、うん」と頷いたきり前を見据えてこちらを見ようともせず、力んだ顔をしている。
横から敵の騎馬が突進してきた。
旋回しようとするがバランスが崩れてしまい、右腕を思いっきりその子の股間に押し付けるように
突き上げてしまった。
「ひゃぅんッ」と声が漏れた。
なんだ?今の
見上げると真っ赤な顔とした女子と目が合った。
その喘ぎ声の理由を知る由もなく、「痛かった?」と尋ねると、
何も言わずにフルフルと首を振った。
「よし!このまま攻め込むぞ!」と隣の友人が叫んだ。
俺もそれに乗じて二人で前方へ疾走する。
が、当然それには上下運動を伴い、上に乗る女子の股間は何度も俺の右腕に押し付けられる。
「んっんっんっ・・・」
振動に合わせて彼女の鼻にかかった息が漏れる。
俺は小学生なりに何か淫靡なオーラを感じ取っていた(恐らく友人もだろう)が
勝負中に立ち止まるわけにも行かず、相変わらず女子に上下運動を与え続けていた。
しかし次第に彼女の「んっんっ」が「んっあっふっ」と声音を帯びてきた。
俺の頭に乗せていた手に次第に力がこもり、ギュウとつかんでいるのが分かった。
しかしここでアクシデントが。友人が足を捻り、転びかけ、体勢を立て直すために踏ん張ったが、その時に彼女の股間に最大の衝撃を与えてああ30行だ


421 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:32:23 ]
>>417
DC には何も描画したり表示したりできない。
したがってもちろん描画結果も格納されない。

ビットマップやプリンタに描画したり表示したり「するために」DCを使う、というだけ。
417 のやりたいようなことをするためには、CreateCompatibleBitmapでビットマップを作り、
それに (適切なDCを用いて) 描画しておいて 、BitBlt でそのビットマップを表示すればよい。

オフスクリーンビットマップやメモリDCでググればサンプルは多数見つかるだろう。



422 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:01:53 ]
>>421
色々調べてやってみたのですが

mDC = CreateCompatibleDC(hDC);
bitmap = CreateCompatibleBitmap(mDC ,800 ,600);
SelectObject(mDC ,bitmap);

HBRUSH brush = CreateSolidBrush((COLOR_BTNFACE+1));
SelectObject(mDC , brush);

PatBlt(mDC,0,0,800,600,PATCOPY);

BitBlt(hDC, 0, 0, 800, 600, pHDC, 0, 0, SRCCOPY);

この処理をすると背景が黒字に灰色の点が点々と表示されるようになってしまいましたorz


423 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:08:18 ]
>>419>>413

424 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:10:42 ]
CreateCompatibleBitmapの第一引数をhDCにしてみる

425 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:48:59 ]
>>422
CreateCompatibleDCで作られたメモリDCには初期状態で1*1の
モノクロビットマップがセットされている。
CreateCompatibleBitmapでそのDCを指定してしまうと、
モノクロのビットマップが作られてしまう。

っていうか、それ以前の問題として、そのBitBltのところのpHDCは
どこから出てきたんだ?

426 名前:デフォルトの名無しさん [2008/04/12(土) 05:56:19 ]
>>423>>415

427 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 06:00:01 ]
知らないならレスしないでください

428 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 06:33:31 ]
>>425
phdcは古いコードの名残で誤植でした
とりあえず塗りつぶしまでは上手くいきました、ありがとうございます

PatBltで背景を塗りつぶすときウィンドウ標準の灰色で塗りつぶしたい場合は
ブラシで直接色を指定しか方法はないのでしょうか?

429 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 06:42:57 ]
GetSysColorBrushならシステムカラーインデックスで指定できるけど

430 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:03:08 ]
>>409
なる。でありがとう

非MFCであれば、あえて_CrtDumpMemoryLeaksなどを使わなくても_CrtSetDbgFlagで正しい結果が得られる
むしろmainとかの段階では得ることができない。
にも関わらず_CrtDumpMemoryLeaksで頑張ろうとしているうえ
対策としてプログラム構造まで変えてしまったのが364 ってわけか

良くあることだけど確かに恥ずかしいね 超がんばれ

431 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:33:52 ]
クラスのインスタンスをグローバル変数にしてはいけない、というのはC++の常識よ。
メモリリーク云々の問題に関係なく、グローバル変数にするのはやめるべき。



432 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:38:20 ]
>>431
それどこの国の常識?

433 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:41:15 ]
クラスのインスタンスに関わらずグローバル変数を使う事自体が邪悪なのは常識だが、
クラスのインスタンスに限って邪悪とするのは非常識。

434 名前:デフォルトの名無しさん [2008/04/12(土) 13:01:28 ]
WIN32SDKでモードレスダイアログに親ウィンドウが隠れてしまうのですが、
親ウィンドウを最前面に表示させるにはどうすればよいですか?

435 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:04:29 ]
グローバル変数駄目っていっても
標準関数の中で使われてないか?

結局内輪でルール統一できれば問題ないよ。
プログラム上のどこでも使う変数や構造体を関数にわざわざ
渡していくことはナンセンスだ。

ひとつの変数をいろんな用途に使う方がよっぽど邪悪。

436 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:10:36 ]
クラスのインスタンスをグローバル変数にしてはいけないのは、
それが、main関数に入る前に他の関数を呼び出すこと、だから。

>>435
> プログラム上のどこでも使う変数や構造体を関数にわざわざ渡していくことはナンセンスだ。
> ひとつの変数をいろんな用途に使う方がよっぽど邪悪。

明らかにダメなやりかたと比べてマシだというのは、ナンセンスだと思う。

437 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:13:22 ]
POD 型のグローバル変数も関数の戻り値で初期化可能だろ。C++ では。

438 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:15:29 ]
グローバルじゃなくてstatic なメンバ変数でもそうだしねぇ。

439 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:18:56 ]
>>435
グローバル変数使ってる標準関数は軒並み糞だと言われている。
乱数列2つ使いたいのに使えないよこの糞がとか、
strtok をスレッドセーフにしてくれよこの糞がとか。

440 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:19:07 ]
すいませんが

APIと何の関係が?

441 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:31:11 ]
GetDesktopWindow();の戻り値を
CreateDialogに指定してみたたら親ウィンドウを最前面に表示出来ましたが、
親ウィンドウから文字列をモードレス側のリストビューに追加出来ません。
何故ですか?



442 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:34:06 ]
それは
朝食にパンを食べたら、雨が降りました。何故ですか、
と聞いているようなもんだよ。

443 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:34:17 ]
状況説明は詳細に。

444 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:35:25 ]
>>437
可能かどうかと、やるべきかどうかは、別問題。


445 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:38:11 ]
>>444
コンストラクタ/デストラクタ内で変な事してなけりゃ同じことだろ。
クラスがどうかとか無関係。

446 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:47:16 ]
>>442
私が提示している情報以外に必要なものを教えて下さい。

447 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:48:34 ]
仕様。

448 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:55:55 ]
>>445
変なこと、ねぇ。

たとえばnewを使うとか、な。

449 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:57:23 ]
new とか別にいいだろ・・・。

450 名前:デフォルトの名無しさん [2008/04/12(土) 13:59:53 ]
>>447
具体的に

451 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:00:44 ]
グローバルで問題になるのは
他の翻訳単位内にある初期化の必要なグローバル変数に依存する
処理を記述する(初期化前に使ってしまうかもしれない)ってところだな。
逆に言えば、それさえしなけりゃ大した問題は無い。



452 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:02:23 ]
>>449
newが投げた例外をmain関数でもcatchできないのはマズいだろう。

453 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:03:32 ]
>>452
その場で catch して abort しろよ・・・。

454 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:04:17 ]
どうせ abort するしかないんだから
catch できなくても大した問題ではない。

455 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:07:43 ]
元の発言の常識によれば、

static std::vector<int> hoge(100);もダメ、
struct Point {
 int x,y;
 Point(int x_, y_) : x(x_), y(y_) {};
}; で、

static Point ptZero(0,0); もダメか。
こんなのも全部シングルトンにすんのかw

456 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:08:58 ]
スマン static は良いのか・・・

457 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:10:29 ]
シングルトンは初期化のタイミングをずらしたグローバル変数に過ぎない。
少ないに越した事は無いが、利便性を考えると欲しい事はあるな。

458 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:17:58 ]
NTFS以外のファイルシステムも使えるから保証はないよな。

459 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:27:17 ]
まとめてC++スレに移動してくださいです。。。。

460 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:38:40 ]
本格的に邪魔

461 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:42:15 ]
>その場で catch して abort しろよ
何そのグローバル変数で配置されることを前提の実装



462 名前:デフォルトの名無しさん [2008/04/12(土) 15:10:12 ]
どうせ二人ぐらいが言い争ってるだけだろ
次はgotoネタか?

463 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:19:03 ]
breakもcontinueもifもgotoの一種だよな

464 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:21:08 ]
だ ま れ

465 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:37:42 ]
い や だ

466 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:49:34 ]
死ね

467 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:40:08 ]
死 に た く な い

468 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:21:43 ]
>462
2人ではなく病気の彼1人だろ

469 名前:デフォルトの名無しさん [2008/04/12(土) 17:59:32 ]
最近の自演は高度化してるな

470 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:03:34 ]
従順な奴隷のように、期待した通りの回答を得られないと
逆恨みしてスレに粘着して荒らすなんて、もうね。

プログラミングを勉強する前に、勉強すべきことがあるでしょうに。

ま、コミュニケーション能力が低いまま就職して、痛い目にあえばいいんだよ。


471 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:13:12 ]
>>470
答えられない屑は黙ってろ



472 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:16:26 ]


473 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:17:04 ]
>>470
知ったかで回答して周囲から叩かれたのをまだ根に持ってるようだな

474 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:39:19 ]
どう考えても粘着しているのは「知らないならレスしないでください」と言われた回答者です。
本当にありがとうございました。

475 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:04:24 ]
あなたの代わりにMSDNで調べてあげるスレ

ってのを作って分離しようよ

476 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:05:32 ]
グローバル変数の話は↓のスレを再利用してやってくれ

sizeof(char)が必ず1でも、省略すべきではない
pc11.2ch.net/test/read.cgi/tech/1187521586/

477 名前:デフォルトの名無しさん [2008/04/12(土) 19:37:18 ]
>>475
お前がそのスレ立てろ、今すぐに(笑)

478 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:49:11 ]
ピクチャーボックス再描画について質問です.

状況は次の通りで, 2.の消える問題を解決したいです.
1. 他のウインドウが重なっても, 重なっているウィンドウを移動させると
  隠れていた部分が再描画される.
2. 他のウインドウが重なっていて, 重なっているウィンドウを終了させると
  隠れていた部分が消える.

やっている処理はこんな感じです.
1. 裏画面に表示データをセット → InvalidateRect
2. WM_PAINT処理では, BeginPaint → BitBlt → EndPaint

何をトリガーに再描画指示を出せばよいか, アドバイスお願いします.

479 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:18:22 ]
>何をトリガーに
WM_PAINTじゃね? 最近(Vista)のアエロじゃ発生しないらしいけど

480 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:20:43 ]
>>478
> 何をトリガーに再描画指示を出せばよいか

その発想が間違ってる。

表示内容が変ったらOSに伝える
再描画タイミングはOSが判断する

WM_PAINTが適切に送られてこない、あるいは、
BeginPaintで適切な領域が指示されないために、
正しく表示されないのであれば、
OSに不適切な値を渡していると思われる。

481 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:21:53 ]
アエロ…………プクク(笑)



482 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:25:06 ]
>>478
ウィンドウを内容を表示したまま移動 → WM_PAINTを何度も受け取るので多少失敗していても気がつかない
だったりして。

483 名前:デフォルトの名無しさん [2008/04/12(土) 20:25:32 ]
WM_PAINT以外にも描画しないといけないメッセージがあるけど、
それ関係ない?

484 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:32:13 ]
NTFSのアクセス権チェック方法として、ACEを取得する必要があるのがわかったのだが、
自身の権限と取得されたACEの中で一番有効なACEと比較しなければならないとおもうのだが、
どのACEが有効となっているかの判断はどうすればよろしいでしょうか?
※関連:GetFileSecurity、GetSecurityDescriptorDacl

485 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:51:24 ]
>>478
ピクチャーボックスってVBか.NETの事か?
それともStaticコントロールをそう呼んでるのか?

いずれにしろピクチャーボックスなんてコントロールはWin32には無い
Staticコントロールに描画したいならSS_OWNERDRAWスタイルにしてWM_DRAWITEMに応答しとけ

486 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:05:37 ]
なんかおまいらひまだな。。。。
最近ニュースで話題の学校裏サイト状態w
でも、ほんとはここはWin32APIスレですよ。


487 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:06:34 ]
>>481
Aeroをローマ字として読むとアエロになるから別におかしくないだろ
無知は黙ってろよ

488 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:33:26 ]
Googleはゴーグルって読むんだよ
無知は黙ってろ
Yahooはヤホーって読むんだよ
無知は黙ってろ
gooはゴーって読むんだよ
無知は黙ってろ

489 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:34:19 ]
煽りも煽られもいらないっす

490 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:39:41 ]
自作アプリで状況に応じて、BS入力の可否を制御するプログラムを作ってるところで、
少し聞きたいことがありまつ。

Viewで処理前にWM_CHARをとらえて、それでBSおよびCtrl+BSを禁止する方向で
BSの場合は、VK_BS(0x09)で検知できた。<= OK
BS+Ctrlが捕えられなかったので調べると、wparamに0x7fが入ってた。 <= これが不思議
0x7fを調べるとVK_F16。まずF16なんて使ったことないしF16ってなんなの?押せるの?
0x7fって昔の記憶ではDELETEボタンだったなあと思いつつ、それとは何か関係ある?

0x7fで処理してしまえばそれでプログラム的にはOKなんだけど、
詳しい人もけっこういるので質問させて。


491 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:09:25 ]
WM_CHARだと仮想キーコードではなく、
ASCIIとかの文字コードだと見なすべきだと思う。

そういう意味では0x7f = DELに1票。
VK_BACK = 0x09もASCIIではBSだし。

仮想キーコードが出てくるのはWM_KEYDOWN/UP系だよ。



492 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:11:27 ]
あああ、そうだった。VKで処理しちゃだめだったね。
どうもありがとう!

493 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:18:03 ]
491さんにごめんなさいな追加カキコ。
VK_BS(0x09)って書いたけど、厳密には0x08でした。
ASCIIでももちろん0x08です。

494 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:25:46 ]
質問
SetRectの存在意義がわかりません






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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