Win32API質問箱 Build71
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/10/23(木) 15:59:18やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>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質問箱 Build70
http://pc11.2ch.net/test/read.cgi/tech/1221446107/
0082デフォルトの名無しさん
2008/10/25(土) 16:06:43だから、その機能部分だけを別のプロセスにして、そいつを昇格して起動させる必要がある
Advanced Windowsの5版に書いてあっただろうが! といってみる
0083デフォルトの名無しさん
2008/10/25(土) 16:14:400084デフォルトの名無しさん
2008/10/25(土) 17:21:160085デフォルトの名無しさん
2008/10/25(土) 17:29:050086デフォルトの名無しさん
2008/10/25(土) 17:33:370087デフォルトの名無しさん
2008/10/25(土) 17:43:370088デフォルトの名無しさん
2008/10/25(土) 17:46:030089デフォルトの名無しさん
2008/10/25(土) 18:07:040090デフォルトの名無しさん
2008/10/25(土) 19:23:02MPLSを連想した俺はラノベ板住人
0091デフォルトの名無しさん
2008/10/25(土) 20:19:32const TCHARとするしか。
0092デフォルトの名無しさん
2008/10/25(土) 20:35:290093デフォルトの名無しさん
2008/10/25(土) 20:35:33そんなところで手を省こうとするのが間違ってる
0094デフォルトの名無しさん
2008/10/25(土) 20:36:04○手間を省こうと
0095デフォルトの名無しさん
2008/10/25(土) 20:38:58TCHAR hoge[] = TEXT("hogehoge");
というようなコードがありますが、これってだいたいの場合固定で使うので
正確には
const TCHAR hoge[] = TEXT("hogehoge");
とすべきでは?と思ったもので。
0096デフォルトの名無しさん
2008/10/25(土) 20:45:570097デフォルトの名無しさん
2008/10/25(土) 20:50:260098デフォルトの名無しさん
2008/10/25(土) 20:59:370099デフォルトの名無しさん
2008/10/25(土) 21:10:28PCSTRとかだとポインタなのに*使わずに宣言するのが違和感あるとかw
0100デフォルトの名無しさん
2008/10/25(土) 21:39:45俺は95みたいにconst配列が好み。
0101デフォルトの名無しさん
2008/10/26(日) 02:43:36プログラムでスクリーンキャプチャする時に、レイヤードウィンドウもキャプチャしたいのに
GetDesktopWindowだとキャプチャできないんですよね。
レイヤードウィンドウもキャプチャできる方法ってありますか?
keybd_eventとかSendInputで「PrintScreen」を押した事にすれば可能っぽいんですが、
他の方法で出来ないものかなぁと…
0102デフォルトの名無しさん
2008/10/26(日) 03:02:480103101
2008/10/26(日) 05:17:11ありがとうございます。
こんなROPがあったんですね。
自分が参照しているリファレンスには載ってなかったもんで知りませんでした。
MSDNを参照する、という基本的な事を欠いてしまっていたのは反省すべき所でした。
0104デフォルトの名無しさん
2008/10/26(日) 05:28:500105デフォルトの名無しさん
2008/10/26(日) 12:39:20引数にラスターオペレーションコードって書いてあったのでそのまま書いてしまいました。
失礼しました。
0106デフォルトの名無しさん
2008/10/26(日) 16:58:38あれってもしかしてキャプチャした画像の上にGetCursorInfo→DrawIconExで描いてるだけ?
0107デフォルトの名無しさん
2008/10/26(日) 17:07:55うん
0108デフォルトの名無しさん
2008/10/26(日) 17:36:54DIB取得して合成
>>107
バーカ
0109デフォルトの名無しさん
2008/10/26(日) 17:42:570110デフォルトの名無しさん
2008/10/26(日) 17:51:290111デフォルトの名無しさん
2008/10/26(日) 18:25:33本買うしかないのか!
0112デフォルトの名無しさん
2008/10/26(日) 18:28:520113デフォルトの名無しさん
2008/10/26(日) 18:51:04バーカ
0114デフォルトの名無しさん
2008/10/26(日) 19:13:230115デフォルトの名無しさん
2008/10/26(日) 19:25:06これってなんで0xffffでマスクする必要あるの?
#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
でよくね?意図がわからん。
0116デフォルトの名無しさん
2008/10/26(日) 19:47:55そんなどうでもいい事をわざわざ質問するお前の意図がわからん。
0117デフォルトの名無しさん
2008/10/26(日) 19:53:540118デフォルトの名無しさん
2008/10/26(日) 19:55:560120デフォルトの名無しさん
2008/10/26(日) 19:57:420121デフォルトの名無しさん
2008/10/26(日) 19:59:48そんなのコンパイラの最適化でどうとでもなるだろ
cl /FAcs でコンパイルしてアセンブリソースでも眺めとけ
0123デフォルトの名無しさん
2008/10/26(日) 20:06:130124デフォルトの名無しさん
2008/10/26(日) 20:08:530125デフォルトの名無しさん
2008/10/26(日) 20:10:30意図としてはそういうことなんだろう。
安全策だな。
WORDを再定義するやからがいるかも知れないし。
0126デフォルトの名無しさん
2008/10/26(日) 20:20:590x123456780000 >> 16 → 0x12345678
昔はDWORD_PTRではなくDWORDだったと思うが、
それなら確かに0xffffでのマスクは不要ではある。
0127デフォルトの名無しさん
2008/10/26(日) 20:23:46やっぱWORDのサイズがポイントやろ。
0128デフォルトの名無しさん
2008/10/26(日) 20:37:47バーカ
0129デフォルトの名無しさん
2008/10/26(日) 21:05:21http://msdn.microsoft.com/ja-jp/library/8wtf2dfz.aspx
無いとVC++のチェックに引っ掛かるからでは?
0130デフォルトの名無しさん
2008/10/26(日) 21:19:25それって、単に上位ビットがすべて0だろうとそうでなかろうと
切り捨てられるときの話じゃないの?マスクする・しないの問題じゃ
ないと思うが。
0131デフォルトの名無しさん
2008/10/26(日) 21:21:430132 ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄
2008/10/26(日) 21:42:18/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ ・・・
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 |
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
0134デフォルトの名無しさん
2008/10/26(日) 22:27:30あたりで検索すれば色々でてくんだろ
0135デフォルトの名無しさん
2008/10/26(日) 22:50:510136デフォルトの名無しさん
2008/10/26(日) 22:53:280137デフォルトの名無しさん
2008/10/26(日) 22:55:38自分のレスも見えなくなってる馬鹿
0138デフォルトの名無しさん
2008/10/26(日) 23:21:41プログラマの人格が疑われるぜ。
0139デフォルトの名無しさん
2008/10/26(日) 23:22:56ヽ(`Д´)ノバーヤ
0140デフォルトの名無しさん
2008/10/26(日) 23:26:55という感じで、えらそうに街中歩いていそうだなw
あ〜やだやだ。
0141デフォルトの名無しさん
2008/10/26(日) 23:42:140142デフォルトの名無しさん
2008/10/27(月) 00:11:03馬鹿じゃなければ底辺産業のドカタやってられんよなー、同職ドカタ諸氏だろ
0143デフォルトの名無しさん
2008/10/27(月) 01:31:10自分のとこのならどこがキモになっててどう保存してんだか分かるだろ。
あとはどれを他のウィンドウから貰ってくれば同じことが出来るかだけやん。
0144デフォルトの名無しさん
2008/10/27(月) 04:41:330145デフォルトの名無しさん
2008/10/27(月) 05:25:490146デフォルトの名無しさん
2008/10/27(月) 08:48:58まぁアセンブラ組みに殺されろ
0147デフォルトの名無しさん
2008/10/27(月) 09:02:49アセンブラ組はやわじゃねえ
0148デフォルトの名無しさん
2008/10/27(月) 22:46:36WINVER
_WIN32_WINNT
といったWindowsやIEのバージョンを表すマクロは、
Win32APIでプログラムする場合、自分で定義するものなのですか
てっきりVC++が開発環境のバージョンをデフォルトで設定してくれると思い込んでました
0149デフォルトの名無しさん
2008/10/27(月) 23:18:31「動作させたいターゲット環境」のバージョンだから。
0150148
2008/10/27(月) 23:21:14その通りなんですが、
開発環境のパラメータをデフォルトで設定してくれてもいいんじゃね?
プロジェクト設定でGUIでできてもいいんじゃね?
と甘えたくなっただけですごめんなさい
0151デフォルトの名無しさん
2008/10/27(月) 23:43:40ココ見ると、デフォルトの設定があるようだけど?
0152148
2008/10/28(火) 00:05:42定義されてないとそのヘッダファイルのリリース時の最新バージョンが定義される
ってかんじなんですかね
気をつけてないと無意識にVistaでしか動かないアプリとか作ってしまいそうです
明示的にターゲットのバージョンを定義するのが良い作法の様ですね
>>149
>>151
ありがとうございました
0153デフォルトの名無しさん
2008/10/28(火) 01:56:16で、TEXTMETRIC構造体のtmAveCharWidthというメンバで文字横幅の平均値は
得られるようですが、この横幅を基準に文字列がどのくらいのフィールドを
必要とするかを考えても、文字の組み合わせによっては、想定したフィールドの
横幅からはみ出すこともあるってことで、OK?
対処法は余裕をもって場所確保しておけってことなのかな。
0154デフォルトの名無しさん
2008/10/28(火) 02:01:52万全を期すならGetTextExtentPoint32使った方がいいんだろうけど
0155デフォルトの名無しさん
2008/10/28(火) 02:06:36GetTextExtentPoint32というのは、文字列ごとに計算するって奴ですよね。
0156デフォルトの名無しさん
2008/10/28(火) 02:51:07という用途みたいだから、tmMaxCharWidth*nでないの
0157デフォルトの名無しさん
2008/10/28(火) 03:42:24大文字の場合も考慮に入れてくれるんですよね、その関数。
0158デフォルトの名無しさん
2008/10/28(火) 07:23:44ShellExecute(hwnd,"open","○○.chm",NULL,NULL,SW_SHOWNORMAL);
って書けばふつーにchmが開くんですか?
0159デフォルトの名無しさん
2008/10/28(火) 07:36:28やってみれば?
0160158
2008/10/28(火) 08:32:130161デフォルトの名無しさん
2008/10/28(火) 09:05:070162デフォルトの名無しさん
2008/10/28(火) 09:16:37できました、どっかでID、ヘッダーファイルがどうこうと見たので
たんに開くだけの場合も何か必要と思い込んでました…
0163デフォルトの名無しさん
2008/10/28(火) 09:51:100164デフォルトの名無しさん
2008/10/28(火) 10:32:370165デフォルトの名無しさん
2008/10/28(火) 14:15:49とした時の BITMAP::bmBits は解放する必要ないのでしょうか?
0166デフォルトの名無しさん
2008/10/28(火) 14:27:050167165
2008/10/28(火) 14:40:05http://msdn.microsoft.com/ja-jp/library/cc410355.aspx を見ただけでは
その記述を見つけることはできませんでした。
ありがとうございました。
0168デフォルトの名無しさん
2008/10/28(火) 14:51:210169デフォルトの名無しさん
2008/10/28(火) 14:55:220170デフォルトの名無しさん
2008/10/28(火) 15:02:51> この関数は、、、、、、or いずれかの構造体、またはテーブル内のエントリ数(論理パレットに対応)を格納します。
何これ
0171デフォルトの名無しさん
2008/10/28(火) 15:05:388ビット以下のbmpはパレット付き
0172デフォルトの名無しさん
2008/10/28(火) 15:09:15いやそうじゃなくて、機械翻訳がおかしいと言いたいのだが・・・
0173165
2008/10/28(火) 15:15:15LocalFree() するとアクセス違反が起こりました
問題なく処理は進んでいますが、
念のためコメントアウトしておきます
>>168
ヘルプを見る限りそのようなので、
CreateDIBSection() でBITMAPを作成しています
>>169
同じアドレスということは
メモリの管理はAPI側がやってくれるということなのでしょうか?
>>170
日本語版ヘルプはそういうのが多いですね
特にWin32APIで
0174デフォルトの名無しさん
2008/10/28(火) 15:17:04自分で作ったバッファのアドレスが入ってるだろうってことじゃないか?
0175165
2008/10/28(火) 15:20:01自分でバッファを作ったわけではなく、
CreateDIBSection() の引数で void** を渡し、
そこにアドレスが入っています。
なのでシステムが用意したバッファだと思っているのですが・・・
0176デフォルトの名無しさん
2008/10/28(火) 15:21:290177デフォルトの名無しさん
2008/10/28(火) 15:25:320178165
2008/10/28(火) 15:27:37すみません読み違えていました
>>177
つまり DeleteObject() さえしていれば
解放の必要はないということですね?
ありがとうございました。
0179デフォルトの名無しさん
2008/10/28(火) 15:28:24>>166は大嘘
0180デフォルトの名無しさん
2008/10/28(火) 17:43:450181デフォルトの名無しさん
2008/10/28(火) 19:11:350182デフォルトの名無しさん
2008/10/28(火) 23:47:58実現するには、アプリケーションのウィンドウがアクティブではない時も
キーイベントを拾う必要があると考えてます
この場合、
・キーボードフックを使う
・GetAsyncKeyStateでポーリングしながらキー入力をチェックする
以外の方法が思いつかないんですが、他にやり方はありますか?
■ このスレッドは過去ログ倉庫に格納されています