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

Win32API質問箱 Build38

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

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
01531442005/12/10(土) 23:51:54
>>151
マイコンピュータのプロパティから環境変数Pathの設定をした場合はすぐに有効になりますが、
それはどうやってるのですか
0154デフォルトの名無しさん2005/12/10(土) 23:55:09
システム(エクスプローラか?)に環境変数の変更を強制する手段が
「どこかに」あるんだろう。

俺は知らん。
0155デフォルトの名無しさん2005/12/11(日) 00:13:38
>>152
winsockとかshell apiとかodbcとかその他多数。
狭義のwin32 apiだとそんなものまでは含まれないのか。。。
0156デフォルトの名無しさん2005/12/11(日) 00:15:11
隠しAPIのことかとオモタ
0157デフォルトの名無しさん2005/12/11(日) 00:31:34
隠しAPIならOS周りのDLLをdumpbin /exportsとかすれば出て競う。
0158デフォルトの名無しさん2005/12/11(日) 00:35:34
>>153
WM_SETTINGCHANGEをブロードキャスト
0159デフォルトの名無しさん2005/12/11(日) 00:36:41
Vistaには今まで隠しAPIだったものを名前だけ変えて出してきたようなものがチラホラ
GetFileInformationByHandleEx/SetFileInformationByHandleとかテラワロス
0160デフォルトの名無しさん2005/12/11(日) 00:47:20
Win32アプリってVC以外じゃできないんですかね?
Javaで使ってたeclipseの快適さが忘れられない。
0161デフォルトの名無しさん2005/12/11(日) 00:50:13
>>160
っ[ Delphi, BCB, VB ]
0162デフォルトの名無しさん2005/12/11(日) 01:41:18
VC++でIEコンポーネントを使ってるんですけど
右クリックしてコピーを選んでもクリップボードにコピーされません
他の”前へ戻る”とかは全部きちんと動くんですけどコピーだけ動かないです
どうしてなんでしょうか?
0163デフォルトの名無しさん2005/12/11(日) 01:44:34
隠しAPIって、勿体つけて隠してたんじゃなくて、
安定性・安全性に自信がもてなかったから非公開にしてただけでしょ。
0164デフォルトの名無しさん2005/12/11(日) 01:54:47
まぁ、そんなものが隠されているとは言え組み込まれていること
自体に問題があるんだけれどもね。
0165デフォルトの名無しさん2005/12/11(日) 02:33:57
とはいえ、隠しAPIには便利なのが多いんだよな。
0166デフォルトの名無しさん2005/12/11(日) 02:58:06
隠されたものにはロマンがある。
0167デフォルトの名無しさん2005/12/11(日) 07:20:19
公開されたものが安定性・安全性に自信があるとは思えんのだが
0168デフォルトの名無しさん2005/12/11(日) 09:00:18
画像を透過させて表示する方法を教えて頂けませんか?
今まではBitBltでSRCPAINTとSRCANDを組み合わせて透明化させていましたが、
この方法ではマスク用の画像も用意する必要が出て来てしまいます。
マスク無しで透明化させる方法の伝授をよろしくお願いします。
0169デフォルトの名無しさん2005/12/11(日) 09:06:37
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnwui/htm/layer.asp
0170デフォルトの名無しさん2005/12/11(日) 09:06:55
VC++でIEコンポーネントを使ってるんですけど
右クリックしてコピーを選んでもクリップボードにコピーされません
他の”前へ戻る”とかは全部きちんと動くんですけどコピーだけ動かないです
どうしてなんでしょうか?
0171デフォルトの名無しさん2005/12/11(日) 09:11:46
ヒント:
クリップボードは二種類ある
0172デフォルトの名無しさん2005/12/11(日) 09:35:26
Win32APIで取得したWin32のデータ型の変数をprintfなどで整形しようとすると、
型の互換性などで悩んでしまうけど、その辺他のプログラマーはどのようにやってる
んですか。
0173デフォルトの名無しさん2005/12/11(日) 09:48:07
お前の悩みが俺には理解できない
0174デフォルトの名無しさん2005/12/11(日) 10:01:53
悩んだこと無いな
0175デフォルトの名無しさん2005/12/11(日) 10:17:30
大悩みしないのが理解できない。
どうすればいいんだろうな。
0176デフォルトの名無しさん2005/12/11(日) 10:21:58
CStringとstringとstrXXX系の関数みたいな関係かな。
0177デフォルトの名無しさん2005/12/11(日) 10:22:23
基礎からやり直すのがいいだろうね。
0178デフォルトの名無しさん2005/12/11(日) 10:27:27
何の基礎からやり直せばいいんだ。
0179デフォルトの名無しさん2005/12/11(日) 10:29:02
Win32の基礎からか、それともCの基礎からなのか。
0180デフォルトの名無しさん2005/12/11(日) 10:31:32
コンピュータサイエンスの基礎
0181デフォルトの名無しさん2005/12/11(日) 10:35:34
>>180
俺はこのレスと>>176だけなんだが・・・
0182デフォルトの名無しさん2005/12/11(日) 10:42:38
何でそんなぼろくそに言われなければいけないんかね。
俺よりプログラムの理解が下の奴はいるぞ。
0183デフォルトの名無しさん2005/12/11(日) 10:47:06
>>182
> 俺よりプログラムの理解が下の奴はいるぞ。
そんなモン誰にでもいるだろ
0184デフォルトの名無しさん2005/12/11(日) 10:47:31
他人は当たり前に分かって馬鹿らしいことかも知れないけど、俺には分からないんだ。
教えてくれる人いないのかな。
0185デフォルトの名無しさん2005/12/11(日) 10:47:52
>>182
2chの半分はストレスでできています
0186デフォルトの名無しさん2005/12/11(日) 10:47:58
人間の基礎はAPIの基礎。
APIの基礎はCの基礎。
Cの基礎はコンピューターサイエンスの基礎。

結局は全部同じもの。
0187デフォルトの名無しさん2005/12/11(日) 10:48:46
ネタに混じれ酢カコワルイ
0188デフォルトの名無しさん2005/12/11(日) 10:59:21
コンピュータサイエンスが理解できたからと言って、Win32で定義したデータ型
が普通のデータ型のどれと互換性があるかが分かって、どの書式指定文字を使えば
いいかが分かるわけでは無いと思うんだが。
0189デフォルトの名無しさん2005/12/11(日) 11:05:50
>>182
下がいるとかいないとかもこの問題とふさわしくないだろ。

ただ、最近、知識も無いのにやたらめったら叩きレスを返す奴がいるから
注意したほうがいいと思う。
で、なにやら偉そうだから知識があるのかと思いきや、どうもプログラムも組めない気がする。
ってか、実力が無い。

こういう知りもしないのに、わかったつもりになってとりあえず叩く的な奴が出てきたのは
ここ最近のような気がする。
多分、ちょっと前の「ヘルプも見ずに質問してくるアホを叩きだす」流れで成長した奴が
自分もちょっと理解できるようになってレスを付けるようになって質問する奴を無差別に
叩きまくってるだけのような希ガス。

似たような分野のスレに似たようなレスがつくようになってるから注意したい。
レベルが低いからすぐわかるけど。
0190デフォルトの名無しさん2005/12/11(日) 11:06:45
>>172
つ[boost::format]
0191デフォルトの名無しさん2005/12/11(日) 11:19:20
>>172
「Win32のデータ型」などと言うものはない。
結局は、構造体やCの基本型のtypedefに過ぎない。


とりあえず、ヘッダでどう宣言されているか、調査してから質問して欲しいものだね。

後、「Win32のデータ型」なんて言う、オレ用語は使わないで貰いたい。
0192デフォルトの名無しさん2005/12/11(日) 11:23:13
>>188
コンピュータサイエンスの基礎が理解出来ていれば、Win32でデータ型を定義している訳ではない事位、普通に理解出来そうだが?
0193デフォルトの名無しさん2005/12/11(日) 11:25:08
>>191
俺は>>172ではないけど、そこはレスの全体の意味を組んでやればいいような気がするんだが・・・。
そんなとここだわんの?
なんかここって質問し難い掲示板になったなぁ・・・って思う。
ちょっと前なら、レスに意味不明な部分があったら、せめて

>>172
Win32のデータ型とはなんぞや?
定義されてる構造体のことなら〜だよ。

ってレスがついたけどもね。
最近はいきなり「カー」っとなって「ヒー」っとなって酷いねw
0194デフォルトの名無しさん2005/12/11(日) 11:25:45
スルーされたというより答えられる香具師がいなかったようなので再掲です


Windowsのイベントログに関する事で質問です

通常2000とかXPには
システムイベントログ
アプリケーションログ
セキュリティログ
などがありますが、
それ以外のログを自前で生成し、
「コンピュータの管理(MMC)」に
追加することは可能でしょうか?
0195デフォルトの名無しさん2005/12/11(日) 11:26:44
172から188まで呼んだけど何が悩ましいのかわかんない。
win32 と win64 で共有できる printf の書き方が悩ましいというならわかるけど
win32 限定なら MSDN のマニュアル見て型のバイト数と符号を確認するだけのこと。
むしろ型のバイト数と符号が処理系依存の「普通のデータ型」のほうが悩ましくて。
0196デフォルトの名無しさん2005/12/11(日) 11:28:58
>>194
不可能。
0197デフォルトの名無しさん2005/12/11(日) 11:31:32
>>196
ご回答ありがとうございます。

でも、サーバーコンポーネントにDNSを追加したり
ドメインコントローラに参加したりするといつの間にか
ログが増えているのですが、あれはどうやってるのかなと
思いまして。

やはり非公開APIがあるんでしょうね。
0198デフォルトの名無しさん2005/12/11(日) 11:34:27
>>160
つ[ Eclipse CDT ]
0199デフォルトの名無しさん2005/12/11(日) 11:34:56
>>193
元々、質問しやすい所でもなかったと思うが…。




それより、ヘッダの宣言を確認すれば解る様な事をいちいち質問する方が如何なものかと。
単発質問スレ立てるのと同じ位迷惑だと思う。
0200デフォルトの名無しさん2005/12/11(日) 11:38:09
>>197
UNIXでいうとsyslogのfacilityに相当するんで

facility eventlog win32api

とかでぐぐってみたんだが、出てこないな。
非公開だろね。
0201デフォルトの名無しさん2005/12/11(日) 11:54:33
>>194
イベントビューアの「アプリケーション」に独自のログを書き込むのは可能。
「コンピュータの管理(MMC)」に独自のスナップインを追加してそこにログ出力するのも可能。
イベントビューアを改変して独自の項目を追加するのは不可能っぽいけど俺が知らんだけかも。
0202デフォルトの名無しさん2005/12/11(日) 11:54:59
>>199
いや、そんな話でもないでしょ?
なんか便利なAPIかツールでもないですか?って話かもしれないことは容易に想像つくわけで。
こういうの気軽に聞けない雰囲気ではなかったよ。
ちょっと短気なのが多くなったせいもあって全体的にそういう空気ができちゃってるね。
0203デフォルトの名無しさん2005/12/11(日) 12:11:08
>>202
もしそうなら GetLastError とか FormatMessage くらいしかないだろうね。
0204デフォルトの名無しさん2005/12/11(日) 12:14:40
>>194
それは CustomLog というらしい。

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/eventlog_key.asp

CustomLog

Contains events logged by applications that create a custom log.
Using a custom log enables an application to control the size of the log
or attach SACLs for security purposes without affecting other applications.

Windows NT: Custom logs are not supported.
0205デフォルトの名無しさん2005/12/11(日) 12:22:12
>>194 >>201
漏れもやったことないけど、こんなのがあった。

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/adding_a_source_to_the_registry.asp

普通に出来るの鴨試練。
0206デフォルトの名無しさん2005/12/11(日) 12:22:59
>>194
> それ以外のログを自前で生成し、

MSDN見てると出来そうな気する。
http://msdn.microsoft.com/library/en-us/debug/base/eventlog_key.asp
自前で「custom log」に相当するキーを作ってみたら
どうだろう。

>>196は即答具合からイベントログに詳しいようなので、
見解を聞かせてほしいな。
0207デフォルトの名無しさん2005/12/11(日) 12:31:21
イヤです
0208デフォルトの名無しさん2005/12/11(日) 12:31:59
まさに>>196は>>189で語られているような人間な件。
02092012005/12/11(日) 12:54:34
>>204 >>205
情報ありがとう。ざっと読んだだけだけどその方法で普通に出来そうですね。
「アプリケーション」に独自のログを書き込むだけも糞面倒くさかったんで
とりあえず仕事を終わらせて、そっから先はポイしてた・・・
02102012005/12/11(日) 13:01:12
>>206
ピンポイント爆撃乙。194の質問はこれで終了でFA。
0211デフォルトの名無しさん2005/12/11(日) 13:50:35
__int64やLONGLONGの型の変数をprintfで64ビットで表示しようと考えて、
例えばVisual C++ .net2003のコンパイラで、
printf("%llx\n", n); では32ビット分しか表示しません。
printf("%qx\n", n);
printf("%l64\n", n);
printf("%l32\n", n);
では%や%lが無視されます。

64ビットに対応した環境でのみ表示できるのですか。
またぼろくそに言われるのだろうかな。
0212デフォルトの名無しさん2005/12/11(日) 13:52:44
訂正
printf("%l64x\n", n);
printf("%l32x\n", n);
0213デフォルトの名無しさん2005/12/11(日) 13:55:06
16進表記なのであれば、上位DWORDと下位DWORDを続けて出力すればいいだけだろ。
0214デフォルトの名無しさん2005/12/11(日) 13:55:55
printf とWin32APIにどんな関係が?
0215デフォルトの名無しさん2005/12/11(日) 13:57:44
だからちゃんとC勉強してこいよ
0216デフォルトの名無しさん2005/12/11(日) 14:03:54
ttp://msdn.microsoft.com/library/en-us/vclib/html/_crt_Format_Specification_Fields_.2d_.printf_and_wprintf_Functions.asp
0217デフォルトの名無しさん2005/12/11(日) 14:06:15
初心者はなぜか_int64やLONGLONGが好きだよな
あと最適化とか
0218デフォルトの名無しさん2005/12/11(日) 14:19:09
何を馬鹿にしてるのかね。
64ビットで出力するのが本当の目的ではない。
GetDiskFreeSpaceEx()関数のPU_LARGE_INTEGER型の引数で取得した値を
をprintfで対応する書式指定子は何になるかを調べたかっただけだ。
0219デフォルトの名無しさん2005/12/11(日) 14:25:14
>>218
http://msdn.microsoft.com/library/ja/vclib/html/_crt_size_and_distance_specification.asp
0220デフォルトの名無しさん2005/12/11(日) 14:36:44
こういう人は128ビットとかでてきたらどうするのかね?
かわいそうなやつだな
0221デフォルトの名無しさん2005/12/11(日) 14:38:20
Win32と標準関数の違いも分からず、MSDNすら調べられない厨でしたか。
0222デフォルトの名無しさん2005/12/11(日) 14:40:58
>>191
MSDNには"Windows Data Types"って表現があるから、「Win32のデータ型」って表現は間違いって
言うほどのものでは無いが。正しくは「Windowsのデータ型」だけど。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp

>結局は、構造体やCの基本型のtypedefに過ぎない。

それはそうなんだけど、あのグルグル巻きのウインドウズのヘッダーファイルを見ると初心者は混乱するよ。
Windowsのデータ型ってそんなもんだと悟りを開くまでには少々時間が掛かる。誰もが通って来た道だとは思うが。
0223デフォルトの名無しさん2005/12/11(日) 14:41:17
MSDNぐらい自分で引けるようになろうね
0224デフォルトの名無しさん2005/12/11(日) 14:43:30
何言ってんだ。wsprintf()のトピックの書式指定子の解説にも載ってなかったら仕方ないじゃないか。
0225デフォルトの名無しさん2005/12/11(日) 14:45:58
ここでとんちんかんにC++のiostreamなら型指定を考えずに済むと言ってみる。
0226デフォルトの名無しさん2005/12/11(日) 14:53:05
>>224
wsprintfなんて一言も言ってなかったじゃないか。
ロボットじゃ無いんだから、printfの方も見てみるとか機転を利かせようね。
0227デフォルトの名無しさん2005/12/11(日) 14:56:22
>>218
もちろんprintfにはQuadPartメンバを渡してるんだよな?
LARGE_INTEGERは共用体として定義されてるお
0228デフォルトの名無しさん2005/12/11(日) 14:56:41
>>198
ただのC++しか作れませんでした。
Win32は無理っぽい。
0229デフォルトの名無しさん2005/12/11(日) 14:58:40
MSDNは日本語と英語の内容は合わせて欲しい。
重要な補足事項とかが日本語の方には無くて結局英語の方も見ないといけないじゃないか。
0230デフォルトの名無しさん2005/12/11(日) 15:23:26
中途半端な翻訳するくらいなら、いっそ日本語版は無くした方がいいと思う。
0231デフォルトの名無しさん2005/12/11(日) 15:50:24
>>230
MSの技術情報みたいにサイトでの自動翻訳が良いね。
0232デフォルトの名無しさん2005/12/11(日) 15:57:09
英語で十分。
0233デフォルトの名無しさん2005/12/11(日) 15:59:58
でも完璧な日本語があるならそっちの方がいいけどね。
0234デフォルトの名無しさん2005/12/11(日) 16:09:12
カスタムログってメッセージDLL作ってイベントログに自前の文字列出す方法だろ?
>>194の質問に対する回答にはなってないと思うけど
0235デフォルトの名無しさん2005/12/11(日) 16:29:01
>>229
はじめから英語読めばいいじゃない
0236デフォルトの名無しさん2005/12/11(日) 16:29:48
間違えた
PU_LARGE_INTEGER ではなくてPULARGE_INTEGER
0237デフォルトの名無しさん2005/12/11(日) 16:33:45
PUGELA_INTEGER
0238デフォルトの名無しさん2005/12/11(日) 16:37:07
コンパイルエラー
0239デフォルトの名無しさん2005/12/11(日) 16:52:07
どうでもいいけど
英語で書かれたマニュアルなら
英語で呼んだほうが、誤解が少ないんじゃまいか?
翻訳に完璧はないわけだし。
なので留学はマジでおすすめ。
0240デフォルトの名無しさん2005/12/11(日) 17:07:10
Win32のデータ型と言っておいて別にいいじゃないか。
その程度の知識くらい知った上で便宜上言ってるのにな。
0241デフォルトの名無しさん2005/12/11(日) 17:08:59
Win32の疑似データ型とでも言っておこうか?
否定する奴は、何て呼び方をしてるんだ?
0242デフォルトの名無しさん2005/12/11(日) 17:10:44
すごいスレが伸びていたので覗いてみたら自作自演の祭りでした
ありがとうございました。
0243デフォルトの名無しさん2005/12/11(日) 17:16:38
シャットダウンするときに再起動するか休止状態にするかスタンバイか
などを選ぶダイアログが出るけど、前回の選択肢を記憶していてそれを
表示しているみたいなんだが、選択して再起動などをせずに表示される
既定を変えるにはどうしたらよいですか。

毎回休止状態を使うけど、ごく稀にシャットダウンする。次は休止状態
にしたいけど、惰性でエンターを押すとシャットダウンになっちゃう。
これを防止したい。選択出さないで直接やりなってのは不可。
こどもが電源ボタンを押しちゃうので予期せぬシャットダウンなどを防
ぐためにも選択ダイアログを出すのは必要。
0244デフォルトの名無しさん2005/12/11(日) 17:37:04
>>243
>こどもが電源ボタンを押しちゃうので予期せぬシャットダウンなどを防
>ぐためにも選択ダイアログを出すのは必要。

http://www.atmarkit.co.jp/fwin2k/win2ktips/065slpbtn/slpbtn.html
PBT_APMQUERYSUSPEND属性のWM_POWERBROADCASTメッセージを受け取ったら、
BROADCAST_QUERY_DENYを返すようなWindowsアプリケーションを常に実行しておけば問題を回避できる
0245デフォルトの名無しさん2005/12/11(日) 17:38:32
Win32のデータ型はないなら、文字列を扱うWin32API関数などは、末尾にAやWの付かない名前の関数名を言うと、
そんな関数は存在しないと主張するのかね。
つまらないレスが伸びてしまう結果になったのは残念なことだ。
0246デフォルトの名無しさん2005/12/11(日) 17:41:10
バカはもう来なくていいよ
02472462005/12/11(日) 18:00:34
誤爆スマソ
02482462005/12/11(日) 18:19:19
>>247
誰だおめー
0249デフォルトの名無しさん2005/12/11(日) 18:23:05
誤爆っぽくねぇwww
02502462005/12/11(日) 18:27:13
>>248
おまえこそ誰だよWWW
0251デフォルトの名無しさん2005/12/11(日) 18:51:27
>末尾にAやWの付かない名前の関数名

名前はどうでもいい
実体が問題なんだろ
0252デフォルトの名無しさん2005/12/11(日) 18:55:24
>>251
名は体を表わす
■ このスレッドは過去ログ倉庫に格納されています