トップページ⇒tech
1001コメント272KB

Win32API質問箱 Build64

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/04/02(水) 10:21:31
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

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

【前スレ】
Win32API質問箱 Build63
http://pc11.2ch.net/test/read.cgi/tech/1204600558/
0153デフォルトの名無しさん2008/04/06(日) 16:04:33
>>152
そしたら、CloseHandleは?
0154デフォルトの名無しさん2008/04/06(日) 18:39:45
Win32とかMFCって互換性に縛られすぎてて汚い
.NETFrameworkのクラスライブラリはVB6のソレを焼直した感があってこれまた中途半端


MSはもっと直感的で分かりやすく作れないものなの?
0155デフォルトの名無しさん2008/04/06(日) 18:41:13
1からクリーンに作って普及したものってあまり聞かない気がする。
0156デフォルトの名無しさん2008/04/06(日) 19:20:33
WPFはそこそこ
0157デフォルトの名無しさん2008/04/06(日) 19:43:22
>>153
どっちも CloseHandle でいいじゃないか
WINAPI と APIENTRY と CALLBACK が同じものだったりする感じで。
0158デフォルトの名無しさん2008/04/06(日) 20:29:48
PASCALは
0159デフォルトの名無しさん2008/04/06(日) 21:31:27
Vistaのソースコードゲットした
すげーでけーよw
0160デフォルトの名無しさん2008/04/06(日) 21:34:37
そういえばHalfLife2のソースどこいったっけ・・
0161デフォルトの名無しさん2008/04/06(日) 21:40:39
俺が持ってる
0162デフォルトの名無しさん2008/04/06(日) 21:42:20
俺も預かってやってる
0163デフォルトの名無しさん2008/04/06(日) 22:02:23
XPとVistaのソースコードを手に入れたので、試しにXPにAeroGlassを移植してみた俺が来ましたよ
0164デフォルトの名無しさん2008/04/06(日) 22:06:58
一人で移植できるような規模なのか
Microsoftは五年かかったのにな
0165デフォルトの名無しさん2008/04/06(日) 22:16:43
>>163ならVistaのDirectSound HALを復活させられるに違いない。
とりあえずEAX2.0までのエミュレーションコードも入れといてね。
0166デフォルトの名無しさん2008/04/06(日) 22:16:56
ぶっちゃけソースほしいわ
ReactOSとwineとカーネルデバッガから辿るのは結構しんどい
0167デフォルトの名無しさん2008/04/06(日) 22:46:56
デバッグシンボルを落としてきてdumpbin /disasmでリバースエンジニアリングすればいい
ぶっちゃけこれで十分
0168デフォルトの名無しさん2008/04/06(日) 23:22:15
フィルタドライバ作ったことあるひとがいれば教えて欲しいんだけど、
標準で定義されているハード情報取得するときのコントロールコード
をDeviceIoContorol()にわたして、そのときに返ってくる値を
フィルタドライバのなかでうその値に変換して戻せる?
0169デフォルトの名無しさん2008/04/06(日) 23:26:51
日本語でおk
0170デフォルトの名無しさん2008/04/06(日) 23:53:40
リバースエンジニアといえば
XP の CommandLineToArgvW は argv[argc] に NULL を格納しようとしてし忘れている感じがした記憶がある。
0171デフォルトの名無しさん2008/04/06(日) 23:59:00
>>170
それはきっと前世の記憶だ。さぁ、今すぐMSに行ってバージョンアップしてきなさい。
0172デフォルトの名無しさん2008/04/07(月) 00:02:54
>>170
2000のやつも忘れてた気がする
まあCランタイムの__argc/__targvを使うかUnderTheHoodのやつからパクってくればいいだろう

俺の場合リバースエンジニアして非公開APIを使いまくっていたソフトが
Vistaになって大多数の非公開APIが廃止されたせいでエラーが出て起動しなくなってて泣いた
0173デフォルトの名無しさん2008/04/07(月) 00:18:52
そういうことになるから非公開なんじゃないのかw
0174デフォルトの名無しさん2008/04/07(月) 00:23:46
>>146
即レスどうもありがとう!徹夜プログラムで確認中に寝落ちしますた。
でうまくいかなくてまだ確認中なんだけど、sendInputは、TranslateAccellalatorと違って、
送り先のコンポーネント(hWndなど)を指定することができない。これが原因と関係するのかなあと。
やっぱりWM_KEYDOWNのMSG構造体を作る当初方針でがんばるのが必要なのかな。
0175デフォルトの名無しさん2008/04/07(月) 00:31:28
>>173
だってさ、95〜XPまで問題なく使えたんだぜ? いきなり廃止するとは思わないじゃない
でも互換モードでXPSP2にすると普通に動くあたりがMSらしい
きっと古いMS製品も動かなかったのだろうw

シンボル取ってきて見てみたらAPIの前にRETIRED_とか付いててワロタ
0176デフォルトの名無しさん2008/04/07(月) 00:50:30
互換モードでやることの中には、古いファイルを使うなんてこともなかったっけ?
0177デフォルトの名無しさん2008/04/07(月) 00:52:33
>>175
洒落が聞いてるなw

Vistaにするにあたって、整理したのかねぇ。
で、古い非公開APIは別の所にまとめたとか。
0178デフォルトの名無しさん2008/04/07(月) 01:06:11
そういうスーパーハッカーみたいな技術はどうすればつくんですか
0179デフォルトの名無しさん2008/04/07(月) 01:08:44
DLLを覗けばいいんじゃね
0180デフォルトの名無しさん2008/04/07(月) 02:55:01
>>174
自己レスです。送り先指定がないので自アプリのトップへ送ると固定されてるのかなと思ってたけど
考えてみたら、XKeymacsみたく、外部アプリへキーボード入力を送り込むアプリもあるので、
そういう制限はないはず。なのでよくわからんが、Xkeymacsのソースを解析中。
そもそも単にキーボードカスタマイズの自由度を広げるためにやってたんだが、深みにはまりそうな予感してきたw
0181デフォルトの名無しさん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
0182デフォルトの名無しさん2008/04/07(月) 13:35:42
>>178
デペンデンシー・ウォーカー眺めてると楽しいよ。
0183デフォルトの名無しさん2008/04/07(月) 14:13:12
指定のウィンドウにWM_DROPFILESを投げるとき、
DROPFILES構造体のために確保した領域は
投げてからすぐ解放してしまっていいのでしょうか?
サンプルを探したら、しているものといないものがあって
判断に迷います。
0184デフォルトの名無しさん2008/04/07(月) 14:23:56
WM_DROPFILESそういう使い方をするもんではない

思うに、COMのOLED&Dと勘違いしてないか?
0185デフォルトの名無しさん2008/04/07(月) 14:45:10
>184
では、ウィンドウにファイルをドロップするには何のメッセージを使えばいいのでしょうか?
0186デフォルトの名無しさん2008/04/07(月) 14:54:03
>>183
別のプロセスに送るなら、すぐに解放しても構わないはず。
0187デフォルトの名無しさん2008/04/07(月) 14:57:19
>>184
そういう使い方"も"出来る訳だが
知らないのか?

>>183
対象アプリがDragFinishで開放するからいらないんじゃないの?
0188デフォルトの名無しさん2008/04/07(月) 15:03:09
知らないならレスしないでください
0189デフォルトの名無しさん2008/04/07(月) 15:06:17
知ったか厨うぜえ
勘違いしてるのはお前だろw
0190デフォルトの名無しさん2008/04/07(月) 15:08:19
誰が誰に言ってるのかも書いてクレヨン
0191デフォルトの名無しさん2008/04/07(月) 15:11:50
とにかく知らないクズはレスしないでくださいよ。うざい
0192デフォルトの名無しさん2008/04/07(月) 15:14:44
お前らレスアンカーぐらいつけろ
0193デフォルトの名無しさん2008/04/07(月) 15:20:28
>>184
0194デフォルトの名無しさん2008/04/07(月) 15:22:22
だから知らないならレスするなよクズ
0195デフォルトの名無しさん2008/04/07(月) 15:29:08
また荒れてきたなあ
とりあえず>>184は切腹
0196デフォルトの名無しさん2008/04/07(月) 15:29:44
>>184
0197デフォルトの名無しさん2008/04/07(月) 15:29:49
>>195
荒らすなよお前
0198デフォルトの名無しさん2008/04/07(月) 15:55:34
VistaでもWin16アプリって動くの?
0199デフォルトの名無しさん2008/04/07(月) 15:58:41
>>お前らへ
>>121
0200デフォルトの名無しさん2008/04/07(月) 15:58:50
>>198
空気読めよ
0201デフォルトの名無しさん2008/04/07(月) 16:18:02
オマエモナー
0202デフォルトの名無しさん2008/04/07(月) 16:34:38
これまた懐かしい
0203デフォルトの名無しさん2008/04/07(月) 16:45:32
(・∀・)ジサクジエンデシタ
0204デフォルトの名無しさん2008/04/07(月) 16:46:45
もう、ぬるぽ
0205デフォルトの名無しさん2008/04/07(月) 16:56:24
わっしょいわっしょい
0206デフォルトの名無しさん2008/04/07(月) 17:51:02
ファイル又はメモリ内のデータを圧縮するAPIと解除するAPIを教えてください
0207デフォルトの名無しさん2008/04/07(月) 18:21:58
zlib
0208デフォルトの名無しさん2008/04/07(月) 18:54:51
cabinet.dllの簡単な使い方を教えてくださいよ
0209デフォルトの名無しさん2008/04/07(月) 18:59:14
知らないならレスしないでください に一致する日本語のページ 約 141,000 件中 1 - 100 件目 (0.69 秒)
0210デフォルトの名無しさん2008/04/07(月) 19:05:07
>>206
RtlCompressBuffer / RtlDecompressBuffer
0211デフォルトの名無しさん2008/04/07(月) 19:14:15
>>209
お前>>184だろ
知らない癖に主観で嘘を書いたら叩かれて当然
そんな当然の事も分からず被害者ヅラするぐらいなら最初から書くな
0212デフォルトの名無しさん2008/04/07(月) 19:16:36
>>210
すんません、それぐぐっても悲しいくらいにヒットしないんですが
それって簡単なんですか?
0213デフォルトの名無しさん2008/04/07(月) 19:28:22
>>212
あるじゃんwww
しっかり検索しようよ
http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Compression/RtlCompressBuffer.html
0214デフォルトの名無しさん2008/04/07(月) 19:33:02
>>213
あ、これは失礼しますた。
WEB全体からぐぐるとある程度でてきました。
0215デフォルトの名無しさん2008/04/07(月) 19:45:25
>>214
    ∧∧
   ヽ(・ω・)ノ ズコー
  \( \ ノ
 、ハ,、  ̄
  ̄
0216デフォルトの名無しさん2008/04/07(月) 21:46:19
こんにちは。
エクスプローラーのリストビューのタイプの変更を行いたく思い、少し調べているのですがよくわからない部分があるので質問させてください。

http://yokohama.cool.ne.jp/chokuto/urawaza/lv_icon.html
を読んでタイプの変更は出来そうなのですがWindows Vistaの特大アイコンなどはどのようなメッセージを送ればいいのかわからないのです。
ヒント等ご教授戴ければ幸いです。
0217デフォルトの名無しさん2008/04/07(月) 21:49:10
つ Spy++
0218デフォルトの名無しさん2008/04/07(月) 22:01:34
>>217
どうもありがとうございます。
その発想はありませんでした。
0219デフォルトの名無しさん2008/04/08(火) 01:39:44
 Windowsプログラミング用にtypedefしたデータ型の変数を扱うときは
Cの標準ライブラリを使うかで悩んだりするけど、他の人はどうしてる
のかな。
 例えばWindowsプログラムには、文字列用にいろいろなtypedefした型が
あるけど、実際には同じくcharの配列だしsprintfとかstrlenとかも使え
るだろうが、それは反則とみなすのか。
 wspritnfとかlstrlenのようにWindows用の関数があればいいけど、それ
がないやつは困りそうだ。あったとしても、MSDNで調べて理解して解決ま
で持っていくのも大変そうだな。
 ところでファイル入出力も、fputs、fprintf、fgets等に似たWindows用
の関数もあるんでしょうか。あるかないかだけ聞ければいいです。
0220デフォルトの名無しさん2008/04/08(火) 01:40:52
_tcslen とか、文字系の関数には全部 TCHAR 用の関数が用意してあるでよ。
0221デフォルトの名無しさん2008/04/08(火) 05:08:02
それってVCの独自拡張じゃないのか?
0222デフォルトの名無しさん2008/04/08(火) 05:15:04
ウインドウに描画はするけど、クリックしたら下にあるウインドウにメッセージが届くようにするにはどうすればできますか?
0223デフォルトの名無しさん2008/04/08(火) 05:58:55
俺様拡張よりはマシだろう。

VC以外のコンパイラを使うことも考慮するなら、
VCのTCHARマクロと互換性のあるものを別に作って使えばいいと思うよ。
0224デフォルトの名無しさん2008/04/08(火) 06:28:42
tchar.hなんてWindows用コンパイラなら標準みたいなもんだろ
0225デフォルトの名無しさん2008/04/08(火) 07:23:58
ていうか、C標準にwchar_tが導入されたときに、TCHARマクロのようなものも標準化されなかったんか?
0226デフォルトの名無しさん2008/04/08(火) 07:36:30
>>221
そもそも Windows プログラミングをしようってんだから
TCHAR 使うのは普通だろ?
0227デフォルトの名無しさん2008/04/08(火) 07:59:08
いい加減9xは切り捨ててwchar_tで書けばいいと思うんだ
0228デフォルトの名無しさん2008/04/08(火) 08:14:23
VC特有を嫌うくらいなら、
wchar_tがWin32APIのWCHARと互換性があるという仮定は、
すべきではないだろう。

gccではwchar_tが32ビット幅だったりするしな。
0229デフォルトの名無しさん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でタイトルを
変更する事ができましたのでウインドウハンドルまでは取得できています。

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

すみません、プログラムでなんとかできればと考えております。
0232デフォルトの名無しさん2008/04/08(火) 11:51:13
>>231
とりあえずGetDC失敗した後GetLastErrorで原因を探ってみてはどうじゃろ。
0233デフォルトの名無しさん2008/04/08(火) 12:04:02
さすがにサービスアプリを作って試してみるのはめんどくさすぎるw
0234デフォルトの名無しさん2008/04/08(火) 12:14:14
sexeを使ってみ。
0235デフォルトの名無しさん2008/04/08(火) 12:15:12
>>233
知らないのに無理に答えようとしてガンバル必要はないぞ。
0236デフォルトの名無しさん2008/04/08(火) 12:18:27
>>234
このエロめ!
0237デフォルトの名無しさん2008/04/08(火) 12:19:51
知らないならレスしないでください
0238デフォルトの名無しさん2008/04/08(火) 12:27:26
また荒れてるのかw
0239デフォルトの名無しさん2008/04/08(火) 12:33:27
そんなもん知ってる奴なんて作者とMSの人間ぐらいだアホか
0240デフォルトの名無しさん2008/04/08(火) 12:34:28
>>239
無知ならレスしないでください
0241デフォルトの名無しさん2008/04/08(火) 12:35:37
>>228
gccで一括りにしてはダメ。Windows用のgccはwchar_tが16ビット。
0242デフォルトの名無しさん2008/04/08(火) 12:37:31
ふつうにできるやん
0243デフォルトの名無しさん2008/04/08(火) 12:42:51
メールやん
0244デフォルトの名無しさん2008/04/08(火) 12:49:56
shlwapiのHashDataって、OSやDLLのバージョン違ってもアルゴリズム同一と保証されてる?
0245デフォルトの名無しさん2008/04/08(火) 13:09:15
英語版MSDNの検索がタイムアウトしまくって使い物にならん
0246デフォルトの名無しさん2008/04/08(火) 13:20:06
>>244
されてないと思うよ。
NT4.0の頃のIEの暗号化が標準か高度かによって違っていただろうしね。

CryptoAPIを使うことは考えてみた?
0247デフォルトの名無しさん2008/04/08(火) 13:28:00
244です。
>>246
あー。いや暗号強度とかはあんまり関係なかったんです。
データ管理に128bitのハッシュが必要だったんだけど、ソースをあまり増やさないで欲しい
というんでMD5ルーチンが使えなかった、でこれを利用したかった。
ポータブルなデータではないんで絶対同一であることが必要でもないんだけどちょっと気になったので。
0248デフォルトの名無しさん2008/04/08(火) 13:39:23
MD5ルーチンってどっかのDLLが持ってたはず
SDKヘルプで出てきたし
0249デフォルトの名無しさん2008/04/08(火) 13:44:24
MSDNライブラリのネット版がクソ重くて見れないんだけど嫌がらせか?
0250デフォルトの名無しさん2008/04/08(火) 13:48:31
英語版もさっきそんな感じだったなあ
今は復帰してるが

Windows Filtering Platform超ワケワカンネ
0251デフォルトの名無しさん2008/04/08(火) 13:52:16
ファイアウォールでも作るのw?
0252デフォルトの名無しさん2008/04/08(火) 14:01:01
>>245
>>249
独り言やめれ。

MSDNライブラリくらいローカルのHDDにインストールしろよ。
■ このスレッドは過去ログ倉庫に格納されています