Win32API質問箱 Build ..
[2ch|▼Menu]
263:デフォルトの名無しさん
07/06/23 21:17:12
>>260
FSCTL_SET_COMPRESSION しらべれ

264:デフォルトの名無しさん
07/06/24 12:10:05
ねーねー
ほかのプロセスが開いてロックしているファイルを
横から開くにはどうすればいいのん?

265:デフォルトの名無しさん
07/06/24 12:10:58
それ可能なのか?そんなことできるならロックの意味がないような・・

266:デフォルトの名無しさん
07/06/24 12:14:25
プロセスを終了させる

267:デフォルトの名無しさん
07/06/24 12:20:55
リードだけなら出来たりしないのかな?
試しにエディタで開いてみたら
書き込めませんよーってエラー出たけど開くのだけは出来たよ

268:デフォルトの名無しさん
07/06/24 12:26:45
そのプロセスが FILE_SHARE_READ でファイルを開いてたんだろ。
0 だと読み取りも書きこみも禁止される。

269:デフォルトの名無しさん
07/06/24 12:42:07
つかCreateFileの引数の解説読んでれば想像付くけどな

270:デフォルトの名無しさん
07/06/24 13:09:39
それようのモードがあったのか
ありがと^^

271:デフォルトの名無しさん
07/06/24 15:05:41
ちょい質問。

Win2000、XPで Windows+M押下時と違って
Windows+Dを押した時何かのフラグが立ったみたいで
なんとかforeground();関数で
ウィンドウを最前面にもってこれないんだけど
方法わかる方いたら教えてください。。

よろしくです。

272:デフォルトの名無しさん
07/06/24 16:04:38
せっかくしまったのに余計なことをしないでください。

273:デフォルトの名無しさん
07/06/24 18:15:36
ウィンドウズ乙

274:デフォルトの名無しさん
07/06/24 18:23:40
WinXPにおけるメモリマップドファイルについて質問なのですが、

・HDDのファイルがメモリに複写されているわけではなく、あくまで仮想的なアドレスをファイルに割り振っているだけ。
 よって、メモリにマッピングした直後はメモリはそれほど消費しない。

・マッピングされたファイルを書き換えた情報は一端メモリに蓄積され、マッピング終了時にHDDのファイルへ反映される。
 なので、マッピングされたファイルにデータを書き込めば書き込むほどメモリの使用量が増えていく。

という解釈であっているのでしょうか?

275:デフォルトの名無しさん
07/06/24 19:24:30
読み込むだけでも消費した気がする

276:デフォルトの名無しさん
07/06/24 19:39:01
>>274
基本的にはそんな理解でいいと思う
細かい動作はページングファイルと同じように考えればいいはず
メモリが足りなくなってくればHDDへ書き出される(読み取りしか行っていないなら捨てられる)
メモリが余ってくれば読み込まれてゆく

277:デフォルトの名無しさん
07/06/24 20:46:24
自前のコンソール画面を作りたいのですが、
APIで簡単に作る方法ってありますか?

278:デフォルトの名無しさん
07/06/24 20:49:39
AllocConsoleじゃなくて自前で一から作りたいって事?

279:デフォルトの名無しさん
07/06/24 20:54:58
eclipseのコンソール見たいのが作りたいです

280:デフォルトの名無しさん
07/06/24 20:57:27
エディットコントロールにでも流せばいいじゃない

281:デフォルトの名無しさん
07/06/24 21:09:19
WM_SETTEXTですか?

282:デフォルトの名無しさん
07/06/24 21:32:17
エディットコントロールの追記なら最後尾にカーソル移動してEM_REPLACESELを投げる
背景を変えたければ親でWM_CTLCOLOREDITを受ける

283:デフォルトの名無しさん
07/06/24 21:36:59
printfでエディットコントロールに書き込めるようにはできませんか?

284:デフォルトの名無しさん
07/06/24 21:40:06
stdoutを受け取って回送させるか、バッファに入れてから再度送りつけるか好きなようにやれ。

285:デフォルトの名無しさん
07/06/24 21:42:19
できますがスレ違いですね。
汎用化でも目指しているんですか?
それともコーディング能力不足ですか。

286:デフォルトの名無しさん
07/06/24 22:07:41
printf使いたいってのはコーディングする側の問題だろ
sprintfした文字列をエディットコントロールに追加すればいいじゃん

287:デフォルトの名無しさん
07/06/24 22:15:44
printfの出力先を変えられればコンソール・ウィンドウ両対応が簡単かなと思ったんですが
やっぱりそこまでは無理ですか…

288:デフォルトの名無しさん
07/06/24 22:30:17
だから無理じゃないってば
API以前に言語の勉強をしなさい。

289:デフォルトの名無しさん
07/06/24 22:35:08
その(頭の)現状では無理だな

290:デフォルトの名無しさん
07/06/24 22:49:46
>>288
stdoutをAllocConsole使う時見たく変えるってことですか?

何を指定すればエディットに流せるか分からないのはやっぱ知識不足なのかorz

291:デフォルトの名無しさん
07/06/24 22:56:41
もしかしてEM_STREAMOUTが関係ありですか?

292:デフォルトの名無しさん
07/06/24 23:06:08
Windowsプログラミングなんてバッドノウハウの数が技量に直結するから
「これかっ?」っと思ったことは片っ端から試してみるのも自分のためになると思うぜ

293:デフォルトの名無しさん
07/06/24 23:19:11
と言ってもfreopen以外に変える方法知らないんですけど…

294:デフォルトの名無しさん
07/06/24 23:21:37
メモリマップファイルは使いにくいね。

1つは、
SetProcessWorkingSetSize()で最大ワーキングセットサイズを設定しても、多量にメモリを食って、他のプロセスに優しくない。
かといって、SetProcessWorkingSetSize(,-1,-1)を頻繁に呼ぶのも美しくなく、
かといって、リンカに/WS:AGGRESSIVE付けても、なんだかなぁ、と。

もう1つは、
いまどきのハードディスクはシーケンシャルにアクセスしないと速度が出ないため、
メモリマップして任意にメモリアクセスすると、ランダムアクセスになってしまうこと。
結局、シーケンシャルスキャンのヒント付けて、各ページの先頭を触って、
予めメモリに読みこんでおくという作業が必要になってしまう。


295:デフォルトの名無しさん
07/06/24 23:22:26
>>293
知らなければ調べろよ。

296:デフォルトの名無しさん
07/06/24 23:31:46
今時メモリの消費量とかHDDの消費量を考えるのは不毛な気がする

リークで不安定になるとかだったら分かるが

297:デフォルトの名無しさん
07/06/24 23:35:49
勘違いしてる人がもう一人

298:デフォルトの名無しさん
07/06/24 23:44:15
>>294
とりあえずそのあたりを調べてみます

299:デフォルトの名無しさん
07/06/24 23:51:42
ぐぐっても6件…
MSDN引くか…


俺のチラ裏にしちゃってもいいけどAPI一つでできることならそれだけ教えてくれるとありがたい

300:デフォルトの名無しさん
07/06/24 23:55:11
誰お前

301:デフォルトの名無しさん
07/06/25 00:02:02
SetStdHandleか!

302:デフォルトの名無しさん
07/06/25 00:57:11
>>299
ここは、お前のための、チャット会議室じゃないんだぞ。


303:デフォルトの名無しさん
07/06/25 01:04:56
>>296
> 今時メモリの消費量とかHDDの消費量を考えるのは不毛な気がする

そう思っていた時期も(AA略

パフォーマンスに無頓着なプログラムは、ハードウェアがどんどん速くなっても、その恩恵を受けられないことが多い。
というのも、ハードウェアの速くならない部分の性能に依存してるから。



304:デフォルトの名無しさん
07/06/25 05:57:13
MSDNにVistaのAPIが続々追加されてる
ほとんどVista専用で邪魔だ
言語フィルタみたいにOSでフィルタリングしてくれないかな

305:デフォルトの名無しさん
07/06/25 05:57:59
Vista以前のOSにしがみついてる奴らをフィルタリングすればいいんじゃね?

306:デフォルトの名無しさん
07/06/25 07:15:15
そんな子としたら儲からない

307:デフォルトの名無しさん
07/06/25 08:27:20
SetWindowsHookExでとれるHHOOKをGetWindowsHookExみたいなのでとれないですか。
ThreadIdから自分にかけられているHOOKとか人にかかっているHOOKとかを知りたいです。

308:デフォルトの名無しさん
07/06/25 08:38:26
SetWindowssHookExをAPI-Hookしろ

309:デフォルトの名無しさん
07/06/25 09:17:51
お前ら、フック大好きなんだな。



310:デフォルトの名無しさん
07/06/25 11:00:23
彼女フック出来ないからAPIフックして憂さ晴らしてると思われ。

311:デフォルトの名無しさん
07/06/25 11:50:00
>>310
彼女とするのはファックだろ

312:デフォルトの名無しさん
07/06/25 12:49:05
>>311
鼻フックの間違いじゃね?

313:デフォルトの名無しさん
07/06/25 12:53:51
何この流れ。これが月曜の流れか

314:229
07/06/25 16:40:07
229です。
ちなみに240は僕じゃありませんがそれはさておき。

ご意見参考になりました、ありがとうございます。
グローバルフックでWH_MOUSEとWH_KEYBOARDを定期的にチェックし、
システムタイマを取得して更新するみたいな感じですかね。

OSがスクリーンセーバを起動するのには同様の処理をしてるのかな。
それに使ってる「最終操作時刻」みたいのがどっかから取得できれば、
グローバルフック使わなくて済むんですが。
無いかなあ。。。

315:デフォルトの名無しさん
07/06/25 16:52:10
だから「最終操作時刻」を提供する側になれ
それとは別に、試しにスクリーンセーバー作ってみ

316:229
07/06/25 16:57:01
>>315
なんか勝手に初心者扱いされてますが、システムフックを書こうと思えば書けますよ。
ただ、OSが知ってるはずの「最終操作時刻」をとる方法、
もしくは無操作タイムアウトイベントみたいのを取得する方法が無かろうかと思って
最初に書いたようなプリミティヴな質問をしたわけです。

317:デフォルトの名無しさん
07/06/25 16:57:48
>>314
GetLastInputInfo

318:デフォルトの名無しさん
07/06/25 17:09:48
>>316
初心者ではないのなら、
最初から適切な質問のしかたをしろよ!


319:デフォルトの名無しさん
07/06/25 17:10:28
相変わらずノイズの多いスレだな。
初心者は回答しなくていいんだぞ。

320:デフォルトの名無しさん
07/06/25 17:15:50
ていうかさ、MSDNライブラリ(またはPlatformSDK)のヘルプ見てから質問してるんか?

ちょっと古い版で恐縮だが、
Platform SDKドキュメント
→User Interface Services
→Windows User Interface
→User Input
→Keyboard Input
→Keyboard Input Reference
→Keyboard Input Functions
→GetLastInputInfo
ここまで、迷うところは、ないぞ。


321:デフォルトの名無しさん
07/06/25 17:17:01
途中で俺が229の振りしてなごませたのに
やっぱりこうなったか
まさかアッパーなんて専門用語があるとは思わなかったがw

322:229
07/06/25 17:18:22
>>317
>>320

探してたのはそれです。僕が初心者でしたすいませんでした。
本当にありがとうございます。

323:デフォルトの名無しさん
07/06/25 17:35:02
これにて一件落着めでたしめでたし。
なんか逆転裁判おもいだした

324:デフォルトの名無しさん
07/06/25 17:37:13
アッパーワロタ

325:デフォルトの名無しさん
07/06/25 21:18:16
>>316システムフックなんか書けて当たり前
>>322初心者なんじゃんw

326:デフォルトの名無しさん
07/06/25 22:25:16
鬼の首を取ったかの様に

327:デフォルトの名無しさん
07/06/25 23:34:54
しかしおまえら、
ママンとフックが好きだなw

328:デフォルトの名無しさん
07/06/25 23:39:39
初歩的な質問させてください。
クライアント領域のサイズが640*480のウィンドウを作る場合、
WindowCreate関数の第6、第7引数を

640 + GetSystemMetrics(SM_CXDLGFRAME)*2
480 + GetSystemMetrics(SM_CYDLGFRAME)*2 + GetSystemMetrics(CYCAPTION)

とすればいいんですか?(メニューやステータスバーはないものとする)

というか、GetSystemMetricsの引数に
SM_CXBORDERをいれた場合とSM_CXEDGEを入れた場合とSM_CXDLGFRAMEを入れた場合で
ウィンドウのどの部分のサイズを指しているのかよくわかりません。
MSDNみても違いがわかりません。教えてください・・・

329:デフォルトの名無しさん
07/06/25 23:41:43
そういう用途では、AdjustWindowRectを使え、と昔
どっかで誰かが言ってたのを聞いた希ガス

330:デフォルトの名無しさん
07/06/26 00:19:57
状況によってサイズが異なるので、適正なサイズになるまでリサイズを繰り返すしかない。
一発で計算するのは無理。

331:デフォルトの名無しさん
07/06/26 00:21:43
いや普通にAdjustWindowRect使えよ

332:デフォルトの名無しさん
07/06/26 00:36:14
AdjustWindowRectはメニューが2段になると縦のサイズが
合わなくなるが、縦を調節し直せば無問題。

333:デフォルトの名無しさん
07/06/26 00:37:09
AdjustWindowRectを使っても、メニューバーの折り返しの分までは
面倒を見てくれないとかそういう話かな?

334:328
07/06/26 01:16:09
なるほど、素直にAdjustWindowRect使えばよかったんですね。
無理してGetSystemMetrics関数を使うのはやめます。

ありがとうございました。

335:デフォルトの名無しさん
07/06/26 01:43:07
>>322
調節し直す必要があるかどうか判断できないんとちゃう?
判断するにはメニューに表示される文字列が必要だけどAdjustWindowRectは
MENUの有無をBOOL型で渡すだけでHMENUを渡す設計になってない

336:デフォルトの名無しさん
07/06/26 03:28:12
>>335
AdjustWindowRectで使ったクライアント領域(A)
サイズ調整後にGetClientRectで取得したクライアント領域(B)

A>Bならメニューが複数行って判定できるんじゃね?
思いつきだが

337:307
07/06/26 08:21:21
>>308
回答、ありがとうございます。
SetWindowsHookExとSetWindowsHookにAPIHOOKをかける方法だとすでにフックがかけられている場合、みつけられないです。

338:デフォルトの名無しさん
07/06/26 09:39:02
フックを見つけてどうするの?

339:307
07/06/26 10:42:24
UnHookするとか情報を表示するとか。。。etc。
勉強中です。具体的には、dwThreadId = 0でフックをかけて、仕込んだHookDLLのアタッチで別のDLLを呼んで、
呼んだDLLにフックした処理を渡したりしてるんですが、
UnHookしてもなんでかデタッチが実行されておらず、デスクトップをフリーズみたいな状態にしてしまうんで、
Hookを仕掛けた状態とかを見たいとかいろいろです。
dwThreadIdに特定のスレッドを渡すとデタッチが起こるんで、調べる参考にしたいと。

340:デフォルトの名無しさん
07/06/26 12:24:25
グローバルフック登録時に
SetWindowHookEx完了時から帰り値のHHOOKを共有メモリに格納する一瞬の間に
コンテクストスイッチが発生しHHOOK格納前にフック関数が呼び出されるという可能性に対して
とういった対策が可能でしょうか
現在のPSDKのドキュメントだとCallNextHookExの第一引数は無視される仕様に変わったようなので気にしなくてもいいのでしょうか?

341:デフォルトの名無しさん
07/06/26 14:22:47
ハンドルからリストボックスなのかコンボボックスなのか
判断するには、、どうやるのですか?

342:デフォルトの名無しさん
07/06/26 14:27:38
GetClassName

343:デフォルトの名無しさん
07/06/26 14:46:01
>>340
Mutexで排他制御。


344:デフォルトの名無しさん
07/06/26 14:56:41
>>342
ありがとうございました。

345:デフォルトの名無しさん
07/06/26 16:20:24
>>340>>343
そのタイミングって排他制御する必要があるほどのものなのかね?

346:デフォルトの名無しさん
07/06/26 17:00:22
>>345みたいな馬鹿は迷惑だからプログラムを書くな。

347:デフォルトの名無しさん
07/06/26 17:57:00
>>340
第一引数が無視になってるとは知らなかった・・・
確かに
>>Windows NT/XP/2003: Ignored.
となってる。

ってことはNT系限定なら別に共有領域にハンドル置いといたりしなくてもいいのか?

348:デフォルトの名無しさん
07/06/26 18:08:52
>>345-346
「そんな事態は滅多に起こらないから無視していい」とかいうなら論外だが、実際MSの
ドキュメントやサンプルでもそのような排他制御を組み込んでいないから、「そのタイミ
ングでフック割り込みが発生することはない」という仕様になっているということは?

SetWindowsHookExでWH_CALLWNDPROCをインストールした次の行でSendMessage
してもフックは呼ばれるから、ほんとに一瞬しか待たないとは思うけど。

349:デフォルトの名無しさん
07/06/26 18:15:40
サンプルなんて手抜きに決まっているだろうに

350:デフォルトの名無しさん
07/06/26 18:25:05
じゃあ発生させてみろよm9(´Д`)プギャー

351:デフォルトの名無しさん
07/06/26 18:58:52
>>347
2000が抜けてるのが謎だな、どういう分類なんだろう

352:デフォルトの名無しさん
07/06/26 18:59:16
HHOOKを、無視されるCallNextHookExに渡すためだけなら
むーてっくす張るコストが限りなく無駄じゃあないの?

353:デフォルトの名無しさん
07/06/26 21:45:08
>>348
> SetWindowsHookExでWH_CALLWNDPROCをインストールした次の行でSendMessage
> してもフックは呼ばれる

それは当たり前だと思う。
SendMessageなんだから。

354:デフォルトの名無しさん
07/06/26 21:49:56
>>353
地味にワロタ

355:デフォルトの名無しさん
07/06/26 21:50:32
ところでさ、

SendNotifyMessage
URLリンク(msdn2.microsoft.com)
に、
WM_USERより下のメッセージを送るときはスタック上のポインタを渡すな
OSが引数のマーシャリングしてやるのは0〜WM_USERだけだぞ
というようなことが書いてあって、矛盾してるぞ! と思ったのだが・・・

WM_USERより下というのは、

0〜WM_USER-1
WM_USER〜0x7FFF
WM_APP〜0xBFFF
0xC000〜0xFFFF

という並びで書いたときの、下、っていう意味なんだな・・・orz

356:デフォルトの名無しさん
07/06/26 21:57:01
winsockを利用してチャットの様に通信するソフトを試したのですが
自分のPC内で通信は成功したのですが
ネットにでようとするとつながりません

プロバイダから割り当てられているのが
プライベートIPなので
WAN側のIPを指定してみましたが
これが問題でしょうか?
(ルータ等は使っていません)

ソースほぼここのサンプルまんまと考えてください
URLリンク(www.geekpage.jp)
よろしくお願いします

357:デフォルトの名無しさん
07/06/26 22:08:36
>>356
プログラム書く前にネットワークの勉強をしろ。
話はそれからだ。

358:デフォルトの名無しさん
07/06/26 22:27:31
>>356
ネットワークプログラミング相談室に来たら相手してもらえるかも

359:デフォルトの名無しさん
07/06/26 22:37:15
どっちかというと>>357

360:デフォルトの名無しさん
07/06/26 22:43:33
いまさら聞けないインターネット入門とかみましたが
SMTP,POPの仕組みとか広すぎてわけがわかりません><

361:デフォルトの名無しさん
07/06/26 22:45:42
>>360
結論だけ言ってしまうとグローバルIPが手に入らないと外部との通信は無理

362:デフォルトの名無しさん
07/06/26 22:56:55
やっぱりそうなんですか・・・orz
入門のとこ読んでるうちに
WAN側のIPはグローバルらしいのでいけるかもって思ったのですが

363:デフォルトの名無しさん
07/06/26 22:58:57
WAN側ってISPのIPだろ。つーかスレ違い

364:デフォルトの名無しさん
07/06/26 23:00:41
>>357
いやいや、日本語の勉強をしたほうがいいと思う。

> winsockを利用してチャットの様に通信するソフトを試したのですが

ソフト?
何か不安になる言い方。

> ソースほぼここのサンプルまんまと考えてください

ソースはほぼここのサンプルのまま
と言わないのは、
ソースはほぼここのサンプルのまま
ではないからなんだろうか。

もしや、他人が作ったソフトの話をしているのではあるまいな?

ちなみに、
サンプルから変えた場所に問題があることも考えうるので、
普通は、どこをどう変えたのか書くか、
短いのだから全部をコピペして示したほうがいいことが多い。

365:デフォルトの名無しさん
07/06/26 23:03:18
>>356
> 自分のPC内で通信は成功したのですが
> ネットにでようとするとつながりません

ネットって何だ。
インターネットのことか? なら、インターネットと書け。

切り分けとして、
同一PC上
同一LAN上
インターネット越し
の3段階があるわけで、
まずは同一LAN上を試したのかな、と。

366:デフォルトの名無しさん
07/06/26 23:04:42
>>356
> WAN側のIPを指定してみましたが

何の「WAN側のIP」なんだ?
通信する相手は、どこにいるんだ?

367:デフォルトの名無しさん
07/06/26 23:06:55
止めろお前らwwww

368:デフォルトの名無しさん
07/06/26 23:08:24
最後まで責任持つつもりで弄ってるのか

369:デフォルトの名無しさん
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
とか使ってパースしる!


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

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