1 名前:デフォルトの名無しさん [2009/08/02(日) 00:20:49 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build80 pc12.2ch.net/test/read.cgi/tech/1244057140/l50
159 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:42:10 ] Win32APIになんか関係あるん?
160 名前:デフォルトの名無しさん [2009/08/07(金) 18:47:19 ] いやごめんなさいくずまったくかんけいないですがごみきいてみたかったんですよ
161 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:29:53 ] いつの間にかWindows 7 SDKがRMTに
162 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:32:20 ] アドレス忘れた www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=71deb800-c591-4f97-a900-bea146e4fae1
163 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:34:42 ] RMTじゃリアルマネートレードだろ
164 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:56:01 ] いつの間にかWindows 7 SKDがRTMに これでいい?
165 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:58:14 ] >>163-164 RTM じゃリアルタイムマネーだろ!
166 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:00:09 ] いつの間にかWindows 7 SDKがATMに
167 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:11:40 ] それじゃオートメーテッドテラーマシーンだろ
168 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:31:42 ] もうだめだこのスレ
169 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:37:46 ] dumpbin /DEPENDENTS みたいに依存するDLL名って、Win32APIではどのように取得するんでしょうか
170 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:58:48 ] API レベルで用意してるのかなぁ? PEフォーマットの仕様ははっきりしてるし、 依存DLL名だけ調べるくらいならそんなに難しくないよ。 PEフォーマットについてかなりわかりやすく解説したページが以前はあったんだけど、 今は消滅しちゃってるな。 まぁ、マイクロソフトのページに行けばキッチリした仕様書が入手できる。
171 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:25:37 ] 解説も何も、PEフォーマットなんてせいぜいRVAがウザい程度でしょ それもimagehlp.dllのAPIを使えば簡単だし
172 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:34:12 ] >>157 それって、Xp以降専用になるんじゃ…… まあ、それも時代か。
173 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:36:35 ] 2000ってそろそろサポ切れるよな
174 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:06:36 ] >>170- ImageDirectoryEntryToDataEx使ってそれっぽいのとれたんですけど、RVAからVAの変換でミスg・・・ よくわかんねー
175 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:52:59 ] >>172 MSDNにはXP以降と書かれてるけど実際には2000でも使える。
176 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 08:04:08 ] Windows7 SDK のISOイメージは、まだx86版しか上がってないのか。 今までと違って、x64環境にはx64用のイメージが必要なのに気付かなかったぜ。
177 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 09:41:58 ] >>176 試してないけど、ファイルはあるみたい。 download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso
178 名前:135 [2009/08/08(土) 16:14:41 ] >>135 のものですが、>>137 さんありがとうございます。 その方法で試みていますが、うまくいきません。 具体的には、 LPNETRESOURCE netResource = new NETRESOURCE(); netResource->dwScope = 0; netResource->dwType = RESOURCETYPE_DISK; netResource->dwDisplayType = 0; netResource->dwUsage = 0; netResource->lpLocalName = ""; // ネットワークドライブにする場合は"z:"などドライブレター設定 netResource->lpRemoteName = "\\\\hostname.com"; netResource->lpProvider = ""; DWORD err = WNetAddConnection2(netResource, "password", "account", CONNECT_UPDATE_PROFILE); で、戻り値のerrは0になったのですが、マウントがされません。 netResource->lpLocalName = "Z:"; のようにしても、Zドライブに割り当てられません。 何が原因でマウントされないのでしょうか? マウントされたボリュームが表示されるようにしたいのですが、 どうすればよいか教えてください。 よろしくお願いします。
179 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:59:47 ] >>177 サンクス。ハッシュも一致していたし、それでOKみたいだ。
180 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:00:32 ] lpRemoteNameにホスト名だけを指定しているのがまずいような 多分\\\\hostname.com\\folderのようにするはず で、folderは共有されていなければならなかったはず
181 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:49:32 ] 7で目覚まし動かん
182 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:01:41 ] 相変わらずSDKでけぇなー .NETとかイラネーし別ファイルにしてくれよ・・・
183 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:04:10 ] 別ファイルにしたら誰も使ってくれなくなるだろ… VC++ しか使わないのに VB も VC# もついてくるのは抱合せ販売では? とか思ったけど、いまの Visual Studio って、過去のVisual C++単体と同じくらいの金額なんだよな。
184 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:09:40 ] それを言ったら昔はSDKやDDKだって有償だったでしょうに
185 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:11:47 ] 無料で何でも揃う割にクリエイティブなティーンが少ない件
186 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:33:24 ] >>182 ウェブセットアップ版ではだめですか?
187 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:40:10 ] >>186 > Error: Setup determined that the Microsoft .NET Framework 2.0 is not present or could not be detected. > Navigate to the Microsoft Download Center, search for .NET Framework 2.0 redistributable, and download the version appropriate for your platform うぜーーーーーーーーー
188 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 00:43:32 ] いいかげんMINMAXマクロ定義するのやめてほしい
189 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:06:45 ] 今更やめられないのは少し考えれば判るだろ
190 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:22:41 ] NOMINMAXで我慢してください。
191 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:33:08 ] 事情はわかってるがそういう上塗りでのごまかしにはウンザリなんだよ。 ちょっとグチらせてくれや。
192 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:34:28 ] #include <cstdlib> #include <limits> #define NOMINMAX #include <windows.h> #include <windowsx.h> #include <commctrl.h> #include <shlobj.h> #include <shlwapi.h> #define STRSAFE_NO_DEPRECATE #include <strsafe.h> #pragma comment(lib, "comctl32.lib") #pragma comment(lib, "shlwapi.lib") こういうのをcommon.hみたいな名前で%include%に放り込んでおけば #include <common.h> だけで万事解決
193 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:12:16 ] LEAN AND MEANもdefineしようぜ
194 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:42:19 ] windef.hだけインクルードしようとするとコンパイルエラーになるんだがなんでだろう
195 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:25:22 ] >>193 ソレつけるとかえって#includeの行数が増える事になるし面倒じゃね? 今時の計算機ならコンパイル時間の短縮にほとんど貢献しなさそう
196 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:43:43 ] メニューを作る際、リソースファイルなどで、「INACTIVE」を指定すると、 選択できない項目にすることができますが、 これを、アプリケーションからInsertMenuItem関数などで動的に追加するときに 適用することはできないでしょうか? InsertMenuItem関数で使用するMENUITEMUINFO構造体を見ても、 該当するような項目は見当たりませんでした。 よろしくお願いします。 m(_ _)m
197 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:56:45 ] fState = MFS_DISABLED
198 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:11:44 ] MFS_DISABLED だとグレーアウトした選択不可 グレーアウトなしの選択不可は MF_DISABLED っぽいが… # リソースで作ったメニューを GetMenuItemInfo で fState 取得したら 2 だった # 2 相当のマクロを winuser.h で探すと… MFS_xxx は存在しないっぽい
199 名前:196 mailto:sage [2009/08/11(火) 11:15:57 ] >>197 >>198 ありがとうございましたぁ!! 。゜( ゜´∀`゜)゜。
200 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 15:33:56 ] MF_DISABLEDはdeprecatedなんだろ そもそもグレーアウトしないのに選択できないなんてUIとしておかしいし キーボード操作だと選択できないのが分からない
201 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:24:00 ] 教えてください。レバーコントロールの勉強中です。 レバーコントロールの背景についてです。 エクスプローラみたいにグラデーションのかかった背景にするには どうしたらできるんですか? 背景としてビットマップを指定できるのは分かったんですけど、 エクスプローラの場合、ウィンドウのサイズを変えると、 背景のグラデーションも動的に変わるようにしたいんです。
202 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:32:55 ] また肝臓コントロールかよ
203 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:38:11 ] XPスタイルのコモンコントロールとかなんとかでぐぐれ
204 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:47:38 ] 最近のVCだと自動でXPスタイルのmanifest付けてくれるんじゃないの?
205 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:04:11 ] デフォ設定だとマニフェストは埋め込まれる
206 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:40:13 ] マニフェストは埋め込まれるけど、comctl32のバージョン6を使う指定は自分で追加しないといけない。 その最近のVCだとこんな風にpragmaでも書ける。もちろん、リソースでもリンカオプションでも可能。 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' "\ "version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
207 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 23:47:01 ] 面倒だなあ #pragma comment(linker,"/manifest:comctlv6") みたいなオプション用意してくれればいいのに
208 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:19:40 ] >>192 に書いとけばいいよ
209 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:29:38 ] よく使う割に長いオプションは短縮系的なものが用意されてそうな気はするんだが。 (/nodefaultlib → /nod みたいな) 今度link.exeを逆汗して調べてみるか。 <チラシの裏> cl.exeに/Bzか/Bdをつけてコンパイるとc1.dllやc2.dllに渡してるコマンドラインが見れる。 </チラシの裏>
210 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:27:53 ] >>209 マニュアル見ろよ。
211 名前:201 mailto:sage [2009/08/12(水) 12:34:05 ] XPスタイルというものだったんですね。 マニフェストのおかげで実現できました。 ありがとうございました。
212 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 14:02:13 ] WM_NCPAINTで(HRGN)wParamからGetDCEx取得したHDCを使って描画すると、 思った位置に描画できないのですが、どうしてなんでしょうか。 ttp://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx ここの0x10000を足すやり方でhdcを求めてFillRgnで塗りつぶすと、 クライアント領域にずれ込んでウィンドウフレームの形に塗りつぶされてしまいます・・・
213 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:46:56 ] >>210 マニュアルに載ってないオプションが大量にあるのを知らないのか 平和な奴だな
214 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:06:50 ] 煽るな
215 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:54:54 ] ごめんなさい
216 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 19:32:00 ] >>213 あるだろうな。 それがどうした。 公開してないのをむやみに使うんじゃないよ。
217 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:27:51 ] ウィンドウメッセージでマウスカーソルが入ってくるのはわかるんですが 出て行くのを知る手段はありますか?
218 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:44:39 ] >>217 入ってきたときMOUSEMOVEをキャプチャするとか。 または入ってきたときタイマで確認し始めるとか。 で、出たらどちらも初期化するとか。 いずれにしても自前で処理する必要がある。
219 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:59:29 ] WM_MOUSELEAVEはだめ?
220 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:07:32 ] それが、MOUSEMOVEのキャプチャじゃない? 入ってきたとき、TrackMouseEvent()実行しないとだめだよね。
221 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:11:05 ] >>218-220 キャプチャってボタン押さなくてもいけるんですね それとWM_MOUSELEAVEも知らなかったのでその二つを色々試してやってみようと思います ありがとう
222 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:40:36 ] 上のWM_MOUSELEAVEなのですが ALT+キーにも反応してしまうのを抑制することは出来ますか
223 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:55:58 ] 出来ます
224 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:12:02 ] 確かに良く考えれば出来ました LEAVEの中で座標調べて必要ならEvent設定しなおしてやりましたが 何故キーに反応するのかわからない…
225 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 10:53:15 ] SPY++が無いため質問させて頂けます ポップアップメニューを選択した時、メッセージの流れは WM_EXITMENULOOP WM_COMMAND の順になるんですが WM_EXITMENULOOPがくるまえに確実に選択したメッセージは来ないんでしょうか?
226 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:58:55 ] Spy++で見れば分かるだろ
227 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 23:00:09 ] だからないって言ってんだよ、このスカポンタン。 ボヤッキー、やっちまいな。
228 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 23:01:44 ] 入れればいいだろうが。
229 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 23:17:19 ] Spy++ってネットから落とせたっけ? 俺はVC6買ったら入ってたから、今もそれ使ってるけど
230 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:52:42 ] VC++をネットから落としてきたら入ってるよ。
231 名前:デフォルトの名無しさん [2009/08/15(土) 01:27:20 ] なんか人聞きが悪いな
232 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:32:20 ] ???
233 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:33:16 ] プログラマなんだから作れよ
234 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:46:37 ] 自作するとフックやプロセス間通信の勉強になるよね。
235 名前:231 [2009/08/15(土) 01:49:10 ] >>232 ネットで落とすってなんか割る感じに聞こえたから
236 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:52:36 ] 今のVisual StudioはExpressのつく製品なら無料でDLできるからなあ
237 名前:231 [2009/08/15(土) 01:57:13 ] いや、dreamsparkでってことでしょ expressionじゃspy++付いてこないし
238 名前:デフォルトの名無しさん [2009/08/15(土) 02:05:26 ] あ…dreamsparkってもう終わってたのね
239 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 02:59:21 ] \ \ ∧ニユ/ ̄ヽ \ ( ´∀/) i \.\ _(」つ/とl) . | \ ;::;::\i\ 匚レ| .〈/ ) | \ 。::;;:'\.\ (_,)ー' |_,, -'''"! ^人;:'::;゚:;.\l\ _,,, -''"|_,, -''"| ^^从::;;:。':\.\_,, -''"|_,, -''"| . :| へ ^へ;;::';;:'\l_,, -''" . | 从^ 〜 ^ ^ヘ^人从::;;;:| ,ィ人^. | ^ ^へ^^ 〜 ^.へ' ^':レ^从 へ' | 〜 ^ へ ^^ へ 〜人^ ^ へ〜 〜
240 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 04:00:00 ] pc12.2ch.net/test/read.cgi/tech/1250129684/
241 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 06:15:12 ] >>231 この馬鹿はmsdnサブスクリプション知らないの?
242 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 07:21:18 ] 今少し調べてみたんだが、Spy++に代わりとなるアプリって無いな あっても正直ショボいから、自分で作ったほうがいいかもな
243 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 08:43:19 ] ハァ?Spy++より高機能なアプリなんて山ほどあるだろ
244 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 09:13:09 ] そんなことは知ってる 探すぐらいなら自分で作ったほうがいいということだ
245 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 09:15:41 ] キャタピラでも再発明しますか
246 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 09:21:02 ] >>243 あるなら教えてくれよ。軽く調べたけど俺は見つけられなかった 後、質問なんだが マウスフックしてる時に、クリックされたウィンドウがポップアップなら処理しない用にしたいんだが FindWindow( TEXT("#32768"), NULL )で取得したハンドルと フックで渡されたハンドルが一致しないんだが、何か良い解決策ないかな?
247 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 12:43:14 ] >>246 Spy++互換ならWinspectorとか? 高機能かどうかは保証しないけど。
248 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:07:38 ] >>246 お前の調べ方が悪いだけ
249 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:23:10 ] 2chはツンデレが多いな
250 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:36:19 ] >>246 >FindWindow( TEXT("#32768"), NULL ) 文字列を渡すのが間違いじゃないかな。 MAKEINTATOM(32768)とか。
251 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 01:52:59 ] 「山田って名前のやつが来たら門前払いしたいんだけど "山田"で検索したのと顔が一致しないんだが、何か良い解決策ないかな?」 「そいつに名前聞けよ」
252 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:53:09 ] クラス名が "#32768" ってポップアップメニューなんだけど(ちなみに"#32770"はダイアログ) >>246 で書いてある「クリックされたウィンドウがポップアップなら」って条件に当てはまるはずがない
253 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 06:50:20 ] マウスフックで、クリックされたハンドルがポップアップメニューの場合 #32768でおk?
254 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 07:22:47 ] クラスアトムでチェックすればいいだろ if(GetClassWord(hwnd,GCW_ATOM)==32768){ //メニュー }
255 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:46:22 ] 表示してる全てのポップアップメニューの領域を取得する方法ないかな? 単体なら取れるんだけど MF_POPUPして複数になると、新しく表示されたポップアップメニューしか領域が取れない
256 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:02:07 ] #32768の全ウィンドウに対してUnionRectすれば求まるだろ 頭使おうな
257 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:34:25 ] >>256 有難う #32768の全列挙ってFindWindowEx使う? 一々全ウィンドウを列挙してクラス名を使わないと駄目かな?
258 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 11:48:11 ] EnumWindowsを使う方がいいよ ウィンドウの判別は>>254 でもおk
259 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 14:33:51 ] >>258 有難うっ Findで複数32768を取れないか試したけど駄目だった 全列挙してやります