Win32API質問箱 Build87
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/03/28(日) 10:23:58やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
Win32API質問箱 Build86
http://pc12.2ch.net/test/read.cgi/tech/1265350980/
0497118 ◆ayPjxbmM2c
2010/05/02(日) 00:17:530498デフォルトの名無しさん
2010/05/02(日) 00:25:430499デフォルトの名無しさん
2010/05/02(日) 00:27:500500デフォルトの名無しさん
2010/05/02(日) 00:30:03GetClientRect - クライアント領域の位置情報
GetWindowRect - ウィンドウ領域の位置情報
0501デフォルトの名無しさん
2010/05/02(日) 01:52:03GetClientRect - クライアント上に描画している矩形を取得
GetWindowRect - ウィンドウ上に描画している矩形を取得
0502118
2010/05/02(日) 03:17:580503118
2010/05/02(日) 08:58:190504デフォルトの名無しさん
2010/05/02(日) 10:14:26Aは常に最前面、しかしBは更にAより最前面って出来ない?
0505デフォルトの名無しさん
2010/05/02(日) 10:16:200506118 ◆ayPjxbmM2c
2010/05/02(日) 10:44:320507デフォルトの名無しさん
2010/05/02(日) 11:30:060508デフォルトの名無しさん
2010/05/02(日) 12:46:070509118 ◆88ZPSwqsm6
2010/05/02(日) 12:58:180510デフォルトの名無しさん
2010/05/02(日) 13:09:460511デフォルトの名無しさん
2010/05/02(日) 13:11:19オーナーにせずに解決策ってある?
0512デフォルトの名無しさん
2010/05/02(日) 13:22:24アプリのメッセージボックスの自己主張が激しかった
Win95/NT4.0時代の悪夢を繰り返さないための仕様。
0513デフォルトの名無しさん
2010/05/02(日) 13:26:59適当なイベント(Activateなど)をトリガに
毎回EnumでZオーダーをチェックし
BがAの背面に回っていたら
A、Bの順にTopmostする
0514デフォルトの名無しさん
2010/05/03(月) 03:38:490515デフォルトの名無しさん
2010/05/03(月) 03:42:03DrawCube みたいな関数をイメージしてるなら、そんな物は無い
0516118
2010/05/03(月) 04:19:423D->2D変換
typedef struct type3d {
float x,y,z;
} POINT3D;
typedef struct type2d {
float x,y;
}
void convert3dto2d(p3 *POINT3D, p2 *POINT2D)
{
float vp = 0.7;
p2->x = p3->x * (vp / p3->z);
p2->y = p3->y * (vp / p3->z );
}
0517デフォルトの名無しさん
2010/05/03(月) 04:56:57何言語?
糞いい加減なレスすんなや、ボケ
0518デフォルトの名無しさん
2010/05/03(月) 05:10:26滅茶苦茶過ぎてワロタ
0519デフォルトの名無しさん
2010/05/03(月) 10:31:17どうやるかというとHPが100以下になったら回復アイテムを
自動で使うというものを作りたいです
そこで、起動しているexeのメモリの内容を参照するAPIって
何があるのでしょうか?
0520デフォルトの名無しさん
2010/05/03(月) 10:39:310521118 ◆1oKmZSIAF.
2010/05/03(月) 10:43:460522デフォルトの名無しさん
2010/05/03(月) 11:35:11元からかw
0523デフォルトの名無しさん
2010/05/03(月) 12:59:13\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんな餌で俺様が釣られクマ――
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
0524デフォルトの名無しさん
2010/05/03(月) 18:01:45SetEnvironment() で path を新たに設定しなおして、その後 ShellExecute() を実行してみたんですが
古いパスしか見てくれないようで困っています
0525デフォルトの名無しさん
2010/05/03(月) 18:06:17環境変数を継承するオプション無かった?なかったら、CreateProcessでごにょごにょする。
0526118 ◆4BcWhWACFc
2010/05/03(月) 18:06:47もう少し具体的にやりたいことと、やってみたことを説明してみ。
0527デフォルトの名無しさん
2010/05/03(月) 19:29:35notepad.exe とか memo.txt とかのファイル名が書かれたテキストファイルを読み
適当なタイミングでそのプログラムをShellExecuteで起動する32ビットアプリを作っています
64ビット環境下で動く時に、%SystemRoot%\Sysnative を優先して実行ファイルの探索パスとして使えると、
64ビット版のアプリが起動できるのではないかと思い実装を試みていました
多分、ShellExecute のパスを変えるには、親玉の explorer.exe の環境変数を変更しないとだめで、
そこを書き換えている期間は他のアプリにも影響が出てしまうのでこの方針はまずそうです
素直に64ビット版のShellExecuteのプロセスを用意しようと思います
0528118 ◆4BcWhWACFc
2010/05/03(月) 19:35:37素直に、フルパスで起動すればいいんじゃね?
0529デフォルトの名無しさん
2010/05/03(月) 19:51:42memo.txt や a.bat のようなファイル名指定による ShellExecute でSystem32配下のアプリが呼ばれるときの挙動を変えたかったんです
0530118 ◆4BcWhWACFc
2010/05/03(月) 19:56:27必要に応じてSysnativeにパスを変えて、CreateProcessすればいいだろ?
0531デフォルトの名無しさん
2010/05/03(月) 19:58:29面倒な世の中になってきたなあ
0532118
2010/05/03(月) 20:12:45ニンテンドウ64
0533デフォルトの名無しさん
2010/05/03(月) 20:53:44これでいけそうです。ありがとうございます!
0534デフォルトの名無しさん
2010/05/04(火) 13:31:49ソースコードを同一にする方法って言うか注意事項って言うか
そういうのがまとまったサイトってないのかな。
0535デフォルトの名無しさん
2010/05/04(火) 13:36:35void* p;
int a=(int)p;
0536118 ◆tfxvx8WXZ2
2010/05/04(火) 13:42:380537デフォルトの名無しさん
2010/05/04(火) 13:45:08#error 無理です。
}
0538デフォルトの名無しさん
2010/05/04(火) 14:13:04それじゃ常にエラー出るだろw
0539デフォルトの名無しさん
2010/05/04(火) 14:21:170540デフォルトの名無しさん
2010/05/04(火) 15:44:100541デフォルトの名無しさん
2010/05/04(火) 21:26:09副次ストリームとか使ってなんとか一緒にできないものか
foo.exe(32ビット版) が起動た時OSが64ビットだったら foo64.exe を呼び出す、みたいな間抜けなやり方しか思いつかん
0542デフォルトの名無しさん
2010/05/04(火) 21:43:04PEフォーマットが複数バイナリを格納できない以上、それは無理ってもんでしょ。
0543118 ◆tfxvx8WXZ2
2010/05/04(火) 22:08:22SysInternalのツールとかは、そういう風にやってるね。
0544デフォルトの名無しさん
2010/05/04(火) 22:11:35あれって、たとえば、特定のEXEにあたっちすることまでは
わかったのですが、
そのEXEが発行するAPIとか取得できるのかな?
やりたいことは、
EXEがあり、このEXEは、Widnowsのハードウエアにかかわる
DLL(API)を使っています。
このdevice.dll に対して、どのようなAPIが発行を要求したかしらべたいのです。
0545デフォルトの名無しさん
2010/05/04(火) 22:13:030546118 ◆uKObk31oqA
2010/05/04(火) 22:16:02API呼び出しを確認したければ、API Monitorかデバッガでアタッチ、
あるいは、ラッパ生成ツールでも使うことになる。
詳細はググレ。
0547デフォルトの名無しさん
2010/05/04(火) 22:16:52昔、dependency walkerってのがあったけど、
今もあんの?
0548デフォルトの名無しさん
2010/05/04(火) 22:20:10今手元に、とある dll とそれを利用している exe があります。
この dll について、公開されている関数の中で、この exe が
今どの関数を使用しているかを知る方法はありませんか?
ご教示の程よろしくお願い致します。
こんな感じか
0549118 ◆uKObk31oqA
2010/05/04(火) 22:24:30VSには含まれなくなったけど、フリーのやつが落とせる。
0551デフォルトの名無しさん
2010/05/04(火) 22:46:49どこかに良いサンプルありませんか
0552デフォルトの名無しさん
2010/05/04(火) 22:55:31この dll について、公開されている関数の中で、この exe が
今dllのどの関数を使用しているかを知る簡単な方法はありませんか?
イメージ的には、他社開発のアプリ上のボタンを押したら、
どのDLLのどの関数を呼び出したかを知りたいです。
アプリ上にそういったトレースファイルをはく使用であればいいのですが、
そういう使用がないので、なんらかの方法で知りたいと思います。
ご教示の程よろしくお願い致します。
0553118 ◆uKObk31oqA
2010/05/04(火) 23:00:19何かをした時点で、ってことであれば、>>546
0554デフォルトの名無しさん
2010/05/05(水) 01:40:43>>553
>SPY++は、メッセージのやりとりを確認するツール。
>API呼び出しを確認したければ、API Monitorかデバッガでアタッチ
情報ありがとうございます。
API モニター等調べています。
Win32とは直接関係ないですが、上の”メッセージ”とありますが、
現在Visual C++ 2008 のフォームアプリを勉強しているのですが、
ほとんど、(昔のVBみたいで、)あまり、メッセージがでてきません。
この理由というのがいまいちよくわかってないのですが、なにかヒントありますでしょうか?
0555118 ◆uKObk31oqA
2010/05/05(水) 01:41:59普通にWin32アプリを作れば、嫌でも出てくるよ。
0556デフォルトの名無しさん
2010/05/05(水) 01:51:362ch、やっぱり、すごい、疑問がすぐ解決する。。
0557デフォルトの名無しさん
2010/05/05(水) 02:09:49ネットでさがしてもわかりませんでした。
また、そのリスト等、ネットにありますでしょうか?
0558118 ◆1oKmZSIAF.
2010/05/05(水) 02:13:540559デフォルトの名無しさん
2010/05/05(水) 02:19:56・・・そもそもどこまでを指してwin32APIと呼ぶのかって話もあるが
0560デフォルトの名無しさん
2010/05/05(水) 02:32:230561デフォルトの名無しさん
2010/05/05(水) 02:44:11暇な廃人が常駐してるからな
0562デフォルトの名無しさん
2010/05/05(水) 03:02:06>560 :デフォルトの名無しさん:2010/05/05(水) 02:32:23
>system32にあるdllの各エクスポート数を調べるとか
このDLLのエキスポート数についてもう少しわかりやすく解説願えないでしょうか?
DLLはAPIを集めた、関数群であるあたり、までは理解しております。
0563118 ◆1oKmZSIAF.
2010/05/05(水) 03:11:550564デフォルトの名無しさん
2010/05/05(水) 03:16:27ありがとう。DLL内の情報が得られる EXEが、VSにあるみたいですね!
いろいろ読んで試してみます。
ttp://www.crystal-creation.com/software/technical-information/programming/dotnet/dotnet-compact-framework/cpp-dll.htm
0565デフォルトの名無しさん
2010/05/05(水) 03:17:58マイクロソフト出版か何かが出してた鬼みたいな厚さのAPI本でも多分全部網羅はしてなかったような
あと、箱入りVCにはレンガくらいの厚さがあるAPI本入ってるけど
0566デフォルトの名無しさん
2010/05/05(水) 03:40:12APIといいつつ、単なるマクロでDLLではエクスポートされていない場合もあるよ。
諦めたほうがいい。
0567デフォルトの名無しさん
2010/05/05(水) 08:10:41DNSAPIとか
0568デフォルトの名無しさん
2010/05/05(水) 08:52:28DNSAPI.dll のことか?
普通に MSDN 見ればわかると思うが...
http://msdn.microsoft.com/en-us/library/ms682100(v=VS.85).aspx
0569デフォルトの名無しさん
2010/05/05(水) 09:01:530570デフォルトの名無しさん
2010/05/05(水) 16:29:20DnsGetCacheDataTable なんて、どう見ても内部向けだろうし。
0571デフォルトの名無しさん
2010/05/05(水) 20:39:120572デフォルトの名無しさん
2010/05/05(水) 21:05:42そしてそれが何かの説明も読まずに使うバカはいないと思うの
0573118 ◆1oKmZSIAF.
2010/05/05(水) 21:25:310574デフォルトの名無しさん
2010/05/05(水) 22:20:21英語のMSDN見ないと話にならない
0575118
2010/05/06(木) 02:30:04お前K&Rも原著じゃないとっていうタイプだろ?
融通がきかない頭が固い
死後硬直かよ
0576デフォルトの名無しさん
2010/05/06(木) 02:34:51そのとおりです
よくわかりましたね
0577デフォルトの名無しさん
2010/05/06(木) 03:02:36日本語版だとバッファサイズがヌル文字含むのかとか書いてないことがあるし
0578デフォルトの名無しさん
2010/05/06(木) 06:15:06なくて使いづらいんだよな。
0579デフォルトの名無しさん
2010/05/06(木) 06:53:21クライアント領域がサイズ変更可能で境界線を持たないウインドウはどうすれば作成できますか?
0580デフォルトの名無しさん
2010/05/06(木) 08:19:260581デフォルトの名無しさん
2010/05/06(木) 09:05:15定期的に列挙してZオーダーの確認するしかない?
0582デフォルトの名無しさん
2010/05/06(木) 09:12:530583デフォルトの名無しさん
2010/05/06(木) 09:14:42他のあるかい?
0584デフォルトの名無しさん
2010/05/06(木) 09:23:380585デフォルトの名無しさん
2010/05/06(木) 09:40:430586デフォルトの名無しさん
2010/05/06(木) 10:02:04>>279-285を読んでもそう言うなら*馬鹿*以外の何物でもない。
> 解説
> CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。
0587デフォルトの名無しさん
2010/05/06(木) 10:10:59ファイルコピーをする場合、
・fopen_s等で開いて、自力でコピー
・system("copy を使う
があると思いますが、
エクスプローラーのコピーを、プログラムから気軽に使う方法はないでしょうか?
ファイルのコピー経過(今どれくらいコピーが終わったか)などを表示するのが目的です。
0588118 ◆1oKmZSIAF.
2010/05/06(木) 10:14:42SHFileOperation
0589デフォルトの名無しさん
2010/05/06(木) 10:31:15ありがとうございます
ばっちりでした
0590デフォルトの名無しさん
2010/05/06(木) 14:05:46綺麗な手では無理
どろくさくやるなら
CreateProcess → 戻りのプロセスID取得
ウィンドウ列挙して、GetWindowThreadProcessId でプロセスID取って一致したら
ShowWindow(SW_HIDE) する
こういう手順になるかな?
0591デフォルトの名無しさん
2010/05/06(木) 14:10:25関数を使います。
0592デフォルトの名無しさん
2010/05/06(木) 14:39:00自分で答えいってるがな
0593デフォルトの名無しさん
2010/05/06(木) 15:33:50STARTUPINFOのwShowWindowにSW_HIDE指定すれば済む話じゃなくて?
ちなみに、プロセスが作成されて最初のShowWindowはSTARTUPINFOで
状態が指定されていれば、それが強要される。
0594118 ◆1oKmZSIAF.
2010/05/06(木) 15:37:160595デフォルトの名無しさん
2010/05/06(木) 15:44:42そのアプリが最初に呼び出すShowWindowがSW_DEFAULTだかなんだかっての指定してないと効かない
0596デフォルトの名無しさん
2010/05/06(木) 15:46:16STARTUPINFO 効かないんじゃないかな
■ このスレッドは過去ログ倉庫に格納されています