[表示 : 全て 最新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/


175 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:31:28 ]
>>173
だってさ、95〜XPまで問題なく使えたんだぜ? いきなり廃止するとは思わないじゃない
でも互換モードでXPSP2にすると普通に動くあたりがMSらしい
きっと古いMS製品も動かなかったのだろうw

シンボル取ってきて見てみたらAPIの前にRETIRED_とか付いててワロタ

176 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:50:30 ]
互換モードでやることの中には、古いファイルを使うなんてこともなかったっけ?

177 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:52:33 ]
>>175
洒落が聞いてるなw

Vistaにするにあたって、整理したのかねぇ。
で、古い非公開APIは別の所にまとめたとか。

178 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:06:11 ]
そういうスーパーハッカーみたいな技術はどうすればつくんですか

179 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:08:44 ]
DLLを覗けばいいんじゃね

180 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 02:55:01 ]
>>174
自己レスです。送り先指定がないので自アプリのトップへ送ると固定されてるのかなと思ってたけど
考えてみたら、XKeymacsみたく、外部アプリへキーボード入力を送り込むアプリもあるので、
そういう制限はないはず。なのでよくわからんが、Xkeymacsのソースを解析中。
そもそも単にキーボードカスタマイズの自由度を広げるためにやってたんだが、深みにはまりそうな予感してきたw

181 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 05:01:11 ]
>>180
だれも気にしてないと思うけど、知識共有になるかもなので、うまくいったコードおば。
void Hander_For_Ctrl_F() {
MSG oMsg = { m_hWndObj, WM_KEYDOWN, VK_RIGHT, 0, 0, 0 };
BYTE cKeyStates0[ 256 ], cKeyStates[ 256 ];
ZeroMemory( (void *)cKeyStates0, 256 );
GetKeyboardState( cKeyStates );
SetKeyboardState( cKeyStates0 );
m_pAxObj->TranslateAccelerator( &oMsg ); <= 修飾なし右ボタンをActiveXへ
SetKeyboardState( cKeyStates );
}
ActiveXにそれ用のコマンドがなかったので、偽装キー入力で対応したんだが、
キーボードのEmuは奥が深い…。というか泥臭い。なんかあとからバグりそうねw

182 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:35:42 ]
>>178
デペンデンシー・ウォーカー眺めてると楽しいよ。

183 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:13:12 ]
指定のウィンドウにWM_DROPFILESを投げるとき、
DROPFILES構造体のために確保した領域は
投げてからすぐ解放してしまっていいのでしょうか?
サンプルを探したら、しているものといないものがあって
判断に迷います。



184 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:23:56 ]
WM_DROPFILESそういう使い方をするもんではない

思うに、COMのOLED&Dと勘違いしてないか?

185 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:45:10 ]
>184
では、ウィンドウにファイルをドロップするには何のメッセージを使えばいいのでしょうか?

186 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:54:03 ]
>>183
別のプロセスに送るなら、すぐに解放しても構わないはず。


187 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:57:19 ]
>>184
そういう使い方"も"出来る訳だが
知らないのか?

>>183
対象アプリがDragFinishで開放するからいらないんじゃないの?

188 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:03:09 ]
知らないならレスしないでください

189 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:06:17 ]
知ったか厨うぜえ
勘違いしてるのはお前だろw

190 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:08:19 ]
誰が誰に言ってるのかも書いてクレヨン

191 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:11:50 ]
とにかく知らないクズはレスしないでくださいよ。うざい

192 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:14:44 ]
お前らレスアンカーぐらいつけろ

193 名前:デフォルトの名無しさん [2008/04/07(月) 15:20:28 ]
>>184



194 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:22:22 ]
だから知らないならレスするなよクズ

195 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:29:08 ]
また荒れてきたなあ
とりあえず>>184は切腹

196 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:29:44 ]
>>184

197 名前:デフォルトの名無しさん [2008/04/07(月) 15:29:49 ]
>>195
荒らすなよお前

198 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:55:34 ]
VistaでもWin16アプリって動くの?

199 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:58:41 ]
>>お前らへ
>>121

200 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:58:50 ]
>>198
空気読めよ

201 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:18:02 ]
オマエモナー

202 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:34:38 ]
これまた懐かしい

203 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:45:32 ]
(・∀・)ジサクジエンデシタ



204 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:46:45 ]
もう、ぬるぽ

205 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:56:24 ]
わっしょいわっしょい

206 名前:デフォルトの名無しさん [2008/04/07(月) 17:51:02 ]
ファイル又はメモリ内のデータを圧縮するAPIと解除するAPIを教えてください

207 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 18:21:58 ]
zlib

208 名前:デフォルトの名無しさん [2008/04/07(月) 18:54:51 ]
cabinet.dllの簡単な使い方を教えてくださいよ

209 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 18:59:14 ]
知らないならレスしないでください に一致する日本語のページ 約 141,000 件中 1 - 100 件目 (0.69 秒)

210 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:05:07 ]
>>206
RtlCompressBuffer / RtlDecompressBuffer

211 名前:デフォルトの名無しさん [2008/04/07(月) 19:14:15 ]
>>209
お前>>184だろ
知らない癖に主観で嘘を書いたら叩かれて当然
そんな当然の事も分からず被害者ヅラするぐらいなら最初から書くな

212 名前:デフォルトの名無しさん [2008/04/07(月) 19:16:36 ]
>>210
すんません、それぐぐっても悲しいくらいにヒットしないんですが
それって簡単なんですか?

213 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:28:22 ]
>>212
あるじゃんwww
しっかり検索しようよ
undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Compression/RtlCompressBuffer.html



214 名前:デフォルトの名無しさん [2008/04/07(月) 19:33:02 ]
>>213
あ、これは失礼しますた。
WEB全体からぐぐるとある程度でてきました。

215 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:45:25 ]
>>214
    ∧∧
   ヽ(・ω・)ノ ズコー
  \( \ ノ
 、ハ,、  ̄
  ̄

216 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 21:46:19 ]
こんにちは。
エクスプローラーのリストビューのタイプの変更を行いたく思い、少し調べているのですがよくわからない部分があるので質問させてください。

yokohama.cool.ne.jp/chokuto/urawaza/lv_icon.html
を読んでタイプの変更は出来そうなのですがWindows Vistaの特大アイコンなどはどのようなメッセージを送ればいいのかわからないのです。
ヒント等ご教授戴ければ幸いです。

217 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 21:49:10 ]
つ Spy++

218 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 22:01:34 ]
>>217
どうもありがとうございます。
その発想はありませんでした。

219 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 01:39:44 ]
 Windowsプログラミング用にtypedefしたデータ型の変数を扱うときは
Cの標準ライブラリを使うかで悩んだりするけど、他の人はどうしてる
のかな。
 例えばWindowsプログラムには、文字列用にいろいろなtypedefした型が
あるけど、実際には同じくcharの配列だしsprintfとかstrlenとかも使え
るだろうが、それは反則とみなすのか。
 wspritnfとかlstrlenのようにWindows用の関数があればいいけど、それ
がないやつは困りそうだ。あったとしても、MSDNで調べて理解して解決ま
で持っていくのも大変そうだな。
 ところでファイル入出力も、fputs、fprintf、fgets等に似たWindows用
の関数もあるんでしょうか。あるかないかだけ聞ければいいです。


220 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 01:40:52 ]
_tcslen とか、文字系の関数には全部 TCHAR 用の関数が用意してあるでよ。

221 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:08:02 ]
それってVCの独自拡張じゃないのか?

222 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:15:04 ]
ウインドウに描画はするけど、クリックしたら下にあるウインドウにメッセージが届くようにするにはどうすればできますか?

223 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:58:55 ]
俺様拡張よりはマシだろう。

VC以外のコンパイラを使うことも考慮するなら、
VCのTCHARマクロと互換性のあるものを別に作って使えばいいと思うよ。



224 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 06:28:42 ]
tchar.hなんてWindows用コンパイラなら標準みたいなもんだろ

225 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 07:23:58 ]
ていうか、C標準にwchar_tが導入されたときに、TCHARマクロのようなものも標準化されなかったんか?

226 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 07:36:30 ]
>>221
そもそも Windows プログラミングをしようってんだから
TCHAR 使うのは普通だろ?

227 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 07:59:08 ]
いい加減9xは切り捨ててwchar_tで書けばいいと思うんだ

228 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 08:14:23 ]
VC特有を嫌うくらいなら、
wchar_tがWin32APIのWCHARと互換性があるという仮定は、
すべきではないだろう。

gccではwchar_tが32ビット幅だったりするしな。

229 名前:デフォルトの名無しさん [2008/04/08(火) 09:15:12 ]
ttp://www.forest.impress.co.jp/article/2004/02/27/otorinasai.html

のようにCTRL+ALT+DELを押した時の画面のキャプチャを取ろうと思ってます。
アプリケーションのサービス化、デスクトップハンドルの取得、
EnumDesktopWindowsでウインドウ列挙、までは可能ですが
GetDCによるHDCの取得ができません。
何か別の方法があるのでしょうか?

「SAS Window」のウインドウハンドルを取得しSetWindowTextでタイトルを
変更する事ができましたのでウインドウハンドルまでは取得できています。

よろしくおねがいします。

230 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 09:16:58 ]
>>229
マニュアルとかのドキュメント作成のために画面キャプチャが欲しいっていうのなら、
リモートデスクトップとかVMwareとか、そういうのを使うといいよ。

231 名前:229 mailto:sage [2008/04/08(火) 11:33:56 ]
>>230

すみません、プログラムでなんとかできればと考えております。

232 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 11:51:13 ]
>>231
とりあえずGetDC失敗した後GetLastErrorで原因を探ってみてはどうじゃろ。

233 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:04:02 ]
さすがにサービスアプリを作って試してみるのはめんどくさすぎるw



234 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:14:14 ]
sexeを使ってみ。

235 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:15:12 ]
>>233
知らないのに無理に答えようとしてガンバル必要はないぞ。

236 名前:デフォルトの名無しさん [2008/04/08(火) 12:18:27 ]
>>234
このエロめ!

237 名前:デフォルトの名無しさん [2008/04/08(火) 12:19:51 ]
知らないならレスしないでください

238 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:27:26 ]
また荒れてるのかw

239 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:33:27 ]
そんなもん知ってる奴なんて作者とMSの人間ぐらいだアホか

240 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:34:28 ]
>>239
無知ならレスしないでください

241 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:35:37 ]
>>228
gccで一括りにしてはダメ。Windows用のgccはwchar_tが16ビット。


242 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:37:31 ]
ふつうにできるやん

243 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:42:51 ]
メールやん



244 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:49:56 ]
shlwapiのHashDataって、OSやDLLのバージョン違ってもアルゴリズム同一と保証されてる?

245 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:09:15 ]
英語版MSDNの検索がタイムアウトしまくって使い物にならん

246 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:20:06 ]
>>244
されてないと思うよ。
NT4.0の頃のIEの暗号化が標準か高度かによって違っていただろうしね。

CryptoAPIを使うことは考えてみた?

247 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:28:00 ]
244です。
>>246
あー。いや暗号強度とかはあんまり関係なかったんです。
データ管理に128bitのハッシュが必要だったんだけど、ソースをあまり増やさないで欲しい
というんでMD5ルーチンが使えなかった、でこれを利用したかった。
ポータブルなデータではないんで絶対同一であることが必要でもないんだけどちょっと気になったので。

248 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:39:23 ]
MD5ルーチンってどっかのDLLが持ってたはず
SDKヘルプで出てきたし

249 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:44:24 ]
MSDNライブラリのネット版がクソ重くて見れないんだけど嫌がらせか?

250 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:48:31 ]
英語版もさっきそんな感じだったなあ
今は復帰してるが

Windows Filtering Platform超ワケワカンネ

251 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:52:16 ]
ファイアウォールでも作るのw?

252 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:01:01 ]
>>245
>>249
独り言やめれ。

MSDNライブラリくらいローカルのHDDにインストールしろよ。

253 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:02:59 ]
独り言じゃないよちゃんとお前がきいてるじゃないか



254 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:03:07 ]
>>252
無知はレスするなつったろクズ

255 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:03:24 ]
MFCのCDC::DrawText()についてなのですが、
内容自体はAPIのDrawText()そのものなので、
こちらで質問させていただきます。

ワードラップをオフにした状態で常に右端で折り返したいのですが、
それを実現するフラグ指定はあるのでしょうか。

dc.DrawText("あいうえおかきくけこさしすせそ 1234567890 1234567890 1234567890",
            CRect(0, 0, 150, 150),
            DT_WORDBREAK);

DT_WORDBREAKを指定すると、日本語の部分は右端で折り返させるのですが、
半角の部分はスペース位置でワードラップしてしまいます。
DT_WORDBREAKをオフにすると折り返しすらされません。


256 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:09:23 ]
叩かれた>>184が逆に叩く側に回って荒らしてるようだな
分かりやすい奴だ

257 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:27:22 ]
>>248
MD5Initってのが出てきたが
>Requires Windows XP or Windows 2000 Professional.
ってのが>>244の希望に沿ってない気がする

258 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:40:13 ]
>>257
出てきたって・・・おい

知らないなら調べてまで答えるなよ。
知ったかぶりの知識はいらない。
ちょっと調べて得られる情報なら本人だって既に知ってるだろ。

Win95OSR2、NT4.0以降でサポートされてるCryptoAPIを使え。
実際の処理を行うプロバイダがインストールされているかは別の話しだが。

259 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:46:49 ]
2000・XP以降対応で何が不満なのだろう・・・
今更サポート切れてる9xなんかに対応する必要なんて無かろうに

260 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:46:52 ]
CALG_MD5ならMicrosoft Base Cryptographic Providerでサポートされると書いてある
IE3が入っていればWin95でも問題ないと思う

261 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:55:35 ]
>>228
ところがCygwinやMinGWのgccはwchar_tが2バイトでビルドされているので、
WCHARとwchar_tが等しいという仮定はここでも通用する。

262 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:56:34 ]
>>258
嘘教えるなくず

263 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 15:09:55 ]
日付が変わるまで書込み禁止



264 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 15:58:23 ]
>>261
そういうのを、たまたま一致している、というのだよ。


265 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:03:07 ]
どんまい

266 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:14:45 ]
ける

267 名前:263 mailto:sage [2008/04/08(火) 16:15:30 ]
お前ら1回死ね

268 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:25:59 ]
>>255
英語圏では単語の途中で改行されるのを嫌うから、なるべく区切り文字で改行するようになってるんだと思う。

269 名前:229 mailto:sage [2008/04/08(火) 16:30:50 ]
>>232
GetLastErrorでは何も返ってきませんので、
GetDCでエラーが発生しているわけでは無いみたいです。
ただGetDCで返ってきたHDCからHBITMAPを作成しても真っ黒です。
ちなみに通常の状態ですと、
取得したHDCからHBITMAPを作成で正常にキャプチャできています。

270 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:49:21 ]
>>264
CRTDLL.DLLやMSVCRT.DLLにあわせるためであり必然です

271 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:57:20 ]
もうXPに帰りたい…
実行に管理者権限が必要かどうかぐらい書いとけカス

272 名前:デフォルトの名無しさん [2008/04/08(火) 17:16:45 ]
帰ればいいだろ
わざわざVista使ってストレス溜めて何の得になるんだ?

273 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:44:09 ]
俺ビスタだぜ?
お前XPなの?
m9(^Д^)プギャーーーッ
ってしたいため



274 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:45:26 ]
XPなら何に管理者権限が必要かどうか区別する必要が無いなんて事は全く無いが

275 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:49:40 ]
必要があるってことは無いが無いってことも無い事は無いか必要ってこともあることは無い

276 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:50:26 ]
>>270
合わせる必要なんかないだろ。

ていうか、gccはGNUのC標準ライブラリを使うんじゃないか?
MSVCRT.DLLを使うのは行儀が悪すぎる。

277 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:52:05 ]
VistaってUser/PowerUser権限をWindows2000見たいな感じで使うこと出来ないの?

278 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:55:39 ]
はい

279 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:57:36 ]
そりゃ悲惨だね・・

280 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:07:37 ]
はい

281 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:14:29 ]
>>276
MinGWinはデフォルトでMSVCRT.DLLを使うよ

282 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:16:50 ]
>>281
知ったか乙

283 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:22:59 ]
>>282



284 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:26:39 ]
>>277
2000みたいな感じってのがよくわからないが、グループや特権の割り当ては2000と同じようにできるよ
Administratorsが必要なときに自動的にrunasみたいなダイアログが出るところは2000と違う

285 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:10:45 ]
>>276
W系APIが16ビット前提なんだから、合わせるのは当然でしょ。
gccでデフォルトで glibc を使うプラットフォームはむしろ少数派。


286 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:32:42 ]
UACなんて無効でおk

287 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:41:12 ]
つまりUser権限で常用して必要なときはRunasってな使い方がVistaでも出来るって事?

288 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:53:17 ]
>>287
出来る。

289 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:55:13 ]
Win32 API を使う漏れらがちゃんと気を付けて、たとえば無暗にHKLMとかHKCRに
もの書いたりしないようにしてゆけば、>>287みたいな使い方もどんどん楽になってゆくよね
・・・・無理だけどさ。

サービスなんかやめて setuid ビット採用してよ >> Windows

290 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:30:41 ]
runasでバッチ作るくらいで勘弁してあげたらw

291 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:24:31 ]
>>249
MSDNネット版、やたら重いよね。Webのデザインが変わってから重くなったイメージ。
勘弁してほしいよな。

292 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:21:02 ]
>>285
合わせるのが合理的ではあるが、絶対に合せなければならないというわけではないぞ。

293 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:21:50 ]
>>291
MSDNライブラリくらいローカルにインストールしろって。
オンライン版よりも少し内容が古くなるったって、それが問題になるような仕事してんのか?



294 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 07:32:28 ]
>>291
おれは今のMSDNのほうが使いやすいな
あとは検索の糞っぷりと左ペインの使いづらさをどうにかしてほしい

295 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:34:38 ]
>>292
Windows SDKを検索すれば状況が理解できると思うよ

296 名前:デフォルトの名無しさん [2008/04/09(水) 10:25:02 ]
知らないならレスしないでください

297 名前:デフォルトの名無しさん [2008/04/09(水) 10:28:10 ]
もしかしてスレ違いかもしれませんが…

エクセルビューアのウィンドウクラス名はなんですか?
どなたか教えてください(>_<)

298 名前:デフォルトの名無しさん [2008/04/09(水) 10:33:46 ]
>>297
エクセルビューアが何なのか知らないけど、それを持ってるなら
起動してspy++で見ればわかるよ。

299 名前:デフォルトの名無しさん [2008/04/09(水) 11:14:48 ]
>298
調べることができました!
ありがとうございます!

300 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:02:11 ]
>>183
WM_DROPFILESはPost側で確保してGet側で解放する仕様なので作ってPostMessageしたらそれで終わり
もちろん(まずないはずだが)PostMessageが失敗したときには自前でGlobalFreeすること

301 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:08:32 ]
>>300
>>187で既出
それとも二日間調べつづけて漸く結論を導き出せた>>184君か?w

302 名前:デフォルトの名無しさん [2008/04/09(水) 16:12:59 ]
お前らそんなに>>184を責めるなよ!
どうせお前らも同じく無知なんだから

303 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:22:08 ]
×お前ら
○俺ら



304 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:24:26 ]
×俺ら
○俺

305 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:45:07 ]
>>304だけ無知って事でいいじゃん

306 名前:デフォルトの名無しさん [2008/04/09(水) 17:30:44 ]
>>184=>>302=>>305=無知だろJK

307 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:38:25 ]
ビットマップの特定の色を透過させるにはどうしたらいいでしょうか。

308 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:40:50 ]
TransparentBlt

309 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:44:51 ]
TransparentBlt

310 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:45:29 ]
>>304>>306
わかりやすすぎwwwwwwwwwwwwww

311 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:56:39 ]
最も最近作られた子ウィンドウを取得する方法ってないかな?

312 名前:311 mailto:sage [2008/04/09(水) 17:57:03 ]
「最も最近」って何だよ俺 orz

313 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:03:30 ]
×俺
○俺ら



314 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:09:14 ]
×俺ら
○お前ら

315 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:17:56 ]
ダイゴロー

316 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:20:39 ]
GetYoungestChildWindow

317 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:21:47 ]
>>316
できました!
ありがとうございます。

318 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:47:26 ]
どういたしまして

319 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:52:35 ]
Youngestって何だよw
せめてLatestぐらいにしとけ

320 名前:311 mailto:sage [2008/04/09(水) 19:03:44 ]
本当お前ら面白いなw
諦めたほうがよさそうだ。別の方法を探ります

321 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:10:25 ]
もう春休みは終わったはずなのに何というカオス・・・

322 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:31:12 ]
I am NEET!

323 名前:デフォルトの名無しさん [2008/04/09(水) 19:41:16 ]
>>320
GetWindowLongで我慢しろブタ野郎!



324 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:45:52 ]
は?

325 名前:デフォルトの名無しさん [2008/04/09(水) 20:11:42 ]
WM_PAINT メッセージを発行する Win32APIって何だったでしょうか?

326 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:13:23 ]
UpdateWindow

327 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:13:51 ]
>>326
thx

328 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:14:51 ]
InvalidateRectじゃなくて?

329 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:17:53 ]
漏れは GetMessage だと思うんだ

330 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:18:17 ]
Win32APIなんぞ久しいが
InvalidateRectは領域を無効化することで再描画させると記憶してる

331 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:27:21 ]
GetMessageじゃなくSendMessageとかPostMessageではなくて?

332 名前:デフォルトの名無しさん [2008/04/09(水) 20:29:22 ]
知らないならレスしないでください

333 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:47:59 ]
議題:なぜこのスレはゆとりほいほいになったのか



334 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:57:44 ]
知らないならレスしないでください
という言葉を無敵だと思ってるから

335 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:17:08 ]
GetMessageを呼びだしたスレッドに属するウィンドウに無効領域があり、
他にウィンドウメッセージが無ければ、その時点でWM_PAINTが生成される。

336 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:23:07 ]
>>331
ウィンドウメッセージのキューは単純なFIFOではないのよ。

わかりやすいのはWM_TIMERかな。
たとえば100msec毎にWM_TIMERが送られてくるようにして、
わざとメッセージポンプを数秒間止めてみて、再開後にどうなるのか、
ちょろっとプログラムかいて試してみ。

WM_PAINTも同様。

337 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:56:37 ]
>>311
なかなか面白そうな質問なんで調べてみたがなかなか無いな。
フック使えば出来るが個人的にフック嫌いだしなー。

338 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:21:59 ]
>>337
意外だな
このスレはフック大好き人間だらけなのに

ま、解決策をすぐフックに持っていく短絡思考な回答者は嫌いだが

339 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:29:50 ]
フック大好きなのは質問者という事実

340 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:39:20 ]
好き好きフック船長!!!

341 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:57:24 ]
質問者以外もフック大好きだろ
>>48とか>>80-81とか

個人的に次々々バージョンぐらいのWindowsからSetWindowsHookEx/CreateRemoteThreadとかは
Vistaの64-bitドライバみたいに未署名モジュールは使えなくすればいいと思っていたりする

342 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:02:48 ]
>>341
そんなことになったら、自作ヘボソフト介助ツールが使えなくなるじゃないか!
世の中にはいいソフトなのにフロントエンドが腐ってる物が多いんだぞ

343 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:12:41 ]
>>338
Winのフックってシステム的に美しくないじゃん。

フックを使ったら負けだと思ってる (大学生 21歳 嘘)



344 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:20:54 ]
フックでウインドーズをファックするわけよ。

345 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:37:16 ]
>>342
他プロセスに簡単に介入できる現状の方が問題だろ

どうしても自作ソフトでフックが必要なら、デジタル署名を取得するか
自分しか使わないならレジストリ設定や起動オプションなんかで無効化してしまうか
仮想PCで飼えばいい訳でだな

それに次々々バージョンなんてあと10年ぐらい先の話だろう

346 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:42:22 ]
case WM_NOTIFY:
lpSChange = (LPNMSELCHANGE)lp;
if((lpSChange->nmhdr).hwndFrom != hMon ||
(lpSChange->nmhdr).code != MCN_SELCHANGE)
return FALSE;
MonthCal_GetCurSel(hMon, &st);
wsprintf(szBuf, _T("%d年 %02d月 %02d日の予定"), st.wYear, st.wMonth, st.wDay);
SetWindowText(hStatic, szBuf);
wsprintf(szApp, _T("%d-%02d-%02d"), st.wYear ,st.wMonth, st.wDay);
MyShowPlan(hEdit, szApp);
SetFocus(hEdit[0]);
}
return FALSE;
}

猫でもわかるの本で勉強しているんですが
(lpSChange->nmhdr).hwndFrom

この->の意味がいまいち良くわからないんです。
検索しても解説しているのが見つからないので質問させていただきました。
誰か御教授頂けると嬉しいです(><)

347 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:46:01 ]
>>346
まずはその本を窓から投げ捨てた上で油をかけて燃やせ。
話はそれからだ。

あとスレ違い。
operator ->()は構造体へのポインタから構造体のメンバにアクセスするための演算子。

348 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:50:22 ]
>>347
放火犯で捕まるのは嫌です

349 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:50:48 ]
不法投棄の上に放火

350 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 11:00:09 ]
>>347
バージョンの誤差さえ何とかすれば結構いい本だと思ってたんですが、、ダメなんでしょうか(´・ω・`)
->のこと大体把握できました、ありがとうございます。
そしてスレ違いすいませんでした。

351 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:38:30 ]
>>350
ちゃんと理解していなくて、なんとなく動いているプログラムを量産する、
いないほうがマシなプログラマを育成するタイプの本だな。

もちろん、作者の人の行為自体は馬鹿にできないが。

352 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:40:07 ]
APIリファレンスとしてはいいと思う

353 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:47:20 ]
英語版MSDNでも読めばいいじゃない



354 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:50:11 ]
いや、馬鹿にできるよ。
猫のせいでどれだけ糞コードが世に出回ったと思っているんだ。

355 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:51:46 ]
猫はやりたいことに必要なAPIとかググるキーワードを見つけるために
使うんだったら分からなくもない
コード自体はどうしようもないほどに糞

356 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:32:25 ]
てか->はC言語の問題でAPI使ってどうこう以前の問題

357 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:33:34 ]
10年ぐらい前はGoogleなんて無かったしWin32APIの日本語での情報も少なかったから多少は役に立ったとかそんなとこだろ
今となっては正直無くてもいいと思う

まあ最近は適当に検索すると.NETばっかり出てきて鬱になるがw

358 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:54:45 ]
この辺で話題を変えておこうか

359 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:58:50 ]
XPスタイルのタブコントロール上のトラックバーコントロールの背景色をきちんと描画するにはどうしたらいいんでしょうか?
EnableThemeDialogTextureを適用したダイアログに乗せる方法だと、
そもそもダイアログの背景にグラデーションがかからないのでダメでした。
トラックバーコントロールのWM_CTLCOLORSTATICで、DrawThemeParentBackgroundを呼び出す方法だと。
ウインドウが隠れてから復帰するときにトラックバーコントロールが消えてしまいダメでした。

もう完全に詰まってしまった感じなのですが、トラックバーコントロールを独自実装する以外で何か良い方法はないでしょうか?

360 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:12:37 ]
DrawThemeParentBackgroundを呼び出す方法で、
ウインドウから隠れて復帰するときだけデフォルトウインドウプロシージャを呼び出すようにすれば、
一応きちんと描画されるのですが、判定が難しく、あまり確実な方法ではないので、他の方法はないでしょうか。

361 名前:359-360 mailto:sage [2008/04/10(木) 16:23:32 ]
激しく泥臭い方法だけど一応できたっぽいかもしれません。

>>360の方法をどうにか詰めて、
WM_CTLCOLORSTATICが呼ばれる前にWM_ERASEBKGNDが1回呼ばれた時は、
タスク切り替えでウインドウが隠れてから復帰なので、
このときにデフォルトウインドウプロシージャを呼び出さないと、
トラックバーコントロールが消えてしまうので、
デフォルトウインドウプロシージャを呼び出す。

WM_CTLCOLORSTATICが呼ばれる前にWM_ERASEBKGNDが2回呼ばれた時は、
タスクの最小化から復帰したときで、
このときはDrawThemeParentBackgroundを呼び出さないと、
背景がおかしくなるのでDrawThemeParentBackgroundを呼び出す。

としたら、どうにかできました。
ただ、このやり方はあまりにも泥臭く、不確実な感じがするので、
引き続き、他の方法がありましたらよろしくお願いします。

362 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:24:22 ]
カスタムドローで全部描いちゃえ

363 名前:デフォルトの名無しさん [2008/04/10(木) 18:30:36 ]
いやオナニードローだ!



364 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:39:14 ]
_CrtDumpMemoryLeaks関数などを使用してメモリリークをチェックしているのですが、
WinMain関数より前で確保されたメモリ領域が解放されない現象が発生しています。
自分で用意しているグローバル変数のコンストラクタ内では
メモリ確保に絡む処理は行なっていません(いないはずです)。
このメモリリークがどこで発生しているか調べる方法はないでしょうか?


365 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:43:23 ]
_CrtSetBreakAllocとかあったはず。
APIじゃないけどね

366 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:47:06 ]
msvcrt.dllがKnownDLLsだから理論上はCランタイム関数もWin32APIということになる

367 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:49:54 ]
>>364
それはVCの話であって、Win32APIの話ではないよ。

> WinMain関数より前で確保されたメモリ領域が解放されない

_CrtDumpMemoryLeaksが指摘してくる、ということ?

メモリが解放されなくて困っているのでなければ、
WinMain関数に入ってすぐの時点で、
_CrtMemCheckpoint を使ってスナップショットをとり、
WinMain関数からreturnする前に自分で、
_CrtMemDifferenceや_CrtMemDumpStatisticsを
呼んで、そのスナップショットとの差分をチェックしよう。


368 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:55:26 ]
>>365
すいませんWin32でしか使えないというようなことが書いてあったので
ここで質問してしまいました。

その関数は使用してみたのですがWinMain関数の先頭で呼んでも
ブレークしてくれず、確保番号も若かったので
WinMain関数より前に確保されたメモリ領域なのではないかと推測しました。
何よりも先にその関数を呼び出すようなことは可能なのでしょうか?


369 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:57:49 ]
>>369
>_CrtDumpMemoryLeaksが指摘してくる、ということ?
そうです。

その方法を試してみます。

370 名前:364 368 mailto:sage [2008/04/10(木) 18:58:58 ]
すいませんアンカーミスです。
×>>369
>>367


371 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 19:28:06 ]
ややすれ違いですが詳しい人が多いので質問させてください。
いわゆるIEコンポを利用しているプログラムのIEサーバウィンドウが
実際にアクセスしているURLを調べるにはどうすればいいでしょうか?
ウェブ検索してみるとSPY++で調べたと思われる記述を見つけましたが
あれこれためしてみても私にはその方法がわかりませんでした。
表示内容とプロセスが掴んでいるリソースを見れば想像つくものも
ありますが、今回の件ではよくわからなくて困っています。

※すれ違いが許容範囲を超えてるなら誘導頂けると助かります。

372 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 20:53:58 ]
>>371
一時的に見たいだけなら、これが一番簡単だと思う。
・ローカルプロクシサーバを建てて、IEのプロクシに設定。
・アクセス後、プロクシのログを見る。

373 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:21:28 ]
>>372
同じようなもんだが、Fiddlerを愛用してる。
一応MS製だし、簡単なので。



374 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:37:06 ]
>>371
KB249232で出来ないか?

375 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:46:07 ]
>>371
ネットワークのパケットをモニタするのがいいんじゃないの
EtherealとかMicrosoft Network Monitorとかいろいろある


376 名前:デフォルトの名無しさん [2008/04/10(木) 22:09:04 ]
>>371
トップレベルウィンドウ→子ウィンドウとクラス名が"Internet Explorer_Server"のものを探してハンドルゲット
見つかったウィンドウにWM_HTML_GETOBJECTを投げてオブジェクトを得る
ObjectFromLresultを使ってIHTMLDocument2のインターフェイスポインタゲット
IServiceProviderのインターフェイスをクエリしてQueryServiceでIWebbrowserAppとIWebbrowser2を指定してIWebbrowser2のインターフェイスポインタゲット
get_LocationURLでURLを得る

どう?w

377 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:15:08 ]
>>376
部外者だがなかなか使えそうな情報サンクス

378 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:27:26 ]
おまいらくらいハイレベルな質問するにはどのくらい勉強すれば良いんでつか。

379 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:37:48 ]
>>377
あ、HTMLDocument2::parentWindowでIHTMLWindow2取得してからIServiceProviderクエリだったかも

380 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:37:51 ]
>>378
平均的な大学受験勉強ぐらい

381 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:38:41 ]
その答えは風に吹かれているのさ

382 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:38:43 ]
>>379
そのまんま使うほど馬鹿じゃないよb

383 名前:371 mailto:sage [2008/04/11(金) 04:18:24 ]
多くのアドバイスありがとうございます。
URLとかきましたがコンテンツの元がインターネットなのか
PEのリソースなのか、レジストリなのかローカルファイルなのか
コードに埋め込みなのかはたまたそれ以外なのかわかりにくいのです。
まだ良く見てないのですが後で読み直してけんきゅうしてみます。
ありがとうございました。



384 名前:371 mailto:sage [2008/04/11(金) 05:11:49 ]
一通り読ませて貰ってそれを参考にウェブ検索したところ参考になるページがたくさん見つかりました。
早速なにかスクリプトでも書こうと思ったのですが、↓のページのVBサンプルのバイナリがあっさり
そのまま使えました。助かりました。
www.google.com/search?btnI=I%27m%2BFeeling%2BLucky&q=Me.Text+=+%22GetHtmlObject%22

385 名前:364 mailto:sage [2008/04/11(金) 11:03:50 ]
自己解決しました。

new演算子をオーバーロードして、そこで_CrtSetBreakAlloc関数を呼ぶことで
確認出来るようになりました。

問題の確保場所はグローバル変数のstd::mapのコンストラクタ内でした。
とりあえずグローバル変数をやめることで対処しました。

スレ違い失礼しました。

386 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 11:06:31 ]
↓ズコーのAA

387 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:03:54 ]
>>385
他人事だからどうでもいいけど、その行動は馬鹿にされるから
匿名じゃないところでは人に話さない方がいいよ

388 名前:デフォルトの名無しさん [2008/04/11(金) 12:33:55 ]
親ウィンドウのメニューの非表示が押されたら
モードレスダイアログを非表示にしたいのですが、
ShowWindowを使っても出来ないのですが…
ちなみに
親のWM_INITDIALOGでモードレスダイアログを表示しています。

389 名前:デフォルトの名無しさん [2008/04/11(金) 12:45:38 ]
ひゃっふwwwww
自己解決wwwwww

390 名前:デフォルトの名無しさん [2008/04/11(金) 13:14:45 ]
事故解決しますた

391 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:53:19 ]
一つのウィンドウを5等分して5個のクラスが担当領域を描画をそれぞれ行おうと思うのですが

クラス内部にstaticなメモリHDCを用意して共有し、最後に表HDCに転送する形で描画しようと考えてるのですが
この場合、描画処理は排他的にした方が用意のでしょうか?

392 名前:デフォルトの名無しさん [2008/04/11(金) 18:54:21 ]
用意くはないかもな

393 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:55:36 ]
>>391ですが日本語でOKすぎるorz
何とか察してください




394 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:59:24 ]
>>391
当然だろ?

395 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:21:06 ]
387のどのへんが恥ずかしいのか、よくわからないので
だれかおじさんにこっそり教えてくれないか

396 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:22:01 ]
387→385です orz

397 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:23:06 ]
Hookについて質問です.

ruffnex.oc.to/kenji/text/api_hook/
このサイトをベースに勉強しました.
その過程で下記の2点の疑問が出てきました.

1.
SetWindowsHookExは, あくまでメッセージキューを持ったスレッドのみに
関連付けられるのですよね?

2.
上記サイトでは, LoadLibraryとGetProcAddressを常にフックしていますが,
アプリケーションの組み方によっては有効でない気がします.
というのは, ウィンドウを表示させるようなアプリケーションを作るとして,
メッセージループに入る前にInitial処理としてLoadLibrary及びGetProcAddress等を
行うことが多いかと思います.
となると, Initial処理の二つの関数はフックされずに正常なアドレスを返してしまいますよね.
この問題って通常どうやって対処するものなのですか?
それとも, 上記の様なことを行うのは珍しいとして, 気にしないものですか?

398 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:41:08 ]
2。
だいたいのプロセスでフックが効けばいいんすよ! ってわけにいかないのなら気になるでしょ?

判りやすいのが親プロセスのCreateProcess系をフックしてエントリーポイント到達以前にDllをロードさせる方法
 エントリーポイントを自己JMPに書き換えてループしてる隙にスレッド立てて読ませる
 エントリーポイントをJMPに書き換えてJMP先で読ませる
 IATを書き換えてローダにロードさせる
後者2つはそれぞれgdi++/detoursで実装が読める



399 名前:397 mailto:sage [2008/04/11(金) 21:10:23 ]
>>398さん
不勉強な故, 見当違いな質問だったら申し訳ないです。

"親プロセスのCreateProcess系をフックしてエントリーポイント到達以前にDllをロードさせる"
とありますが, これはHookプロセスをどのプロセスよりも前に起動する必要がある
ということになりますか?

また, SetWindowsHookExを使ってしまうとメッセージキューでのDLLロードになってしまうので, 使わない方がベターですか?

400 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 21:37:33 ]
なにがしたいのかわからないし、どのプロセスよりも前に、とかベターですかといわれても困る
方法と特徴を調べて目的に合う方法をとればいいんじゃない?

全プロセスが対象! ってのならユーザモードの仕事じゃないとは思う

401 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:02:38 ]
>>400
すみません. 抽象的な話で進めようとしていました...

目的は,
デバッグとして, 自作アプリケーション(不特定多数)からイーサネットに流しているデータを読む.
ただし, 極力, 自作アプリケーションはHookを意識したくない.
(LoadLibrary, GetProcAddressを禁止する等を行いたくない)
というものです.

Hookプロセスは常駐型にしようと思っていますが,
被Hookプロセスはメッセージキューを必ずしも持つとは限りません.
そこで, SetWindowsHookExは使えないと考え, 別の方法を探しました.
japan.internet.com/developer/20050830/26.html#section_2
上記アドレスの方法をやってみたのですが, プロセスIDから引っ掛けて
フックを行うようになるので,
この方法ではLoadLibrary/GetProcAddress系がダメだと考えて手詰まり状態になりました...

402 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:21:22 ]
>>401
自作アプリが対象なら、外部からインジェクションしてフックするのではなく、
それぞれの自作アプリからフックDLLを明示的にLoadLibraryしなよ。

403 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:26:25 ]
フックの質問する人って、どうして不適切な手段を選ぶんだろうな。



404 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:27:16 ]
フックならジェイソン尾妻に教わるといい

405 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:57:42 ]
またフックか
検索すりゃ腐るほどでてくるだろ

406 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:02:47 ]
>>402
アプリケーションがフックDLLを取り込むという意識が入り込んでいる為, その手法だと目的に反してしまいます...
また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為,
それらの関数を禁止しなければなりません.

デバッグの時のみリンクを行ってHookさせる手法がシンプルだとは思いますが, 極力違う方法も検討したいのです.
(勿論, 他の方法を検討した結果, その手法がベストであればその手法を選択すると思います.)

407 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:06:48 ]
>>406

#ifdef _DEBUG
LoadLibrary(_T("mydebughook.dll"));
#endif

こんなのをWinMainの先頭に入れとけばいいじゃないか

408 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:29:58 ]
> また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為
自作アプリなら "GetProcAddressでアドレスを取得しているか" なんて分かるだろ
で、必要に応じてGetProcAddressもフックするか、関数の先頭をJMP命令に書き換える方法を使えばいい

> 被Hookプロセスはメッセージキューを必ずしも持つとは限りません
これも自作アプリなら分かるだろ
スレッドを作った時やコンソールアプリはPeekMessage(NULL, NULL, ...)でもしてキューを作ればいい


なんか自作アプリと言ってる割には情報が不確か過ぎるが、本当に自作アプリをフックしたいのか?

409 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:06:26 ]
>>395
グローバル変数等静的なオブジェクトのコンストラクタ内など、
WinMain() や main() の実行よりも前に確保されたメモリは、main()関数終了前など早めの段階では
未だ解放されていないため、その辺で_CrtDumpMemoryLeaks()が呼び出されるとリ―クとして報告されてしまう。
実際には「まだ」解放されていないだけでリークではないのだけれども。

MFCを使っていないなら、_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF )とすれば、
諸々完了した正しいタイミングで自動的に_CrtDumpMemoryLeaks()を呼び出してリークのチェックを行ってくれる。
MFC は ExitInstance あたりで勝手に_CrtDumpMemoryLeaks()を呼びだすので、MFCを使用したコードの倍には
こうしても正しい結果を得られない。

こんな説明ではどうだろう。

410 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:09:08 ]
>>401
確か起動する全てのプロセスに指定したdllをロードさせるためのレジストリキーがあったと思う。
なんていったっけっかな・・・

411 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:21:42 ]
AppInit_DLLs? 
これは全てのプロセスじゃなくてuser32.dllをロードするプロセスのみだが。

412 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:23:42 ]
そっか。ありがと。
んではダメだなぁ。

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