1 名前:デフォルトの名無しさん [2007/06/12(火) 19:59:25 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
191 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 18:54:28 ] VC8じゃstaticライブラリのプロジェクト設定にはリソースコンパイラ用のページが現れないな。 ファイルを混入させることはできても、リソースとしてリンクさせることはできないんだろう。
192 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 22:04:46 ] >>164 SetThreadDesktop
193 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 01:03:05 ] >>192 別セッション上のデスクトップのハンドルって取得できるの?
194 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 03:11:36 ] ライブラリにリソースを入れるのはいいとして、 ライブラリの中身全てがリンクされるわけじゃないぞ。 参照しているものだけがリンクされるんだ。 だから、リソースをライブラリに入れただけでは、リンクされないぞ。 ちゃんと、そのリソースを参照しないとな。
195 名前:SEX mailto:末期症状 [2007/06/20(水) 04:21:18 ] WNDCLAS"SEX" INITCOMMONCONTROL"SEX"
196 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 07:04:20 ] こういう事って可能でしょうか? A.EXEからB.DLLのエクスポート関数を呼び出したのを監視するプログラムを作る。 可能であれば方法を教えて下さい。
197 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 07:20:58 ] Bの方に通知機能を入れておけ
198 名前:196 mailto:sage [2007/06/20(水) 08:06:04 ] それがA.EXE、B.DLLともソース閲覧のみで変更は許されてないんです。 関数はB.DLLのリストビューウィンドウを呼び出すもので負荷の少ない通知メッセージを探しているんですけど。
199 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 08:29:19 ] つ[Spy++]
200 名前:20 [2007/06/20(水) 08:30:59 ] >>196 APIフック。AdvancedWindowsの弟4部 DLL を読めば解決すると思います。
201 名前:196 mailto:sage [2007/06/20(水) 09:08:51 ] >>199 とりあえず、WM_CREATEで作れました。 >>200 アッー!APIフックですかぁ。確かにできますね。 AdvancedWindows買うつもりですが高いですね。 ありがとうございました。
202 名前:デフォルトの名無しさん [2007/06/20(水) 09:13:54 ] >>191 > VC8じゃstaticライブラリのプロジェクト設定にはリソースコンパイラ用のページが現れないな。 > ファイルを混入させることはできても、リソースとしてリンクさせることはできないんだろう。 ページはあるよ。ちゃんとやってみた? リソースはデフォルトでライブラリに含まれるようになっている。 >>194 > ちゃんと、そのリソースを参照しないとな どうやって参照するの? リソースIDで参照しても参照したことにならないよね?
203 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 09:36:25 ] >>202 >どうやって参照するの? だから名前付けられるのかって聞いたんだよ 意味が無いということを説明したいのに反論ばかりして 人の言うこと聞く気も無いだろ、キミ
204 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 09:57:53 ] それ以前にスレ違いだ
205 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 10:10:17 ] >>203 ああ、そういことね。了解。すんません。
206 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 17:51:12 ] workgroup の 自分のマシン名を得るのはどのようにすればよいのでしょうか?
207 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 17:57:41 ] >>206 Windowsの正規の呼び方ではない、 「マシン名」なんていう言い方をするから、 わからんのですよ。 正しい呼び方は、コンピュータ名。 MSDNライブラリで、GetComupterまで入力すれば、候補のリストに GetComputerName GetComputerNameEx あたりが見つかるでしょう。
208 名前:206 mailto:sage [2007/06/20(水) 18:08:49 ] >>207 ありがとうございます。できました。 ついでに環境変数にもいっぱいあったのでそれも参考にします。
209 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 21:03:58 ] >>207 × コンピュータ名 ○ NetBIOS名
210 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 21:53:59 ] >>193 調べてないけどターミナルサービス関係のAPIで何とかなったりしない? Vistaでは常にセッションが分かれるけどXPでも高速ユーザー切り替えや リモートデスクトップ使っているときは意識する必要があるはずだから
211 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:41:09 ] >>209 マイコンピュータのプロパティを開いて、タブの一覧を見よ。 「コンピュータ名」と書かれているから。
212 名前:209 mailto:sage [2007/06/21(木) 00:08:15 ] >>211 スレ違いだけど↓ ttp://www.monyo.com/technical/windows/msnet/msnet1.html
213 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:16:13 ] >>212 GetComputerNameをMSDNライブラリで引いてみなよ。 NetBIOS名を取得するって書いてある。 とはいえ、 GetNetBIOSなんとか ではないんだよ。 あくまでも、 GetComputerNameなの。
214 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:18:28 ] どうでもいい
215 名前:209 mailto:sage [2007/06/21(木) 00:36:58 ] >>213 APIの名称については文句をいっていない。 問題にしているのは「正しい呼び方は、コンピュータ名」<この部分 ttp://msdn2.microsoft.com/en-us/library/ms724301.aspx >Retrieves a NetBIOS or DNS name associated with the local computer. The names are established at system startup, when the system reads them from the registry.
216 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 01:01:26 ] もうバカはほっとけよ
217 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 01:29:03 ] >>215 コンピュータ名 = NetBIOS名もしくはDNS名 ドメインコントローラがActiveDirectoryの場合は、NetBIOS名にならない。
218 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 04:34:48 ] >>215 その英文から「NetBIOS名」という超訳をひねりだせる脳味噌に感激
219 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 07:15:33 ] NetBIOS or DNS name だからNetBIOS名かDNS名だろ
220 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:55:18 ] NetBIOS無くてもFQDNでアクセスできるからなあ
221 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 10:15:04 ] >>217 その内容については知っている >>206 に「workgroupの〜」って付けて発言しているから DNS HOST名を包括しているコンピュータ名という用語を>>207 で 使用するのは正しくないと>>209 でいいたかっただけ
222 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 10:23:54 ] FDQN
223 名前:デフォルトの名無しさん [2007/06/22(金) 13:44:36 ] 特定のプロセスIDの所有するすべてのスレッドIDを取得したいんだけどどのAPIでやりますか? スレッドIDで過去ログGrepしたけどないんで教えてください。 後、フックを入れてフォアグラウンドになったときをつかまえてスレッドID取得というのは無しの方向で。
224 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 14:14:18 ] Tool Helpでも使えば
225 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 14:16:05 ] Tool Helpだな
226 名前:デフォルトの名無しさん [2007/06/22(金) 14:27:17 ] >>224 >>225 ありがとう。AdvancedWindowsのProcessInfoアプリケーションがサンプルになりました。
227 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 15:10:41 ] SystemParametersInfo()の電力管理フラグ、 スクリーンの低消費電力モードとスクリーンの電力停止モードはどう違うのでしょうか? どちらも同じ値が返ってきますが。
228 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 17:33:28 ] 文字通りなんじゃねーか? コンパネの電源管理には電源を切る時間しか出てないから実際には使われてないのかも
229 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 18:17:32 ] マウスとキーボードが10分間放置されたときに自動的に終了するアプリを作りたいんだけど、 マウスのほうは定期的に座標を調べれば動いてるかどうかわかるが、 キーボードの無操作を検知するにはどうしたらいい? 自プロセスはタスクトレイに入っているのみ。
230 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 18:21:54 ] スクリーンセーバーにしろw
231 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 18:28:58 ] 普通に考えたらジャーナルフックとかじゃないのか
232 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 18:58:09 ] >>229 普通にKEY_DOWN捕まえるだけじゃねぇか バカじゃねぇのプtゥtw フックが嫌ならGetAsyncKeyStateとかで
233 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 20:51:04 ] 無操作を検知するのにKEY_DOWNとな!
234 名前:デフォルトの名無しさん [2007/06/22(金) 21:14:34 ] >>233 はいはいアホアホ
235 名前:デフォルトの名無しさん [2007/06/23(土) 00:05:34 ] >定期的に座標を調べれば動いてるかどうかわかるが そもそもなんでこれでマウスが操作されてないかどうか解るんだ? 走査頻度にもよるが、同じ位置に戻ってたら動いてるかどうか解らないのでは? 移動せずにボタンだけ使ってるとかも解らない気がするし
236 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 00:15:12 ] フックでキーとマウスのイベントを取得して、 イベント発生ごとにタイマーをリセットすればいい。
237 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 01:45:52 ] なんという頭の良さ まるで天才ではないか
238 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 01:50:08 ] 初めからそう言ってるじゃねぇか
239 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 01:58:32 ] 最初の質問からして初心者過ぎるAPI以前の問題 下手なアプリ作ってPC壊さないようにね
240 名前:229 [2007/06/23(土) 02:03:56 ] フック限定ですか? アッパーとかでは無理でしょうか?
241 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 02:17:28 ] ハートブレイクショットならいけるかも
242 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 02:50:08 ] 瞬獄殺ならおk
243 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 02:59:57 ] >>240 フックもできないお前にアッパーは無理だろ ドライバ書いた事有るのか?
244 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 12:17:51 ] ブルースクリーン直行が落ちだろうな。 悪いこと言わないから、スタンバイか休止状態で妥協しとけ。
245 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 13:19:25 ] WindowsでおよそのLoad Averageを計算したいのですが、処理待ちのプロセス数はどうやって求められますか?
246 名前:229 mailto:sage [2007/06/23(土) 14:12:18 ] KEY_DOWNを使ったのですが 自分のウィンドウがアクティブじゃなかったので 取れませんでした 騙したわね!!
247 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 14:23:18 ] 自分のウインドウしかとらないように作れば当たり前だろ。 なんでそんなに頭が悪いんだ?
248 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 14:35:01 ] だから教えるだけ無駄 親切に教えてやっても騙されたと思うんだぜ
249 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 14:42:45 ] マウスカーソルの下にある文字列を取得する方法ってない?
250 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 14:50:58 ] ある
251 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 15:05:14 ] ないあるよ
252 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 17:07:40 ] >>245 パフォーマンスカウンタ。 ThreadオブジェクトのThread Stateカウンタにスレッドの状態が出るから、 自分で全スレッドのインスタンスに対して状態をチェックして集計しる!
253 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 17:09:12 ] LISTBOXにADDSTRINGする場合、文字列のデータはWindowsがコピーして管理してくれるんですか?
254 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 17:19:15 ] MSDN見ろよ…
255 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 17:19:44 ] ∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ >>253 ( \ / _ノ | | .\ “ /__| | \ /___ /
256 名前:249 mailto:sage [2007/06/23(土) 17:26:03 ] >>250 サンクス
257 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 17:51:25 ] >>253 そう
258 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:45:37 ] HWND既知のあるウィンドウが閉じられるときそのWM_DESTROYを取得するために、 サブクラス化というのを使えば出来そうだという所までは分かりましたが書式が分からないので このページのサンプル ttp://www.wisdomsoft.jp/dev/api/windows/064 LRESULT CALLBACK WndProc()内 の rect_box = CreateWindow{......}; の部分を rect_box = FindWindow("Notepad",NULL); //メモ帳のハンドル と書き換え LRESULT CALLBACK StaticProc() のswitch内に case WM_DESTROY: と追加しても メモ帳終了時のWM_DESTROYが取得できていないようです。 どのようにすれば正常に動くのでしょうか?
259 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:57:12 ] それ別プロセスのは無理よ
260 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 20:24:50 ] ファイルにNTFS圧縮かけるAPIってある? EFS暗号化ならあるのに、こっちがわからん。
261 名前:258 mailto:sage [2007/06/23(土) 21:08:59 ] >>259 あのサンプルでは出来ないんですか。 サブクラス化するという手段自体が間違ってますか?
262 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:13:37 ] 間違ってはない フック使えばサブクラス化でもできる
263 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:17:12 ] >>260 FSCTL_SET_COMPRESSION しらべれ
264 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:10:05 ] ねーねー ほかのプロセスが開いてロックしているファイルを 横から開くにはどうすればいいのん?
265 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:10:58 ] それ可能なのか?そんなことできるならロックの意味がないような・・
266 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:14:25 ] プロセスを終了させる
267 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:20:55 ] リードだけなら出来たりしないのかな? 試しにエディタで開いてみたら 書き込めませんよーってエラー出たけど開くのだけは出来たよ
268 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:26:45 ] そのプロセスが FILE_SHARE_READ でファイルを開いてたんだろ。 0 だと読み取りも書きこみも禁止される。
269 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:42:07 ] つかCreateFileの引数の解説読んでれば想像付くけどな
270 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 13:09:39 ] それようのモードがあったのか ありがと^^
271 名前:デフォルトの名無しさん [2007/06/24(日) 15:05:41 ] ちょい質問。 Win2000、XPで Windows+M押下時と違って Windows+Dを押した時何かのフラグが立ったみたいで なんとかforeground();関数で ウィンドウを最前面にもってこれないんだけど 方法わかる方いたら教えてください。。 よろしくです。
272 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:04:38 ] せっかくしまったのに余計なことをしないでください。
273 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:15:36 ] ウィンドウズ乙
274 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:23:40 ] WinXPにおけるメモリマップドファイルについて質問なのですが、 ・HDDのファイルがメモリに複写されているわけではなく、あくまで仮想的なアドレスをファイルに割り振っているだけ。 よって、メモリにマッピングした直後はメモリはそれほど消費しない。 ・マッピングされたファイルを書き換えた情報は一端メモリに蓄積され、マッピング終了時にHDDのファイルへ反映される。 なので、マッピングされたファイルにデータを書き込めば書き込むほどメモリの使用量が増えていく。 という解釈であっているのでしょうか?
275 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:24:30 ] 読み込むだけでも消費した気がする
276 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:39:01 ] >>274 基本的にはそんな理解でいいと思う 細かい動作はページングファイルと同じように考えればいいはず メモリが足りなくなってくればHDDへ書き出される(読み取りしか行っていないなら捨てられる) メモリが余ってくれば読み込まれてゆく
277 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:46:24 ] 自前のコンソール画面を作りたいのですが、 APIで簡単に作る方法ってありますか?
278 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:49:39 ] AllocConsoleじゃなくて自前で一から作りたいって事?
279 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:54:58 ] eclipseのコンソール見たいのが作りたいです
280 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:57:27 ] エディットコントロールにでも流せばいいじゃない
281 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:09:19 ] WM_SETTEXTですか?
282 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:32:17 ] エディットコントロールの追記なら最後尾にカーソル移動してEM_REPLACESELを投げる 背景を変えたければ親でWM_CTLCOLOREDITを受ける
283 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:36:59 ] printfでエディットコントロールに書き込めるようにはできませんか?
284 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:40:06 ] stdoutを受け取って回送させるか、バッファに入れてから再度送りつけるか好きなようにやれ。
285 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:42:19 ] できますがスレ違いですね。 汎用化でも目指しているんですか? それともコーディング能力不足ですか。
286 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:07:41 ] printf使いたいってのはコーディングする側の問題だろ sprintfした文字列をエディットコントロールに追加すればいいじゃん
287 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:15:44 ] printfの出力先を変えられればコンソール・ウィンドウ両対応が簡単かなと思ったんですが やっぱりそこまでは無理ですか…
288 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:30:17 ] だから無理じゃないってば API以前に言語の勉強をしなさい。
289 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:35:08 ] その(頭の)現状では無理だな
290 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:49:46 ] >>288 stdoutをAllocConsole使う時見たく変えるってことですか? 何を指定すればエディットに流せるか分からないのはやっぱ知識不足なのかorz
291 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:56:41 ] もしかしてEM_STREAMOUTが関係ありですか?
292 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:06:08 ] Windowsプログラミングなんてバッドノウハウの数が技量に直結するから 「これかっ?」っと思ったことは片っ端から試してみるのも自分のためになると思うぜ
293 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:19:11 ] と言ってもfreopen以外に変える方法知らないんですけど…
294 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:21:37 ] メモリマップファイルは使いにくいね。 1つは、 SetProcessWorkingSetSize()で最大ワーキングセットサイズを設定しても、多量にメモリを食って、他のプロセスに優しくない。 かといって、SetProcessWorkingSetSize(,-1,-1)を頻繁に呼ぶのも美しくなく、 かといって、リンカに/WS:AGGRESSIVE付けても、なんだかなぁ、と。 もう1つは、 いまどきのハードディスクはシーケンシャルにアクセスしないと速度が出ないため、 メモリマップして任意にメモリアクセスすると、ランダムアクセスになってしまうこと。 結局、シーケンシャルスキャンのヒント付けて、各ページの先頭を触って、 予めメモリに読みこんでおくという作業が必要になってしまう。
295 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:22:26 ] >>293 知らなければ調べろよ。
296 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:31:46 ] 今時メモリの消費量とかHDDの消費量を考えるのは不毛な気がする リークで不安定になるとかだったら分かるが
297 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:35:49 ] 勘違いしてる人がもう一人
298 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:44:15 ] >>294 とりあえずそのあたりを調べてみます
299 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:51:42 ] ぐぐっても6件… MSDN引くか… 俺のチラ裏にしちゃってもいいけどAPI一つでできることならそれだけ教えてくれるとありがたい
300 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:55:11 ] 誰お前
301 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:02:02 ] SetStdHandleか!
302 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:57:11 ] >>299 ここは、お前のための、チャット会議室じゃないんだぞ。
303 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 01:04:56 ] >>296 > 今時メモリの消費量とかHDDの消費量を考えるのは不毛な気がする そう思っていた時期も(AA略 パフォーマンスに無頓着なプログラムは、ハードウェアがどんどん速くなっても、その恩恵を受けられないことが多い。 というのも、ハードウェアの速くならない部分の性能に依存してるから。
304 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:57:13 ] MSDNにVistaのAPIが続々追加されてる ほとんどVista専用で邪魔だ 言語フィルタみたいにOSでフィルタリングしてくれないかな
305 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:57:59 ] Vista以前のOSにしがみついてる奴らをフィルタリングすればいいんじゃね?
306 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 07:15:15 ] そんな子としたら儲からない
307 名前:デフォルトの名無しさん [2007/06/25(月) 08:27:20 ] SetWindowsHookExでとれるHHOOKをGetWindowsHookExみたいなのでとれないですか。 ThreadIdから自分にかけられているHOOKとか人にかかっているHOOKとかを知りたいです。
308 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 08:38:26 ] SetWindowssHookExをAPI-Hookしろ
309 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 09:17:51 ] お前ら、フック大好きなんだな。
310 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:00:23 ] 彼女フック出来ないからAPIフックして憂さ晴らしてると思われ。
311 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:50:00 ] >>310 彼女とするのはファックだろ
312 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 12:49:05 ] >>311 鼻フックの間違いじゃね?
313 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 12:53:51 ] 何この流れ。これが月曜の流れか
314 名前:229 mailto:sage [2007/06/25(月) 16:40:07 ] 229です。 ちなみに240は僕じゃありませんがそれはさておき。 ご意見参考になりました、ありがとうございます。 グローバルフックでWH_MOUSEとWH_KEYBOARDを定期的にチェックし、 システムタイマを取得して更新するみたいな感じですかね。 OSがスクリーンセーバを起動するのには同様の処理をしてるのかな。 それに使ってる「最終操作時刻」みたいのがどっかから取得できれば、 グローバルフック使わなくて済むんですが。 無いかなあ。。。
315 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:52:10 ] だから「最終操作時刻」を提供する側になれ それとは別に、試しにスクリーンセーバー作ってみ
316 名前:229 mailto:sage [2007/06/25(月) 16:57:01 ] >>315 なんか勝手に初心者扱いされてますが、システムフックを書こうと思えば書けますよ。 ただ、OSが知ってるはずの「最終操作時刻」をとる方法、 もしくは無操作タイムアウトイベントみたいのを取得する方法が無かろうかと思って 最初に書いたようなプリミティヴな質問をしたわけです。
317 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:57:48 ] >>314 GetLastInputInfo
318 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:09:48 ] >>316 初心者ではないのなら、 最初から適切な質問のしかたをしろよ!
319 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:10:28 ] 相変わらずノイズの多いスレだな。 初心者は回答しなくていいんだぞ。
320 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:15:50 ] ていうかさ、MSDNライブラリ(またはPlatformSDK)のヘルプ見てから質問してるんか? ちょっと古い版で恐縮だが、 Platform SDKドキュメント →User Interface Services →Windows User Interface →User Input →Keyboard Input →Keyboard Input Reference →Keyboard Input Functions →GetLastInputInfo ここまで、迷うところは、ないぞ。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:17:01 ] 途中で俺が229の振りしてなごませたのに やっぱりこうなったか まさかアッパーなんて専門用語があるとは思わなかったがw
322 名前:229 mailto:sage [2007/06/25(月) 17:18:22 ] >>317 >>320 探してたのはそれです。僕が初心者でしたすいませんでした。 本当にありがとうございます。
323 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:35:02 ] これにて一件落着めでたしめでたし。 なんか逆転裁判おもいだした
324 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:37:13 ] アッパーワロタ
325 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:18:16 ] >>316 システムフックなんか書けて当たり前 >>322 初心者なんじゃんw
326 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:25:16 ] 鬼の首を取ったかの様に
327 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:34:54 ] しかしおまえら、 ママンとフックが好きだなw
328 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:39:39 ] 初歩的な質問させてください。 クライアント領域のサイズが640*480のウィンドウを作る場合、 WindowCreate関数の第6、第7引数を 640 + GetSystemMetrics(SM_CXDLGFRAME)*2 480 + GetSystemMetrics(SM_CYDLGFRAME)*2 + GetSystemMetrics(CYCAPTION) とすればいいんですか?(メニューやステータスバーはないものとする) というか、GetSystemMetricsの引数に SM_CXBORDERをいれた場合とSM_CXEDGEを入れた場合とSM_CXDLGFRAMEを入れた場合で ウィンドウのどの部分のサイズを指しているのかよくわかりません。 MSDNみても違いがわかりません。教えてください・・・
329 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:41:43 ] そういう用途では、AdjustWindowRectを使え、と昔 どっかで誰かが言ってたのを聞いた希ガス
330 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:19:57 ] 状況によってサイズが異なるので、適正なサイズになるまでリサイズを繰り返すしかない。 一発で計算するのは無理。
331 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:21:43 ] いや普通にAdjustWindowRect使えよ
332 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:36:14 ] AdjustWindowRectはメニューが2段になると縦のサイズが 合わなくなるが、縦を調節し直せば無問題。
333 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:37:09 ] AdjustWindowRectを使っても、メニューバーの折り返しの分までは 面倒を見てくれないとかそういう話かな?
334 名前:328 mailto:sage [2007/06/26(火) 01:16:09 ] なるほど、素直にAdjustWindowRect使えばよかったんですね。 無理してGetSystemMetrics関数を使うのはやめます。 ありがとうございました。
335 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 01:43:07 ] >>322 調節し直す必要があるかどうか判断できないんとちゃう? 判断するにはメニューに表示される文字列が必要だけどAdjustWindowRectは MENUの有無をBOOL型で渡すだけでHMENUを渡す設計になってない
336 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 03:28:12 ] >>335 AdjustWindowRectで使ったクライアント領域(A) サイズ調整後にGetClientRectで取得したクライアント領域(B) A>Bならメニューが複数行って判定できるんじゃね? 思いつきだが
337 名前:307 [2007/06/26(火) 08:21:21 ] >>308 回答、ありがとうございます。 SetWindowsHookExとSetWindowsHookにAPIHOOKをかける方法だとすでにフックがかけられている場合、みつけられないです。
338 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:39:02 ] フックを見つけてどうするの?
339 名前:307 [2007/06/26(火) 10:42:24 ] UnHookするとか情報を表示するとか。。。etc。 勉強中です。具体的には、dwThreadId = 0でフックをかけて、仕込んだHookDLLのアタッチで別のDLLを呼んで、 呼んだDLLにフックした処理を渡したりしてるんですが、 UnHookしてもなんでかデタッチが実行されておらず、デスクトップをフリーズみたいな状態にしてしまうんで、 Hookを仕掛けた状態とかを見たいとかいろいろです。 dwThreadIdに特定のスレッドを渡すとデタッチが起こるんで、調べる参考にしたいと。
340 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:24:25 ] グローバルフック登録時に SetWindowHookEx完了時から帰り値のHHOOKを共有メモリに格納する一瞬の間に コンテクストスイッチが発生しHHOOK格納前にフック関数が呼び出されるという可能性に対して とういった対策が可能でしょうか 現在のPSDKのドキュメントだとCallNextHookExの第一引数は無視される仕様に変わったようなので気にしなくてもいいのでしょうか?
341 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:22:47 ] ハンドルからリストボックスなのかコンボボックスなのか 判断するには、、どうやるのですか?
342 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:27:38 ] GetClassName
343 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:46:01 ] >>340 Mutexで排他制御。
344 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:56:41 ] >>342 ありがとうございました。
345 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:20:24 ] >>340 >>343 そのタイミングって排他制御する必要があるほどのものなのかね?
346 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:00:22 ] >>345 みたいな馬鹿は迷惑だからプログラムを書くな。
347 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:57:00 ] >>340 第一引数が無視になってるとは知らなかった・・・ 確かに >>Windows NT/XP/2003: Ignored. となってる。 ってことはNT系限定なら別に共有領域にハンドル置いといたりしなくてもいいのか?
348 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:08:52 ] >>345-346 「そんな事態は滅多に起こらないから無視していい」とかいうなら論外だが、実際MSの ドキュメントやサンプルでもそのような排他制御を組み込んでいないから、「そのタイミ ングでフック割り込みが発生することはない」という仕様になっているということは? SetWindowsHookExでWH_CALLWNDPROCをインストールした次の行でSendMessage してもフックは呼ばれるから、ほんとに一瞬しか待たないとは思うけど。
349 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:15:40 ] サンプルなんて手抜きに決まっているだろうに
350 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:25:05 ] じゃあ発生させてみろよm9(´Д`)プギャー
351 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:58:52 ] >>347 2000が抜けてるのが謎だな、どういう分類なんだろう
352 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:59:16 ] HHOOKを、無視されるCallNextHookExに渡すためだけなら むーてっくす張るコストが限りなく無駄じゃあないの?
353 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:45:08 ] >>348 > SetWindowsHookExでWH_CALLWNDPROCをインストールした次の行でSendMessage > してもフックは呼ばれる それは当たり前だと思う。 SendMessageなんだから。
354 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:49:56 ] >>353 地味にワロタ
355 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:50:32 ] ところでさ、 SendNotifyMessage ttp://msdn2.microsoft.com/en-us/library/ms644953.aspx に、 WM_USERより下のメッセージを送るときはスタック上のポインタを渡すな OSが引数のマーシャリングしてやるのは0〜WM_USERだけだぞ というようなことが書いてあって、矛盾してるぞ! と思ったのだが・・・ WM_USERより下というのは、 0〜WM_USER-1 WM_USER〜0x7FFF WM_APP〜0xBFFF 0xC000〜0xFFFF という並びで書いたときの、下、っていう意味なんだな・・・orz
356 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:57:01 ] winsockを利用してチャットの様に通信するソフトを試したのですが 自分のPC内で通信は成功したのですが ネットにでようとするとつながりません プロバイダから割り当てられているのが プライベートIPなので WAN側のIPを指定してみましたが これが問題でしょうか? (ルータ等は使っていません) ソースほぼここのサンプルまんまと考えてください www.geekpage.jp/programming/winsock/tcp.php よろしくお願いします
357 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:08:36 ] >>356 プログラム書く前にネットワークの勉強をしろ。 話はそれからだ。
358 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:27:31 ] >>356 ネットワークプログラミング相談室に来たら相手してもらえるかも
359 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:37:15 ] どっちかというと>>357
360 名前:デフォルトの名無しさん [2007/06/26(火) 22:43:33 ] いまさら聞けないインターネット入門とかみましたが SMTP,POPの仕組みとか広すぎてわけがわかりません><
361 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:45:42 ] >>360 結論だけ言ってしまうとグローバルIPが手に入らないと外部との通信は無理
362 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:56:55 ] やっぱりそうなんですか・・・orz 入門のとこ読んでるうちに WAN側のIPはグローバルらしいのでいけるかもって思ったのですが
363 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:58:57 ] WAN側ってISPのIPだろ。つーかスレ違い
364 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:00:41 ] >>357 いやいや、日本語の勉強をしたほうがいいと思う。 > winsockを利用してチャットの様に通信するソフトを試したのですが ソフト? 何か不安になる言い方。 > ソースほぼここのサンプルまんまと考えてください ソースはほぼここのサンプルのまま と言わないのは、 ソースはほぼここのサンプルのまま ではないからなんだろうか。 もしや、他人が作ったソフトの話をしているのではあるまいな? ちなみに、 サンプルから変えた場所に問題があることも考えうるので、 普通は、どこをどう変えたのか書くか、 短いのだから全部をコピペして示したほうがいいことが多い。
365 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:03:18 ] >>356 > 自分のPC内で通信は成功したのですが > ネットにでようとするとつながりません ネットって何だ。 インターネットのことか? なら、インターネットと書け。 切り分けとして、 同一PC上 同一LAN上 インターネット越し の3段階があるわけで、 まずは同一LAN上を試したのかな、と。
366 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:04:42 ] >>356 > WAN側のIPを指定してみましたが 何の「WAN側のIP」なんだ? 通信する相手は、どこにいるんだ?
367 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:06:55 ] 止めろお前らwwww
368 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:08:24 ] 最後まで責任持つつもりで弄ってるのか
369 名前:デフォルトの名無しさん [2007/06/26(火) 23:18:28 ] 通信相手というか IPなどを確認できるHPから入手した自分のIPをいれて 自分のPC→インターネット→自分のPCといった経路を試したかっただけです 確かに読み直すとわかりにくかったですね。 日本は世界でも一番難しい言語なのでお許しください >>363 さんの意見が正解みたいですね ありがとうございました
370 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:19:30 ] >日本は世界でも一番難しい言語なので なるほど、あんたにとっては日本語さえまともに使えないと言うわけだ。
371 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:24:19 ] 絡むなよ。長くなるだろ
372 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:28:24 ] >>369 つ推敲
373 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:33:22 ] >>369 君、香ばしいね。結構気に入ったよ、チュッ。またおいでね。
374 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:33:22 ] >>369 ルーターはそういう処理はしないよ
375 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:38:27 ] NATループバックとかいう、御節介をしてくれるルーターもあるけど、まぁあれだ。
376 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:44:17 ] >>369 本当にインターネットを介した通信のテストが必要なのかと小一時間。 その程度のプログラムなら、 LAN上の2台のPC(VirtualPC等でもいいよ)でテストすれば十分だ。 ていうか、場合によっては人様に迷惑をかけることにもなるので、 よくわからないうちはインターネットでテストしちゃいかん! 本当にインターネットでテストしないといけない場合は、 NTTのフレッツ系と、異なる2つのプロバイダを契約するとかしてだな・・・(以下略
377 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:44:56 ] >>364-366 まぁ普通に読めば分かるし、これは屁理屈というかうざいなw
378 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:45:21 ] 育ってきた環境が違うから〜スレ違いはしょうがない〜♪
379 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:50:05 ] >>377 トラブルシューティング系の質問の基本を叩き込んでおかないと。
380 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:52:18 ] >ソフト? >何か不安になる言い方。 これはないだろこれはw
381 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:46:21 ] EM_STREAMIN メッセージをリッチエディットに送信するときに GetStdHandleを渡してもコンソールの内容を読めないのはなんでだろ(´・ω・`)
382 名前:デフォルトの名無しさん [2007/06/27(水) 01:10:48 ] EM_STREAMINは標準ストリームから入力するわけじゃないから
383 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:14:51 ] もう少し詳しく書くと EM_STREAMINってのはリッチエディットコントロールのウィンドウプロシージャから アプリケーション定義の関数をコールさせてデータをストリーム入力するメッセージ 入力データはアプリケーション定義の関数内で自分で用意しなければならない 標準入力は全然関係ないよ
384 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:20:50 ] IStream と FILE *が混ざってるのだろうか?
385 名前:デフォルトの名無しさん [2007/06/27(水) 08:44:39 ] ウインドウハンドルからスレッドIDとプロセスIDはGetWindow〜で取得できるのですが、 スレッドIDから作成したウインドウハンドルを取得するAPIはありますか? 今はプロセスIDから取得したスレッドID、または、スレッドIDをEnumWindowで取得したスレッドIDと比較して 該当がないかどうか探しています。
386 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 08:56:56 ] GetWindowHandle
387 名前:デフォルトの名無しさん [2007/06/27(水) 08:58:10 ] ああスレッドIDからか。じゃあシラネ
388 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:07:29 ] >>386 お前、それ楽しいか?
389 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:19:55 ] EnumThreadWindows?
390 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:25:57 ] GetGUIThreadInfo?
391 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:30:19 ] そのものズバリ、が無いのは1つとは限らないからだ
392 名前:デフォルトの名無しさん [2007/06/27(水) 09:55:53 ] >>389 これですよこれ。 そのものずばりですね。ありがとうございました。
393 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:58:48 ] Enumは自分でもあげてるじゃん
394 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:00:12 ] EnumWindowがわかってて気がつかないってことは、 EnumWindowも人に聞いたんだろ。
395 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:09:54 ] IMEコンポジションウィンドウは使いたいが、IMEパッドは 使わせたくないという場合、パッドの起動を抑制する手段は あるでしょうか?
396 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 12:08:20 ] >>343 Mutexなどで待機した場合 SetWindowsHookExの内部実装次第でデッドロックしますよね?
397 名前:デフォルトの名無しさん [2007/06/27(水) 12:14:01 ] >>394 はエスパー
398 名前:デフォルトの名無しさん [2007/06/27(水) 12:16:52 ] いや、Windowsの開発関係者だろう
399 名前:デフォルトの名無しさん [2007/06/27(水) 12:36:51 ] そんなことより396
400 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 12:39:52 ] そんなことより400(σ・∀・)σゲッツ
401 名前:デフォルトの名無しさん [2007/06/27(水) 12:46:05 ] 目くそ鼻くそを洗う
402 名前:デフォルトの名無しさん [2007/06/27(水) 12:48:50 ] いいことじゃん
403 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 12:51:48 ] >>394 すぐ隣に並んでいるんだから、普通は、気がつくよな。
404 名前:デフォルトの名無しさん [2007/06/27(水) 13:04:07 ] 俺はすぐ隣に並んでいるあいつの気持ちさえ気がつかなかったよ
405 名前:デフォルトの名無しさん [2007/06/27(水) 13:18:16 ] >>394 おっしゃるとおり、EnumWindowsもGoogle先生に聞きました。 以後はMSDNの周辺等も調べてみます。
406 名前:デフォルトの名無しさん [2007/06/27(水) 14:58:12 ] プロセスIDからそのプログラムが どのような引数(CommandLine?)で動いてるか知る方法はありますか? WMIの「Win32_Process」で取れるのですが この方法だと「CommandLine」プロパティを見るのですが Windows Server 2000ではサポートされてないんです。 (Windows Server 2003以降、Windows XP以降でサポートらしいです) 諦めかけてたんですが「ProcessExplorer」ってソフトで CommandLineが見れるのでAPIで何とかなるのかと思い 質問しました。 よろしくお願いします。
407 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 15:02:26 ] フックで進入してGetCommandLineすればいいんじゃまいか?
408 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 15:27:15 ] >>406 ProcessExplorerはドライバまで使って色々やってるようだから、真似するのは大変よ。 プロセスのコマンドライン引数などの情報は、 プロセスのメモリ空間の決まった場所に格納されているので、 それをReadProcessMemoryで読んでしまうのがいいと思う。 どのアドレスに格納されているのかは、覚えてない。
409 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 15:29:16 ] NT系限定ならフックよりCreateRemoteThreadでのDLL注入のほうがローコストかもね 対象プロセスにウィンドウ無くてもいいし
410 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:00:47 ] >395 もお願いしますよ
411 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:12:07 ] コンポジションウィンドウって何だ?
412 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:21:09 ] >>396 例えば、どんな内部実装だとデッドロックすると思うの?
413 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:57:02 ] X Window SystemのLeaveNotifyイベントみたいな マウスカーソルがウィンドウから出た というのは、WM_* でいうと何に当たるんでしょうか?
414 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 13:25:29 ] >>413 WM_MOUSELEAVE 詳細はググって調べてくれ。普通は飛んでこないメッセージだから。
415 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 13:46:27 ] >>414 サンクス。流し読みした感じでは、自力で座標取得した方がいいかなこれは。
416 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 13:49:04 ] 自力って、、、スレッドでループでもさせんのか マウスキャプチャーしてるなら、こんな質問しないだろうしなあ
417 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 13:59:54 ] >>416 いや、古い環境では無理なんじゃないか?って意味。
418 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:07:19 ] 95とかNT3.1とか相手にしてるの? 大変だね
419 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:18:47 ] >>417 そういう意味か。 気にするほど最近の話でも無いみたいだけど、 昔はそういう目的にはキャプチャーだったなあ >>418 それは古すぎw 95はともかく、NTは3.51あたりで
420 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:28:39 ] 変動する数値をアイコンに反映させたい場合どうすればいいでしょうか? HBITMAPをHICON型に変換すればできそうなんですが、 方法も分からずもっと簡単な方法がありましたら教えて下さい。
421 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:24:21 ] >>420 そもそもそのアイコンはどこにどんな状態で表示するもの?
422 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:32:12 ] >>420 CreateIconで作るしかないんでない?
423 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:08:13 ] ありがとうございます。 >>421 タスクトレイのアイコンに数値でCPU使用率とか表示してるアプリがありますよね? あんな感じで変動する数値を表示できたら便利だと思ったのです。 >>423 その方法も調べたのですがビットパターンがよく分からなくて一度諦めました。
424 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:17:16 ] CreateIconIndirectするか、イメージリストに追加してImageList_ExtractIcon
425 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:21:15 ] >>411 IME使った時に文字がフロートする部分ね。 要はIMEは使いたいがその時MEパッドは起動してほしくないと。
426 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:20:56 ] >>424 ありがとうございました。
427 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:08:03 ] ちょっとお舞ら win32アピを利用して丸を描くプログラムを作ったんですよ ほかのウインドウが被ってしまったんだけど そしたらその部分が空白になっちゃったんだよ ウインドウの状態も保持しないてどんな仕様してんだよ 不良品じゃね?
428 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:10:01 ] おまえが描画したい状態を保存しとけばいいんじゃね? んでWM_PAINTが来たらまた描けばいいんじゃね?
429 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:16:16 ] ちょっとお舞ら >>427 って 不良品じゃね?
430 名前:427 mailto:sage [2007/06/28(木) 23:28:00 ] >>428 おれ記憶力わるいんで無理
431 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:28:37 ] 諦める これで解決
432 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:31:10 ] >>430 お前が記憶するわけではないのだからお前の記憶力などどうでもいい。 そのためのコンピュータではないか。メモリはたんまりとある。
433 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:51:56 ] >>430 おまえ頭わるいんで無理
434 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:03:53 ] >>423 ビットパターンって、普通にビットマップのはずだが ANDマスクは透過部分が1、透過しない部分が0のピクセルあたり1ビットのモノクロビットマップ XORマスクは透過部分が0、他は普通になカラービットマップ
435 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:29:57 ] >>433 うるせぇボケ死ね
436 名前:デフォルトの名無しさん [2007/06/29(金) 07:28:45 ] このスレ的に一人前とはどの程度? ヴぁかにされたくない。
437 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:47:24 ] >>436 馬鹿にされても怯まず開き直れたら君も立派な一人前だ
438 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:33:48 ] >>434 カラーはDDBなんでそう単純には行かないのだよ
439 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:34:33 ] >>434 つーか>>424 で解決してるのになんで蒸し返す
440 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 10:12:04 ] >>436 コンパイルに成功したらもう一人前
441 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 10:27:02 ] >>439 すまんね、アンカーなかったから気付かなかったよ まぁ参考ってことで
442 名前:デフォルトの名無しさん [2007/06/29(金) 13:04:54 ] 開き直りたくないんです。 ヤラレル前にヤラレナイような一人前はどの程度?
443 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:10:14 ] >>442 お前以外の程度
444 名前:デフォルトの名無しさん [2007/06/29(金) 14:36:20 ] >>442 442と443以外の程度
445 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:03:06 ] 「〜以外の程度」という単語に強烈な違和感を覚える。
446 名前:デフォルトの名無しさん [2007/06/29(金) 15:08:16 ] 442と443以外の程度の以外の程度の以外の程度 確かに・・・
447 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:09:18 ] 以上以下じゃなくて以外だからなあ・・・
448 名前:デフォルトの名無しさん [2007/06/29(金) 15:12:50 ] 442以外が一人前で442のみが一人前でないという意味か! ほんとうにありがとうございました
449 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:16:54 ] >>436 MSDNライブラリに載っていることくらい、質問しないで自分で解決できる程度。 ようするに、このスレが必要ない程度。
450 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:49:57 ] タスクトレイに表示されている他のアプリのアイコンのハンドルを 取得するかして、アイコンの画像を得たいのですが、できるでしょうか? 最悪タスクトレイ部分のビットマップでもいいです。
451 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:53:44 ] できますよ
452 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:56:26 ] 特定のファイルが存在するか確認したいんですが、 自動的に環境変数のパスを検索してくれる関数はないでしょうか?
453 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 16:16:00 ] >>452 環境変数のパスってPATHのこと? もしそうなら検索するファイルって実行ファイル? だったらFindExecutableとか
454 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 16:20:19 ] >>452 EnvironmentStrings系のAPIでも使って自分で検索して下さい
455 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 16:29:59 ] っと、実行ファイルそのものの検索なら SearchPath() だったな
456 名前:デフォルトの名無しさん [2007/06/29(金) 16:53:06 ] 変な人がいるので再投稿しますね… タスクトレイに表示されている他のアプリのアイコンのハンドルを 取得するかして、アイコンの画像を得たいのですが、できるでしょうか? 最悪タスクトレイ部分のビットマップでもいいです。 やり方を教えてください。
457 名前:デフォルトの名無しさん [2007/06/29(金) 16:55:02 ] 変な人? ググれば見つかるのに何を言ってるんだ低脳
458 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:16:58 ] >>453-455 ありがとうございました。 SearchPath()で戻り値がファイル名より長ければとしました。
459 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:58:26 ] >IMEの使用はそのままで、IMEパッドのみ起動を抑制する まったくレスが付きませんが、これは結局無理なんでしょうかね?
460 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:06:59 ] >>459 イメージわかないんだよねえ
461 名前:デフォルトの名無しさん [2007/06/29(金) 18:12:40 ] 最近のUACとかよくわかんないしうざいんだなー
462 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:44:59 ] >>459 多分無理だと思うが、そもそも何でそんなことがしたいんだ? IMEの変換ウィンドウなんか出さずにすべて自前描画しているような ゲームでさえ、IMEパッドは使えてしまうからなぁ。 IMEを自作しないと駄目だと思う。
463 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:46:37 ] SendMessage で WM_KEYDOWN/UP 送るときに、 VK_LBUTTON って送れない?
464 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:41:04 ] >>462 フルスクリーン時にフォーカスが移るのが イヤだったので、抑制したかったんですよね。 やっぱ無理なんでしょうね。
465 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:47:55 ] >>456 ゴルァ 1回の質問で複数のことを聞くな。
466 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:54:16 ] 変な人がいるので再投稿しますね…
467 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:02:38 ] >>464 HIDEすりゃいいじゃん
468 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:03:08 ] >>456 トレイのハンドル取ってDC取得してコピー これで分からないならこのスレではもう相手にされないよ −−−−−−−−終了−−−−−−−−−−
469 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:25:53 ] タスクバーを自動的に隠す設定にしている 俺への挑戦だな。受けて立とう。ちょんわちょんわ。
470 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:30:39 ] 関係ないよ
471 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 08:29:52 ] なんでこんな高圧的なんですか? 琴線に触れてしまいましたか・・・
472 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 08:31:59 ] 誰だお前
473 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 08:55:14 ] 琴線の使い方間違ってる。
474 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 08:58:25 ] 逆鱗と勘違いしてんだろうな。リア中かも名。
475 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 09:11:16 ] 俺の金銭に触れたら大逆鱗だぜ。
476 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 09:15:17 ] 逆鱗は小さいと思うんだ。
477 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:38:45 ] ぎゃくりんで変換されないんですけど本当はなんて読むんですか
478 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:39:16 ] ぎゃくうろこ
479 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:44:47 ] >>477 「逆鱗」で検索すれば判ると思いますよ。
480 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:54:18 ] >>477 メモ帳にコピペして「変換」キーを押せば分かる。
481 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 12:12:12 ] C#をつかってます。 ユーザーさんからあるAPIでEntryPointNotFoundExceptionがでるって報告があがりました。 まあぶっちゃけILCreateFromPath なわけなんですが MSDNには Minimum operating systems Windows 2000 とあって、そのユーザーさんはスクショからみるにXPなんです。 うちのXPでは動いてるんですが、ありえるんでしょうかこんなこと。 私がしでかした間抜けで不可解な未知のバグの可能性と、 その人のshell32.dllがぶっこわれてる可能性と どっちが高いでしょうか?
482 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 12:17:01 ] ジャンクション(フォルダへのシンボリックリンク)内にあるファイルの実体のpathを 取得する方法を教えてください。
483 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 12:24:47 ] 僕ハッカー
484 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 13:08:03 ] Win98でもXPに見せることはできる
485 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 13:24:48 ] >>482 DeviceIoControl使えば取得できる。
486 名前:デフォルトの名無しさん [2007/06/30(土) 15:06:27 ] PROCESS_INFORMATIONの、dwProcessIdか、dwThreadIdからウィンドウハンドルを求めたいんですが、 方法ありますでしょうか、情報ありましたらよろしくお願いします。
487 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 15:14:18 ] ものすごくありふれた情報だけどググったの?
488 名前:デフォルトの名無しさん [2007/06/30(土) 15:55:36 ] スレも検索してないだろ。昨日か一昨日見たぞ
489 名前:486 [2007/06/30(土) 17:59:00 ] コメントありがとう御座います。 ひととおり検索はしてみたのですが情報が多く期待した情報が見つけることが出来ませんでした。 できましたら、検索キーワードだけでも教えていただけないでしょうか。 よろしくお願いします。
490 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 18:03:09 ] 具体的に何で何を検索したのか言ってみろよ
491 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 18:13:23 ] >>489 えぇ〜!?どんだけ〜(ry
492 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:04:48 ] >>489 >>223
493 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:47:12 ] 385じゃね
494 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 20:07:09 ] >>489 なんでお前の代わりに俺がスレを読み直さないといけないんだ? やることはわかってんのに、なんで自分でやらないの?
495 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 20:25:57 ] 無知の無知に愛の鞭
496 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 20:28:45 ] >>485 どうもありがとうございます。これから調べてみます。
497 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 21:22:24 ] >>481 エントリポイント名を ILCreateFromPathW に変えてみる、とか。 家のXP SP2のshell32.dllはA、W、無し(=W)と3つエクスポートされてるけどなあ。
498 名前:486 [2007/06/30(土) 21:29:04 ] さくっと、検索キーワード教えて頂けませんでしょうか。
499 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 21:32:29 ] PID2HWND これでぐぐればおkじゃん?
500 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 05:29:22 ] うぜーから放置で
501 名前:デフォルトの名無しさん [2007/07/01(日) 09:39:03 ] DllMain の DLL_PROCESS_ATTACH でLoadLibraryしたら× DllMain の DLL_PROCESS_DETACH でFreeLibraryしたら× とMSDNにあります。 Dllの利用元に処理をしてもらうわけでなく、何かの関数を呼んでもらうわけでなく、 DllのATTACH時に別のDllを動的にLoadLibrary〜初期処理、DETACH時にそのLoadしたDllを終了処理〜FreeLibrary する実装の代替案ってどういうふうに書いたらいいですか? 設定ファイルにかかれたDllファイル名からを動的にDllから読み込んで、 前処理しておいて、設定毎に処理を変更する動作をつくりたいんです。 いまのところATTACH時にLoadLibraryして、DETACH時にFreeLibraryするのを作ったんですが 問題がでてないんですけど、MSDNにすんなってかいてあるんで・・・。 初めてDLLのなにかの関数が呼ばれたときにLoadLibrary〜前処理するってのは無しで。
502 名前:デフォルトの名無しさん [2007/07/01(日) 09:55:13 ] やっぱ初めてDLLのなにかの関数が呼ばれたときにLoadLibrary〜前処理するってのは有りで。
503 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 09:56:56 ] 確か他のDLLが初期化途中だとループする可能性があるから駄目なんだったかな A初期化中にBをロード→B初期化中にCをロード→C初期化中にAをロード→・・・ みたいな DLL_PROCCESS_ATTACHが処理を返してからなら参照カウンタが増える (カウンタが1以上ならDLL_PROCCESS_ATTACHは投げられない)からループしない
504 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 10:44:44 ] 質問なんですけどダイアログで使えるコントロール(タブとかシークバー)を自前のWindowで使いたい場合はどうすればいいのでしょうか? CreateWindowで作れるコントロールの中には無いっぽいのでどうすればいいか困ってます。
505 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 10:53:35 ] commctrl.h
506 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 11:33:25 ] >>501 CoInitialize/CoUninitializeみたいに別途初期化・終了処理の関数を用意したり、 暗黙的リンク(必要に応じて遅延読み込み)したり。
507 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 11:57:39 ] Microsoft Platform SDKとはなんですか? これだけでほかの開発環境なくてもプログラミングできるのでしょうか
508 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:10:29 ] >>507 Windowsアプリを作るうえで必要になるライブラリ群。 ライブラリなので、当然これだけでは何も作れない。
509 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:15:58 ] ここは既にプログラミングの環境が構築できてる、 あるいはできるという条件の元でWin32APIについて質問するスレです。 環境の構築ができてないレベルだと、>507の質問に回答が出ても理解できないかもしれないが そこまで面倒見れない
510 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:23:08 ] そうですか WIN32APIとはまた違ったものなんですね
511 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:26:28 ] まあでもWin32 APIを使うためのヘッダやインポートライブラリと、 ドキュメント・サンプル・ツールなんかが入っているセットと言えばいいかな。 でも、今はWindows SDKになったが。
512 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 13:19:04 ] >>507 百聞は一見に如かず 無償でダウンロードできる代物なのだから、 とりあえずインストールしてみて、 HDDにコピーされたファイル群を眺めてみれ。 必要かどうか分からないなら、とりあえず、 潰してもいい環境にインストールすりゃいい。 潰してもいい環境を用意できないようなら、 HDDに十分な空き容量とVirtualPCを。
513 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 13:20:18 ] Windows SDKはコンパイラ・リンカが付いてくるよ。
514 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 14:07:20 ] Windows SDKのコンパイラは /analyze が付いてるよ。
515 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:04:39 ] ファイルをドラッグ&ドロップして起動した時に、 そのドロップされたファイルを読み込ませたいのですが、 lpCmdLineを引数にfopenしてもオープンできません。 どうすれば読み込ませられますか?
516 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:08:34 ] それでできないことはないはず。 まずは試しにlpCmdLineを表示させてみな。
517 名前:515 mailto:sage [2007/07/01(日) 16:23:37 ] 表示してみました。 "C:\Documents and Settings\〜中略〜\aa.mp3" 正しいパスが表示されてるっぽいです。
518 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:31:49 ] 「"」を取り除け
519 名前:501 [2007/07/01(日) 16:42:33 ] IDないと502にみたいな偽者がでてくるのか・・・ >>503 そうなんですよ。でも別の代替の処理を考えつかないんです。 >>506 暗黙的に行うと、DLLのパスが設定ファイルから渡して動的ロードできないので使ってないです。 CoInitialize/CoUninitializeはなんで制約がないのか調べて見ます。
520 名前:515 mailto:sage [2007/07/01(日) 16:57:26 ] いけました。本当にありがとう。
521 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:59:45 ] >>519 すみません、代替処理見つからないなんて釣りだと思いました。
522 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 20:40:22 ] >>514 マジですか。お得ですね。 VSのコンパイラをSDKのものに差し替えたくなりますな。
523 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 20:45:14 ] >>519 CoInitialize/CoUninitializeの話は、 DLL_PROCESS_ATTACHでLoadLibraryするのではなく、 そのDLL特有の、LoadLibraryなどの初期化処理を行う関数をExportして、 それをDLLを使う側に呼んでもらうことにする ってことかと。
524 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 20:48:38 ] >>517 CommandLineToArgvW とか使ってパースしる!
525 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 21:00:45 ] ANSI考慮するなら__argc,__argv。 標準ライブラリが必要だけど
526 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 21:38:43 ] >>519 プログラム側でロードが終わった時点で初期処理すればいいだけのような気がするんだけど CreateでロードしてんならLoadLibraryが処理返してから初期処理とやらをすれば良いじゃん
527 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 21:52:59 ] >>514 まじで?! 70万だして買っちまったよ・・・
528 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:00:15 ] まじだよ。/? すると -CODE ANALYSIS- /analyze[:WX-] enable code analysis WX- - code analysis warnings should not be treated as errors even if /WX is invoked って出る。バージョンとかは同じだけど、付属のバイナリ群はdiffとるとどれもちがうっぽい。 まあ使い方わかんないし、最近Cやってないから必死こいて調べないし、スレ違いだけど
529 名前:デフォルトの名無しさん [2007/07/01(日) 22:19:48 ] >>523 >>526 そのやりかただとフックとかしかけたときにそのDLLの アタッチ時に別のDLLを呼べない。 というわけで初めてCALLBACKされたときに初期化するしかなくなる。
530 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:32:41 ] >>529 >というわけで初めてCALLBACKされたときに初期化するしかなくなる。 これが正しいんだと思うが 適当にメッセージ投げろよ >そのやりかただとフックとかしかけたときにそのDLLの >アタッチ時に別のDLLを呼べない。 グローバルにフック仕掛けてたら必要ないプロセスに無駄なDLLロードすることになるじゃん
531 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 23:26:12 ] お前ら。 DLL作るときは、ロードアドレス、ちゃんと設定しとけよな。 VCとかのデフォルト値のままだと、リロケートすることになるし、仮想メモリ空間をぶった切ることになるぞ。
532 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 23:31:02 ] どっちにしろ、デフォルト1000:0000でグローバルフックする ような連中もいるんだから無駄 仮想メモリがぶった切られるったって、MS純正のDLLとしてが 4000:0000とかに存在する現状では寂しい限り。
533 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 23:36:45 ] 64bitいや128bitの時代はまだか
534 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 23:37:46 ] 128bitになるころは画面はホログラムになってますか?
535 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 23:50:29 ] >>532 行儀が悪い輩がいるからといって、自分まで行儀悪くしてどうするよ。 人様が作った行儀が悪いDLLはReBaseでベースアドレスを変更しちまえ。
536 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 00:41:53 ] どのへんに置いとくのが適切なのかわからん
537 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 00:46:11 ] >>536 MSDNライブラリ等で ReBaseImage のところに説明がある。
538 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 00:59:03 ] Comboboxのedit controlを取得するのってGetWindow(コンボのハンドル, GW_CHILD)しかない? ComboboxexならCBEM_GETEDITCONTROLがあるんだけど、、 Comboboxで安全にeditを取得する方法があるのなら、知ってる人いませんか?
539 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 01:27:39 ] CB_GETCOMBOBOXINFO
540 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 02:02:06 ] >>539 ずばりのもの、ありがとう。解決しました。 MSDNをみるとCB_GETCOMBOBOXINFOはXp、 windows2000では、GetComboBoxInfoが使えますね。
541 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 02:46:42 ] >>528 Windows2000環境にインストールしようとして断られた・・・orz ちなみに、どのバージョンのWindowsSDKなのか教えてもらえると助かります。
542 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 11:14:35 ] >>541 因みに、私は教えてあげません。
543 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 11:46:53 ] /analyzeというか、PREfastには2種類ある。 先にDDKで提供されていたドライバ開発者向けと、 後からVCの上位版に提供されたアプリ開発者向けが。 Windows SDK付属のコンパイラで使えるのは前者だけだったりしてね。
544 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 14:05:50 ] >>543 ちょっと試してみたけど、VSTS付属のものと同じ出力だった。 Windows SDKの方はコマンドラインからしか試してないけどVS連携はまあきつそうか。 以下テストコード。タブを全角に変換してるので注意ね。 #include <CodeAnalysis/SourceAnnotations.h> #include <windows.h> [returnvalue:SA_Post(MustCheck=SA_Yes)] double CalcSum ([SA_Pre( Null=SA_No )] double* source,unsigned int size); double CalcSum (double* source, unsigned int size) { double sum = 0; for( int i = 0; i < size; ++i ) sum += *source; return sum; } int f() { double buf[100]; for (int i = 100; i >= 0; i++) buf[i] = i; CalcSum(buf, 99); return (int) 1; } int main() { wchar_t buf[255]; GetEnvironmentVariableW(L"PATH", buf, 256); return f(); }
545 名前:544 mailto:sage [2007/07/02(月) 14:10:04 ] 続き。 上のコードのコンパイル結果。 c:\test>cl test.cpp /analyze Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. test.cpp c:\test\test.cpp(14) : warning C6292: Ill-defined for-loop: counts up from maximum c:\test\test.cpp(14) : warning C6201: Index '100' is out of valid index range '0' to '99' for possibly stack allocated buffer 'buf' c:\test\test.cpp(15) : warning C6031: Return value ignored: 'CalcSum' c:\test\test.cpp(14) : warning C6386: Buffer overrun: accessing 'buf', the writable size is '800' bytes, but '808' bytes might be written: Lines: 13, 14 c:\test\test.cpp(21) : warning C6202: Buffer overrun for 'buf', which is possibly stack allocated, in call to 'GetEnvironmentVariableW': length '512' exceeds buffer size '510' c:\test\test.cpp(21) : warning C6386: Buffer overrun: accessing 'argument 2', the writable size is '510' bytes, but '512' bytes might be written: Lines: 20, 21 Microsoft (R) Incremental Linker Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. /out:test.exe test.obj
546 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 14:58:39 ] ?
547 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 15:29:42 ] >>545 これって、VCProのcl.exe関連を差し替えて、SDK付属のCodeAnalysis関連ヘッダもコピーしてやればIDE上で使えるんだろか
548 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 15:37:33 ] ファイル差し替えなくてもディレクトリ設定変えてやればいんじゃね? IDE上での設定UIは無いだろうから手動でclのパラメータ追加しないとだめだろうが。
549 名前:544 mailto:sage [2007/07/02(月) 16:12:09 ] >>547 すまんがVC++Proはすぐに使えるところにないのでその辺の検証は誰かやってちょ。 あとはまあコード分析とかそんなにしょっちゅう使わなくても たまにとかリポジトリにコミット前にとか自動テスト前とかでもいいんじゃね? とか。 vcbuild.exeをうまいこと使うと自動化できるんじゃなかろかと。
550 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 17:38:37 ] VC++Proの場合。 VC++ディレクトリの「実行ファイル」に C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin を追加し、これを優先度一番上に。 (x64なら...\v6.0\VC\Bin\x86_x64) 同じく「インクルードファイル」に C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\INCLUDE を追加し一番上に。 あとはプロジェクトオプションで「構成プロパティ」-「C/C++」-「コマンドライン」で 「追加のオプション」に「/analyze」を記述してやればいい。 本格的なアノテーションまではチェックしてないが、簡単なバッファオーバーラン検出 程度は動作しているのを確認。 ちなみにこれDebugビルドでは使えるがReleaseビルドでは使えないという認識でOK? 厳密にはAPIの話題ではないが、Win32 APIの引数や戻り値チェックもしてくれるのでとりあえず。
551 名前:501 [2007/07/02(月) 19:35:00 ] DLLロード後に初期化処理関数をDLLロード側から呼んでもらうようにします。 >>503 >>506 >>521 >>523 >>526 >>529 >>530 レスポンスありがとうございました。
552 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 22:49:54 ] Analysisってそんなにすごいものなの? 70万もだしたというひとがいたが
553 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:00:05 ] >>552 Analysisだけに70万ではないし、 プロ用の開発ツールが高価なのは普通のことだから。 RationalのPurifyとか、 CompuwareのDevPartnerStudioとか、 かなりの金額するでしょ。
554 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:20:11 ] たとえ趣味でもつぎ込む人はつぎ込むしね
555 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:43:15 ] 現在開いてるページのURLとタイトルを取得したいのですが、 そのような関数がございましたらご教授下さい。 たとえばここでしたら、 タイトル→Win32API質問箱 Build54 URL→pc11.2ch.net/test/read.cgi/tech/1181645965/ と、獲得したいです。
556 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:46:56 ] 脱力
557 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:57:42 ] >>555 FindWindowEx使って力業で探せ
558 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:06:31 ] 何でもAPI一つで出来ると思うな
559 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:11:19 ] 普通IWebBrowser2使うだろ
560 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:13:48 ] >>559 IEとは言ってない。 意地悪な解釈ではあるがな。
561 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:18:57 ] つーか >現在開いてるページのURLとタイトルを取得したいのですが、 >そのような関数がございましたらご教授下さい。 この質問通りに答えるなら「無い」が正解
562 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:33:13 ] >>560 「現在開いてる」というのを詳しく。 何が、誰が、 そういう情報がゴッソリ欠落しているぞ。
563 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:37:27 ] >>560 どういうわけか、 インタフェースとしてではなく、クラスを指してIWebBrowser2という人達が多いのです。 IEそのものや、既存のIEコンポーネントを使ったプログラムに対してではなく、 タイトルを取得するためだけに、新たにIEコンポーネントを使い、 URLのドキュメントを取ってこさせ、タイトルを取得するという手もなくはないです。
564 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 06:50:32 ] ダイアログベースのアプリで、キーリピートのときに鳴り続ける警告音を消したいのですが どうしたらよいのでしょうか。
565 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 08:47:12 ] もっと詳しく書かないと。
566 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 10:00:17 ] WM_KEYDOWNのLPARAM見てリピートが1より大きかったらメッセージ潰せばいいんじゃね
567 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 10:58:12 ] そのダイアログのせいで鳴ってるの? キューいっぱいとか。キーメッセージ握りつぶしてる?
568 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 11:04:29 ] メッセージポンプを自分で止めている可能性もあるな。
569 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:13:46 ] >>561 IE6まではDDE使って取得できたんだがな、IE7以降これが動作しなくなった しかしFirefoxやOpera等使われていたら動かないわけで。 2chスレに限って言えば専ブラ使われていたらだめなわけで。
570 名前:562 mailto:sage [2007/07/03(火) 12:33:58 ] アンカーミスしてました。 >>562 は>>555 あてです。
571 名前:デフォルトの名無しさん [2007/07/03(火) 13:16:38 ] そんくれーわかるっつの
572 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 08:16:50 ] >>550 ちょwww 俺のPro版、なんかアナライズしてるww
573 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:11:47 ] IEでグーグル開いたときに検索窓でますよね あそこに文字列をいれるのにいい方法ってありますか? キーダウンで擬似的にキーボードおされた状態ってのはうまくいったのですが たまに失敗したり、一文字ごとにウェイトいれないとだめなのでちょっと・・・ セットウインドウテキストが良さげなので 全てのIEの子ウインドウハンドルに送ってみたのですがまったく反応ありませんでした
574 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:23:51 ] フォームに入力するのVBのサンプルならいっぱいある
575 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:24:58 ] Google限定なら別のアプローチのがよさげ
576 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:27:29 ] どうでもいいけど「キーダウン」とか「セットなんとか」とか 強烈に読みづらいから素直にアルファベット表記してくれ。 あとIEのテキストフォームはデザインがWindowsと同じってだけで IE独自の実装してるからテキストボックスに見えて テキストボックスじゃない。 API通していじるのは諦めた方がよさげ。
577 名前:573 mailto:sage [2007/07/04(水) 09:32:47 ] あ、ウインドウのタイトルが変わりましたw これ面白いですね そうなんですかどうりで反応しないわけだ VB覚えようかな
578 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:41:48 ] 1.クリップボードに好きな単語を入れる 2.C-V を送る でいいじゃん? 俺だったらそんな面倒くさいことせずに、 検索語を別の窓から入力させて、結果をIEで開くように作るが。
579 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:55:31 ] あ、クリップボードも試してみたのですが 効かなかったから・・・ハッ!Σ(゚□゚;)!! その貼り付けたには気づかなかったorz 別窓のは技術が高くないと無理かと
580 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:58:50 ] IE上のコントロールはドロップダウンリスト以外は全部ウィンドウハンドル持たないIEの独自描画。
581 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:04:28 ] いや、www.google.com/search?&q=hoge とかを そのままシェルに渡してやればいいだけだと思うんだが…
582 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:06:42 ] 別窓作って文字入力 入力文字をURLエンコードして連結 シェルに渡す
583 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:08:05 ] _人人人人人人人人人人人人人人_ > な なんだってー!! <  ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ 試行錯誤したのが馬鹿みたいだ
584 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:16:16 ] そうだね。
585 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:18:45 ] 試行錯誤すること自体は無駄じゃないよ
586 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:26:35 ] 質問の仕方がわるいんだからしょうがない。
587 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:39:00 ] どうしても、IE上のコントロールを制御したいと言うなら、 ↓スレあたりが参考になるやもしれん IEコンポーネントを使い倒すスレ Ver.2 pc11.2ch.net/test/read.cgi/tech/1145189322/
588 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:40:49 ] >>576 読みづらい以前に、 特別なキーワードを、 言い換え可能な普通の言葉で書いたら、 わけわかんないよ。 WM_KEYDOWNではなく、他のものかもしれないと気をつけて読まないといけないから。
589 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:42:35 ] >>577 VBでやると簡単だが、VBでしかできないわけじゃない。 Win32APIには、Cスタイルのものと、COMのものがある。 VBはCOMを扱うのが楽。VCだと慣れるまで面倒。 VB6ならともかく、VB.NETでやるくらいならC#でやりなされ。
590 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:57:36 ] いやあ日本人なのでカタカナの方が読みやすいかなと思ってw しかし天才がいるもんですね cgiとかってのに直接送ってるみたいなもんでしょ?驚きました
591 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 11:00:28 ] >>590 日本語版のMSDN に 「WM_KEYDOWN」 が 「キーダウン」 と書かれたらすげー迷惑 発音しているものが動作を指しているのか、特定のキーワードなのかを即座に区別できねーじゃん
592 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 12:58:05 ] プログラムの定数的なのは、別に英語でもそのまま定数で書くよw
593 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:11:46 ] ダブリューエム_キーダウンと書くかWM_KEYDOWNとするかは 翻訳者の自由だぁ〜〜!! 予約語いずフリーダム♪ ハイ一緒に!
594 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:16:14 ] 消えろ
595 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 14:20:11 ] キーダウンと書いたのを見て、実際にキーを押した事だと思ったよ・・・
596 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:50:55 ] こんにちは、ちょっとした疑問の解決作を教えてください。 エディタをサブクラッシングしようと思い、以下のコードを書きました。 WNDPROC OldEditProc; LRESULT CALLBACK EditSubProc(HWND,UINT,WPARAM,LPARAM); ... OldEditProc=(WNDPROC)SetWindowLong(hEdit,GWL_WNDPROC,(LONG)EditSubProc); しかし、これだとデフォルトの警告レベルで、warningが2つもでるんですよね・・・。 ( 『LRESULTからLONGに切り詰めます』 というのと、『LONGからWNDPROCへ変換します』 というもの ) これ、どうにかしてwarningを取る方法は無いでしょうか? ご教授御願いいたします。 環境はWinXPPro-sp2 ,VC++.NET です。
597 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:04:20 ] 何故warningになるのか考え、それの対処を調べるんだ ヒント:64bit
598 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:28:42 ] >>596 #include <atlwin.h>した上で、SetWindowLongではなく、SetWindowLongPtrを使え。 その際、そのLONG型のキャストをLONG_PTR型へのキャストにする必要がある。。 msdn.microsoft.com/library/ja/jpwinui/html/_Win32_SetWindowLongPtr.asp <atlwin.h>をインクルードする理由は、<windows.h>をインクルードしただけだと、 32ビット版でのSetWindowLongPtrがあまりにもお粗末なので、 結局警告が表示されることに変わりがないから。
599 名前:596 mailto:sage [2007/07/05(木) 00:32:56 ] おぉ〜凄いっ! 教えていただいた通りにやってみると、warningが出ないです〜っ!! 大変参考になりました。 本当にありがとうございました。 m(。−_−。)m
600 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:26:11 ] int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int); これを int APIENTRY WinMain(); こういう風にしたんですが、できませんか?
601 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:37:22 ] できません
602 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:40:38 ] できます
603 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:42:48 ] できますん
604 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:43:56 ] つかわないんならなくてもいいだろ
605 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:44:06 ] できます
606 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:01:44 ] APIENTRYだから、できませんね。 __cdeclならできるんだけど。
607 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:33:23 ] できます
608 名前:デフォルトの名無しさん [2007/07/05(木) 13:34:51 ] あぴえんとりー
609 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:44:52 ] キチガイが住み付いてるな。
610 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:53:45 ] 自己紹介乙
611 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:53:54 ] 自分で分かってるなら大丈夫だから安心していいよ
612 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:54:48 ] ワレワレハ、ウチュウジンダ
613 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 14:08:55 ] そういえば言語言ってなかった・・・ C言語なんですがやっぱ無理かったです 本当にありがとうございました
614 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:16:05 ] プログマーが日本語おかしいのはヤバイ 数学より国語的な能力が必要だとおもう
615 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:17:37 ] プログマー
616 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:19:02 ] 釣られるプロだクマー
617 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:20:19 ] プラグマー
618 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:21:26 ] >>617 差し替えで簡単に置きかえられるプログラマー?
619 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:23:10 ] #pragmar
620 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:25:44 ] プギャー
621 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:37:07 ] まるで動物園だな、ここは
622 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:34:57 ] 人間だって動物さ
623 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:31:04 ] マ板は釣り易いことで有名くま
624 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:33:42 ] プラモデルみたいなプラグラマ
625 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:35:36 ] >>624 語源は両方ともギリシア語だけど、出所が違うの。 スレ違いだからほどほどに。
626 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:38:06 ] プログマー笑ったwwwwwwwwwwwwwww
627 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:45:13 ] 面白くない。いい加減にしとけ
628 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:08:47 ] ウィンドウのタイトルバー上のホイール操作で ウィンドウを半透明にできるユーティリティを作りたいんだが システムフックしてDLL上でコードを長々と書いて一応できることはわかった。 だけどexe側で処理させたいのだが、なにかよい方法はないだろうか? exeに、呼び出されたDllのインスタンスハンドルを送ってそこで明示的な関数ロードとかやったけどできなかったよ
629 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:00:07 ] 今市意味が分からないんだけど ホイール操作を捕まえて半透明化するサブクラス化用のプロシージャを書いて フックを入れてからサブクラス化すればいいと思う
630 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:36:59 ] >>628 そういう機能のWindowTPというソフトがあるが、自分で作りたいだけ?
631 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:12:13 ] >>629 おk、サブクラス化試してみるわ ありがと >>630 今作ってる奴の機能の一部として搭載予定。 まぁ自己満足だけどね ありがとー
632 名前:628 mailto:sage [2007/07/06(金) 03:28:14 ] ('A`)・・・・? techtips.belution.com/ja/vc/0026/ >指定されたウィンドウの属性を変更する SetWindowLong() は、 >指定するウィンドウが呼び出し側のスレッドと同じプロセスに属していない場合に失敗します。 これを信じて四苦八苦してたのに 自身のexe側から他のプロセスのウィンドウを半透明化できちゃったぞ・・・? う〜む・・・
633 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:25:29 ] そんな古い上にどこの馬の骨が書いたか分からんようなサイト見ずに、MSDN読めよ。 msdn2.microsoft.com/en-us/library/ms633591.aspx > Windows 95/98/Me: The SetWindowLong function may fail if the window specified by the hWnd parameter does not belong to the same process as the calling thread.
634 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:45:15 ] Dllから呼び出したダイアログにXPスタイルが効かないんだけどなんでだかわかる? manifestやらcomctl32やらをexeの設定方法でやってんのがダメなのか…。 わかんなくて頭爆発しそうなのでそろそろ米国行きの飛行機に乗りに行きます。
635 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:51:55 ] どうぞ。
636 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:52:50 ] そのDLLを呼んでるEXEの設定はどうなのよ
637 名前:634 mailto:sage [2007/07/06(金) 15:08:31 ] >>636 最終的に写真屋のフィルタ(8bf)にするDLLなんでナカミはよぅわからんのです。 ただ、さっき「猫でも〜」の外部DLLからダイアログ呼ぶプログラムでも 試してみたけどコレもダメだったので 写真屋のAPIの問題っつーより私の問題らしいです。
638 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 15:52:17 ] >>634 ISOLATION_AWARE_ENABLEDについて調べるんだ
639 名前:634 mailto:sage [2007/07/06(金) 21:29:52 ] うおおおおおおおおおお! プリプロセッサにISOLATION_AWARE_ENABLED書いただけで うまくいきましたッ! >>638 ありがとーーーーーーー! 愛してるッ!
640 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:21:54 ] きんもー☆
641 名前:デフォルトの名無しさん mailto:age [2007/07/07(土) 08:08:18 ] 任意のプロセスがCreateFileしたファイルのパス、それを取得する方法て何かないですか? 使用OSはVistaです フィルタドライバ書かなきゃいけないんでしょうか?…
642 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 08:26:24 ] CreateFileのAPIフッ(ry
643 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 08:52:36 ] DLL側から、呼ばれているプロセスのIDかウインドウハンドルを取得するにはどうすればいいですか? FindWindowでウインドウタイトル指定して取得していたんですが、 多重起動されたらだめじゃんってことに気が付いて・・・・ おしえてくださいm(_ _)m
644 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 09:05:30 ] 普通に自分のプロセスIDを取得しろよ。 DLLをなんだと思っているんだ?
645 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 09:43:56 ] >>642 VistaでAPIフックしたら実行時に警告出ませんか?
646 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:31:26 ] >>644 普通にプロセスIDを取得する方法を教えてくださいm(_ _)m
647 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:33:33 ] GetProcessID()
648 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:35:14 ] www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3D1FBAED-D122-45CF-9D46-1CAE384097AC
649 名前:デフォルトの名無しさん [2007/07/07(土) 10:44:49 ] >>646 GetCurrentProcessId() 名前からしてそのものズバリな訳だが このくらいググれ
650 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:54:50 ] >>645 > VistaでAPIフックしたら実行時に警告出ませんか? そりゃあドライバでも一緒だと思うが?
651 名前:デフォルトの名無しさん [2007/07/07(土) 10:56:57 ] 人を利用する事しか頭に無い奴に回答をくれてやるな。
652 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 12:05:24 ] 32bitVistaだとドライバの場合ロゴとらないとWindowsの動作自体に制限かかるんだっけ? 64bitだとフックもドライバも現実的じゃないよな
653 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 12:15:12 ] いつも思うんだけど なんでこんなにフックしたい奴が多いんだ
654 名前:デフォルトの名無しさん [2007/07/07(土) 12:23:35 ] フックで躓く奴が多いんだと思われ 別に集まりたくてフックしたい奴らばっかり集まってるわけじゃないでそ
655 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:42:09 ] あやしげなソフト作ろうとしてんだろうな
656 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 14:36:33 ] >>649 ググるよりも前に、PlatformSDKのヘルプ、または、MSDNライブラリだろう。 検索してもいいし、普通に目次から辿っても見つけられる。 ていうか、普通に目次から辿って見つけられないのは、よほどのアレだぞ。
657 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 14:41:47 ] >>653 質問のしかたを見ると、厨房くさい やろうとしていることを見ると、怪しい >>555 あたりなんかは、 特定のサイトにアクセスしているときだけキーログを取ろうとしている とも見れるしなぁ。 怪しいプログラムを書くなら、人に聞かずに自力で何とかしろってんだ。
658 名前:デフォルトの名無しさん [2007/07/07(土) 15:09:00 ] するどい人だな。まったく想像できなかったぜ
659 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:10:52 ] >>653 そりゃあ2ちゃんだから釣り師が多いんだろ
660 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:55:26 ] 上手い事言ったつもりかも知れんが面白くない
661 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:45:07 ] 俺窓プログラム作って初めて実用的なの作ったのはフック使ったネトゲーツールだったな 調べながら実装したし窓プログラムの根本的な概念もそんな理解してなかったから コードはめちゃくちゃ汚かったが勉強にはなったな。 そうこうしながら1年後あたりにAPIフック使ってパケット取得ツールも作ったわ。 APIフックは俺がしょぼいからだろうが4ヶ月かかってやっとできたんだけどなw フックぐらいはちょっと頑張ればすぐできるだろ。 人に聞くのが悪いとは言わないが、フックに関しては 参考サイトいっぱいあるんだから自分で調べようぜ。 特に目的が限りなく黒に近いものを作るんならなおさら。
662 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:48:36 ] 単なる物臭か根性無しだろ どうせヒマ人が答えるんだしいいじゃねーか別に
663 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:49:53 ] オレには真っ黒にしか見えないが、 そういうことをやってる当人には灰色に見えるんだろうな
664 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:56:14 ] ためしに検索したらたくさんでてきた しょぼいキーロガー程度ならすぐできるな
665 名前:661 mailto:sage [2007/07/07(土) 22:06:04 ] >>663 まあ真っ黒だわなw ただ、そういうの作る奴が全部俺みたいな考えだとは思わないが 俺自身はネトゲーツール作って使おうという思考よりも 技術的な勉強をする為にそれを作ろうっていうのが どっちかって言うと大きかったな。 それの作成にあたっての動機付け(動機があったほうが頑張るから) が欲しかったからたまたまやってたネトゲーをターゲットにした感じ。 まあ、ここはそういう議論スレじゃないから以降これに関しての発言はしない。
666 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 22:15:24 ] 逆だろ。 升ツール作る為に技術的な勉強をする必要があったんだろ。 まぁ一般的な解凍ツールやブラウザとかは既に便利なものを作ってるヤツがいるからな 自分が利用する便利なツールで世の中に出回ってないものしか作ろうとしたら 真っ黒なツールしかねーんだろうけど。
667 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 22:18:43 ] フックが真っ黒ならTClockすら真っ黒だし 悪用できる技術=悪じゃないでしょ スレ違いも程々にしとけ
668 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 22:23:16 ] 犯罪幇助にしか使われなくなったら京都府警がUSER32.DLLを取り締まるから無問題。
669 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:30:04 ] >>668 京都府警じゃ信用ならん 神奈川県警にしとけ
670 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:34:47 ] フックは夢が広がるから困る
671 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:36:08 ] いい加減にしろ
672 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:00:38 ] いい加減にしろ
673 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:06:15 ] どうもありがとうございました。
674 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:25:49 ] フックってなんだよ素人の俺に説明しろ
675 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:26:15 ] ヒント:船長
676 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:34:23 ] ガッツ石松の左
677 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:49:02 ] ワロスw
678 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:23:45 ] 上岡龍太郎
679 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 02:42:57 ] こんな時間に人がいるとは思えないが。。 リソースファイルを使わずにアイコンをロードして使いたい場合 CreateBitmapを使えばいいんでしょうか? それとも他にアイコン専用のAPIがあるんでしょうか?
680 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 04:04:32 ] 意味が分からない。 ファイルから読み込むならLoadImage使え。 作るならCreateIcon使え。
681 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:29:42 ] LoadIcon
682 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:36:43 ] WinAPIを勉強しようと思いWindowsゲームプログラミングという本を読みながら勉強 してるんですが、この本の通り打ち込んでもエラーでコンパイルできないところ があります。 このソースなんですが何故でしょうか?すみませんが教えてください(´・ω・`) ソフトはPlatformSDKをインストールしてVisual C++ 2005でやっています #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { BYTE * bytes = "BYTE *"; PBYTE pByte = "PBYTE"; LPBYTE lpByte = "LPBYTE"; MessageBox(NULL , bytes , NULL , MB_OK); MessageBox(NULL , pByte , NULL , MB_OK); MessageBox(NULL , lpByte , NULL , MB_OK); return 0; }
683 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:39:25 ] >>682 どう見てもスレ違いです
684 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:42:38 ] ごめんスレ違いだったのか
685 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:57:34 ] >>682 たぶん、コンパイラ設定だろうね。 エラーさらしてみ
686 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:57:53 ] >>682 まず質問として何のエラーかを明確にしてくれないと困る。 それのソースはCか?C++か? Cだとしたら値を代入する前に型宣言を最初に全てやってないと コンパイル時エラーになったと記憶してるが。 BYTE * bytes = "BYTE *"; PBYTE pByte = "PBYTE"; LPBYTE lpByte = "LPBYTE"; BYTE *byte; PBYTE pByte; LPBYTE lpByte; byte = "BYTE *"; pByte = "PBYTE"; lpByte = "LPBYTE"; ※但し、実験してないから間違ってるかもしれん(そこまで保証する義理はないが) 環境がVC2005ならMessageBoxの第二引数の型をキャストしないと警告も出ないか?
687 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:08:57 ] > Cだとしたら値を代入する前に型宣言を最初に全てやってないと > コンパイル時エラーになったと記憶してるが。 ブロック冒頭の変数宣言時の初期化する/しないは自由です。 /* cでもOK */ void test() { int n1; int n2 = 1; int n3; int n4 = n2; :
688 名前:688 mailto:sage [2007/07/08(日) 11:12:17 ] >>687 ああ、宣言時は可能だったっけか
689 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:13:54 ] >>682 マジレスすると拡張子がcじゃなくてcppだから 俺、2冊も買っちゃったし良本だよな がんがれ
690 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:17:35 ] 全部見当違い。 2005のデフォルトのオプションを考えれば分かるだろ。 なんでここはこんなに馬鹿しかいないんだ?
691 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:23:25 ] >>690 バカ筆頭の人が言うと、 さすがに迫力がありますね
692 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:28:06 ] 僕バッカー
693 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:28:26 ] >>685-686 スレ違いなのにありがとうございます。 ソースは.cppのC++です。事前に宣言してみましたが無理でした エラーは、ちゃんと文字型の宣言に入れろ。ってことかなと思ってますが本でも CDに入ってたサンプルもこの通りだったのでやっぱり問題はコンパイラの設定でしょうか? 試しにCHAR型で宣言してやってみたらそれならうまくいきました 文字数制限にひっかかったのでtxtですみませんがエラーです ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4549.txt
694 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:28:35 ] 底の浅い知識すらも持っていないくせに、 確認すらしないで適当を並べる馬鹿は何とかならないのか?
695 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:31:55 ] MessageBoxWが呼ばれてるのかなゃ
696 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:32:48 ] コンパイルオプションに/J
697 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:32:54 ] >>689 ごめんなさい更新する前に書き込んでしまって見てなかった まさしくそれでした… .cに変えたらちゃんとコンパイルしてくれました これからコツコツ勉強して以降と思います。みなさんありがとうございました
698 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:34:56 ] 書籍のサポートは作者がやるべきだよな
699 名前:689 mailto:sage [2007/07/08(日) 11:37:50 ] いえーいあたった。 お前らジュース一本だ 690はパンも買って来い
700 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:40:48 ] なんでcppじゃダメなん? 上位互換じゃないの?
701 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:48:09 ] 型チェックが厳しくなってるから
702 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:50:00 ] 2重引用符で囲った文字列はリードオンリーになるので、 constが必要。 また、BYTEはunsigned char型であって、char型とは別物。 const BYTE* bytes = "BYTE *"; なら通る。 MessageBoxA(NULL, reinterpret_cast<char*>(bytes), NULL, MB_OK); なら通る。
703 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:52:22 ] ちゃうわぼけ
704 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:53:27 ] >>682 エラーが出ます教えてください という人に限って、 エラーメッセージを読んでない。 しかも、 エラーメッセージをコピペしない。 エラーメッセージによっては難解だったり、 本当の間違いを指していなかったりするが、 少なくとも>>693 のtxtのエラーメッセージは、 非常に親切で適切なものだから、 エラーメッセージを読めば分かる。
705 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:12:21 ] エラーメッセージって 的を得ないことが多いのと 一般的に言っても不親切なのは なんとかなりませんかね?
706 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:21:16 ] 中に人が入ってるわけじゃないから 文句言うだけ無駄
707 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:23:07 ] >>705 的を得ないならいいじゃないか。的を得たら射掛けられちゃうぞ。
708 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:24:54 ] >>705 そりゃぁ、お前さんの書いたコードが「的を得てない」からだろう。 コンパイラが、わけわかんねーぞ、というのは、わけわかんないコードを食わせるからだ。
709 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:43:56 ] VC++のエラーメッセージなんて随分質が高いと思うけどねぇ まぁC++でテンプレート絡みのエラーメッセージがイミフなのは そういうもんだとあきらめれ
710 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:51:05 ] 的をもらいました やったね!
711 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 14:02:37 ] まぁ、エラーメッセージは、直訳みたいなので英語でおkみたいなのはあるw
712 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 15:27:07 ] 夜店の射的の話。的は人形だったり。
713 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 15:33:57 ] タブコントロールを作ってそれをデバッグ(@err,hr)でみてたら ERROR_NO_IMPERSONATION_TOKEN 現在、クライアントを偽装していないスレッドが・・・・ とかいうエラーが出てくるんですがこれの意味に心当たりがある方は 教えていただけないでしょうか?
714 名前:501 [2007/07/08(日) 17:20:57 ] 会社でよくいそうな堅物っぽいやつが 見当違いとか、知識が無いとか、確認してないとか がんがってかっこつけたのに結果をだされてるのにワロタ いいものを見せてもらった
715 名前:501 [2007/07/08(日) 17:23:11 ] 俺の質問も相手してくれよ
716 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 17:40:59 ] >>715 >>551 で終わっていないの?
717 名前:デフォルトの名無しさん [2007/07/08(日) 17:44:20 ] ウインドウにボタンをはっつけて、 ウインドウのWM_PAINTでBeginPaintしてウインドウを真っ黒に塗りつぶしても、 ボタンは塗りつぶされないのですが なんでかチラチラします、これはどういう仕組みでしょうか?
718 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 17:56:34 ] ボタンはゲイツ仕様だから
719 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 18:55:17 ] そういう仕組みだぼけ
720 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:14:17 ] 実装に興味があるならwineかReactOSがオヌヌメ 後者のほうが詳細まで追えるからオヌヌメ
721 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:31:23 ] その前に基本的なことを勉強
722 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:38:04 ] >>717 >>717 がボタンも含めてウィンドウを真っ黒に塗りつぶした後、Windowsがボタンを描いているから。 黒く塗ってあとから書き直したら、そらチラチラするわ。
723 名前:デフォルトの名無しさん [2007/07/08(日) 19:50:37 ] ボタンを塗りつぶすとWINDOWS法違反によって逮捕されますから 辞めた方がいいですよ
724 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:50:51 ] >>717 そりゃぁ背景を黒く塗っても、手前にあるボタンは塗られないよ。 ボタンまで黒く塗りたければ、ボタンをオーナードローで黒く濡るべし。
725 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:35:06 ] つーか、ボタンがチラチラしない方法が知りたいんじゃないの?
726 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:07:04 ] ボタンの所だけクリップ領域から外せばいい
727 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:20:38 ] WS_CLIPCHILDREN
728 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:55:07 ] Enterで通知がくるIDOKを別の定義IDに切り替えたいんですが 何か方法はありますか? 因みにダイアログじゃないです
729 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:58:07 ] IDOKが来たら切り替えたい定義IDをSendする
730 名前:728 mailto:sage [2007/07/08(日) 23:06:07 ] >>729 !? 盲点だったそんな簡単なことも気づかなかったのか俺orz 教えてくれてありがとうございます。
731 名前:729 mailto:sage [2007/07/09(月) 00:09:55 BE:99304122-2BP(0)] おいw ジョークだよな?
732 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 12:46:20 ] いいえ本気です
733 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 12:49:23 ] 「本気」と書いて「マジ」と読む
734 名前:デフォルトの名無しさん [2007/07/09(月) 14:22:56 ] up
735 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:34:50 ] ヘルプみたさに プラットフォームSDK入れてみたんだけど hxsファイルってどうやってみればいいんでしょうか?
736 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:47:15 ] ドキュメントエクスプローラー、かな? ついてなかった?
737 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:19:09 ] さがしてみます。ありがとう
738 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:44:47 ] さがしたけどなかった。次は一時間後にさがしに行くです。
739 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:47:21 ] 普通に入れたら、スタートメニューに登録されるよ。
740 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:25:11 ] すみませんさっき気づきました ぐぐったりVCいれたりといろいろってみましたが まさかこれ系がスタートメニューに登録されるとはorz
741 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 03:12:58 ] USBゲームパッドを使いたい場合はwin32apiでは対応できませんか? やっぱダイレクト系しかないんでしょうか
742 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 04:57:38 ] joyGetPos
743 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 05:02:51 ] いいことおもいついた、お前俺のケツのなかにションベンしろ!
744 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 05:28:12 ] ウホスレは間に合ってます
745 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 09:24:01 ] >>742 ありがとうございます これマルチメディアの欄にあったりして なかなか見つからない
746 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 10:37:23 ] Windows3.0 MMEを思い出した
747 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 11:49:46 ] >>745 マルチメディアAPIのジョイスティックAPIはゲームポート接続想定した仕様だからおすすめできない。 (認識軸数、ボタン数に制限)
748 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 20:49:32 ] >>747 アナログ6軸、ハットスイッチ1つ、32ボタン対応してるから十分だと思うが。
749 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:05:10 ] 突然だけどLocalFreeって使わない方がいいのか? LocalFree使うぐらいならHeapAllocとか使った方がいいとか言う 記事があったもんで。それとHeapAllocとVirtualAllocの使いどころは 大体確保するメモリがどのくらいを目安にすればいいのかね。 そういうレス見たこと無いから参考までにお前さん方の意見聞いてみたい。 因みに俺はLocalAllocが簡単に使えるからそっち使ってる。 後mallocに関してはAPIじゃない(最終的にHeapAlloc呼んでるみたいだが) から省いてくれい。
750 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:07:21 ] >LocalFree使うぐらいならHeapAllocとか使った方がいいとか言う記事 なんだその腐った記事。
751 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:18:29 ] >LocalFree使うぐらいならHeapAllocとか使った方がいい わろた ところで VirtualAlloc HeapAlloc でぐぐったか ttp://www.geocities.jp/i96815/windows/win11.html
752 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:24:06 ] >>749 俺はAPI関数を直接呼ぶとしたら、確かにHeapAlloc/VirtualAlloc系というつもりでいる。 「Local/Global関数ではなく、Heap関数を使え」とは、MSDNライブラリにも書いてある。 msdn2.microsoft.com/en-us/library/aa366723.aspx msdn.microsoft.com/library/ja/jpmemory/html/_win32_localalloc.asp 特に移動可能メモリなんて今では利点も必要性もない。 //でも実際はクリップボードなんかでGlobal関数を多用する現実。 //Heap関数を直接使わずmallocやnew、std::vectorを使う毎日。 でも、どうせどうせメモリ確保なんて時間のかかることだし、 Local/GlobalからHeapに変えて速度向上するようなアプリケーションがあったら、 メモリ確保の戦略自体を見直すべきで、 わざわざHeapに変える必要なんてないなんて言う奴もどこかにいた。 でもこれから書くコードで必要がなければあえてGlobal/Local関数を選ぶ理由もないはず。 ところで、VirutalAllocを使う目安はMSDNライブラリによれば1、2MBから。 msdn2.microsoft.com/en-us/library/aa366597.aspx
753 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 23:24:54 ] なんとなく気になってCRTのソース読んでみたのだが、 VC2005のリリース版CRTのmallocは、HeapAllocに直結してるのな。 CRT内部で改めて分割して使っていると思い込んでたよ。
754 名前:デフォルトの名無しさん [2007/07/12(木) 00:11:18 ] crt no source ha iduko?
755 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:16:52 ] >>754 Visual C++ならVisual C++のフォルダ(bin, include, libなどがあるフォルダ) にあるcrtというフォルダ。ただし、Expressには付属していない。
756 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:06:41 ] GlobalAllocとLocalAllocの違いがわからない
757 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:15:16 ] ここにわかりやすい解説が konuma.txt-nifty.com/blog/2006/03/heapallocvirtua_5d49.html
758 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:15:35 ] Win16では、nearポインタ・farポインタの違いがあったが、 Win32では違いなし。 もしかしたら9xではだめかもしれないが、 NTでは、GlobalAllocしたものをLocalFreeすることすら可能なはず。
759 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:35:59 ] Windows 3.1 SDK のヘルプからコピペしてみた。Win32では殆ど無意味だけど。 Global memory is all memory in the system that has not been allocated by an application or reserved by the system. Local memory is the memory in the data segment of a Windows application.
760 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:51:49 ] LocalAllocは内部でHeapAllocと同じ事してるんだろ確か
761 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 02:35:41 ] ぶっちゃけ、何かの理由がない限り、 HeapCreate()の引数dwMaximumSizeには0を指定するわけで、 ということは、HeapAlloc()で巨大なメモリを確保しようとしたら、 自動的にVirtualAllocに飛ばされるわけで、 意識してVirtualAllocを呼ばなくてもいいんじゃないかな。 それどころか、C++ なら 何か理由がない限り、new 一択だろう。 もしヒープの速度がネックになるようなら、 ヒープ上ではなくスタック上に取れるようなアルゴリズムを検討すべき。 自分は遅いプログラムのチューニングをしていて、 ヒープの速度がネックになっているのを見たことがないよ。
762 名前:デフォルトの名無しさん [2007/07/12(木) 08:28:40 ] >>755 thank u. express dakara nakata
763 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 14:49:19 ] Local/GlobalAllocって、戻り値が専用型なもんで、「解放する方法が明確に解る」 って理由で外部にAPI公開するDLLなんかでは採用してる例がある。 確かにポインタだけ返して「解放はVirtualFreeで」とかいう仕様だと勘違いで 他の解放関数に渡してしまうケースが無いともいえない。
764 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 14:59:06 ] >>761 >自分は遅いプログラムのチューニングをしていて、 >ヒープの速度がネックになっているのを見たことがないよ。 漏れもそんなのは見たことないが、malloc/free 系と memcpy 系の 関数を差し替えるのは、ほとんど手間がかからずある程度の効果が 期待できるのでまず手始めにやっちゃうな。
765 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:00:00 ] そんな怪しい挙動するくらいなら、解放するAPI用意したほうがいいと思うんだけどなぁ・・・
766 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:05:04 ] IMalloc/CoTaskMemAllocはどうよ
767 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:09:25 ] COM のときは使うな CoTaskMemAlloc 。
768 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:12:36 ] >>761 それはプロファイラに捕捉されてないだけだと思うぞ。 ヒープは頻繁に呼ばれるので、僅かなコストが積もって大きくなる。 InitializeCriticalSectionAndSpinCount()のスピンカウントの説明を読めば片鱗が知れよう。 とはいえ、下手なアルゴリズムやコーディングによる遅さに比べれば、微々たるものだが。
769 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:16:19 ] カーソルの影って、APIでオンオフはできるんですけど、そもそもシステムカーソルにしか 適用されませんよね。 とあるアプリで独自のカーソルにも影が付くのがあったんで、リソースを見てみましたけど 元カーソルは影付きではありませんでした。 影を付けるAPIみたいなのはあるんでしょうか?
770 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:16:46 ] >>768 google mallocの話とか、読み物としてはおもしろいからなぁ。 ttp://slashdot.jp/comments.pl?sid=364575&cid=1172165 まあ初心者の手の届かないところに保管しておくべき話だけどね。
771 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:27:02 ] >>770 gccやglibcにパフォーマンスを要求すること自体が間違ってる。 ポータブルでフリーであることが目的で、ちゃんと動けば十分という代物なんだから。 ついでに言うと、 unixの世界ではプロセスをポコポコforkする文化が長かったし、 フリーのOSはSMP性能が悪いのが普通だった。 パフォーマンスよりも、動くこと、簡単なことが優先されてた。 バグの原因になるのでmallocしたメモリはfreeするな なんて真顔で言う連中が跋扈していた世界だから。
772 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:29:36 ] >>771 過去がどうであれ、今それを真顔で言われてもわりと困るんだが。
773 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 18:00:59 ] 要は、Linuxの世界は後発であるが故に遅れている、ということ。 もちろんLinux上で走るからといって、glibcを使う必要はないわけで、 フリーだろうがプロプライエタリだろうが、別のライブラリを使えばいいだけのこと。 ただ、何でもかんでも別のライブラリを使うのが良いとは限らない。 Windowsのバージョンが上がると、 MSVCRTやOSのヒープマネージャが、 より現状のPC環境に向いたものに変るので。
774 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 18:14:22 ] Unixについて言ってるのかLinuxについて言ってるのかはっきりしろと。
775 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 18:18:23 ] ていうかスレ違い
776 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 18:22:26 ] IDEのバスをリセットする(RESET#端子をアサートする)方法を教えてください。 IDEのデバイスに対してDEVICE RESETコマンドを送ることはできたのですが、 いざデバイスがハングアップした状態では、コマンドも受けとってもらえないわけで。
777 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:48:02 ] Documents and Settings\ユーザー名\NTUSER.DATとかの OS可動中に開けないファイルを読み込み専用で良いので 開く方法を教えてください。 破壊がないか定期的にチェックをしたいので。
778 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:54:30 ] ACPIが有効なPC上で、CPU温度を定期的に取得する方法を教えてください。 以下のvbsを実行すれば温度を取得できるのですが、 一定間隔で実行しても温度に変化がありません。 (OS起動時に一度だけ取得してる様に見える) なんとか更新させるか、別の方法がないか探してます。 cputemp.vbs------------------------------ Set fs = CreateObject("Scripting.FileSystemObject") Set outFile = fs.CreateTextFile("CPUtemp.txt", True) Set wbemServices = GetObject("winmgmts:" & "\\localhost\root\wmi") Set wbemObjectSet = wbemServices.InstancesOf("MSAcpi_ThermalZoneTemperature") For each Item in wbemObjectSet outFile.WriteLine "CPU Temperature: " & (Item.CurrentTemperature - 2732) / 10 & "°C" Next outFile.Close cputemp.vbs------------------------------
779 名前:デフォルトの名無しさん [2007/07/12(木) 21:15:07 ] みんなやたら高度だな
780 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:43:08 ] PatchGuardてIATへの書き込みもガードするんですか? カーネル領域でないのにガードされるんですか?(´;ω;`) 教えてエロい人(´・ω・`)
781 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:43:20 ] >>777 2003 Server以降なら、シャドー・コピーという手がある。 XPの場合はAPIとして表には出ていないがntbackupが使っている。 ダサい方法だが、ntbackupを子プロセスとしてキックして、 目的のファイルにバックアップ取って、 すぐさまntbackupで別の場所にリストアするという手がある。 ちなみに、 CreateFileでFILE_FLAG_BACKUP_SEMANTICSつけてダメだった?
782 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:19:02 ] >>781 色々ありがとうございます。 SE_BACKUP_NAME、SE_RESTORE_NAMEの特権を取得した後、 { HANDLE h; h = CreateFile("C:\\Documents and Settings\\user\\NTUSER.DAT" ,GENERIC_READ ,FILE_SHARE_READ ,0 ,OPEN_EXISTING ,FILE_FLAG_BACKUP_SEMANTICS // FILE_ATTRIBUTE_NORMAL| ,0 ); if (h != INVALID_HANDLE_VALUE) { printf("pass\n"); CloseHandle(h); } else { printf("ng\n"); } } の様にしましたがダメでした。 ntbackupの方法も検討してみます。
783 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:33:25 ] ちなみにGetLastErrorのコードは CreateFile 20h:プロセスはファイルにアクセスできません。別のプロセスが使用 中です。 でした。
784 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:35:30 ] FILE_SHARE_WRITEとFILE_SHARE_DELETEも付けたほうがいいよ。
785 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:37:19 ] FILE_SHARE_WIFEとFILE_SHARE_DAUGHTERもつけたほうがいいよ
786 名前:784 mailto:sage [2007/07/12(木) 22:40:26 ] MSDNライブラリのCreateFileのFILE_SHARE何とかのところには、 "Subsequent open operations"と書かれているけど、 それは自分が一番最初にCreateFileする時の話で誤解がある。 実際には、同時にオープンする他者全員に対しての許可なので、 FILE_SHARE_WRITEを付けない = 許可しない場合には、 すでにWRITE有りでオープンしている人がいると、エラーになる。
787 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:45:51 ] >>781 ntbackupでバックアップ/別フォルダへのリストアに成功しました。 コマンドラインオプションから指示を出せる様なので、 この方法でできそうです。 ありがとうございました。
788 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:50:39 ] >>784 ,FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ としましたが同じエラーでした。
789 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:16:10 ] >>777 そんなこと聞く人が破壊がないかチェックなんてできるの?
790 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:20:40 ] 楽勝だよ
791 名前:778 mailto:sage [2007/07/12(木) 23:26:06 ] >>778 お願いします。 できないと死にそうです。
792 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:28:24 ] 出来ないと死にそうなくらい、ヤバい温度になるのか?
793 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:37:07 ] >>789 たぶんレジストリの内容をまとめて盗むスパイウェアでも作ってるんだろう。 >>791 自分だったらACPIではなく、SMBus(I2C)で温度センサーの値を読むが。
794 名前:デフォルトの名無しさん [2007/07/12(木) 23:46:24 ] >>792 部屋が灼熱地獄なんです 熱中症になる前にお願いします
795 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:47:57 ] >>761 標準の new は、小さなサイズの要求を大量に行うと、 メモリを無駄に使用してしまう。 数年前でも2GBのメモリ空間はかなり窮屈で 無駄にされるとかなり痛いので、 自前のアロケータを書いたことがある。
796 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:51:50 ] >>793 何故ですか? センサー毎にハードコーティング要るんじゃかったですか? そんな馬鹿馬鹿しい事やってられません
797 名前:793 mailto:sage [2007/07/12(木) 23:56:49 ] >>796 SpeedFanやEverestなどのメジャーなツールが取っている手段だから。 できるかどうかわからない方法を調べるよりは、 できることがわかっている方法を調べるほうがいいでしょ。
798 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:57:58 ] >>793 >SMBus(I2C)で温度センサーの値を読むが。 どのようにするのですか? なんか、デバドラ作らないと出来ないような気がしますが、 簡単にAPIで値読めるのですか?
799 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:00:56 ] >>795 数年前なら、64ビットが選択肢に入ってたろうに。 自分ならまず設計を見直すよ。 大量にnewするオブジェクトたちが、本当に個別に寿命管理が必要なのか、と。
800 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:11:43 ] Boost.Pool最強説
801 名前:795 mailto:sage [2007/07/13(金) 00:20:51 ] >>799 漏れは、マシンもOSも調達されてから投入されたので、 64bit化しようとは、流石にいえない。 そもそも、実装されるメモリの量も余裕は無かったし。 個別の寿命管理は確実に必要だったと今振り返っても思うよ。
802 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:28:50 ] つーか温度計る手段がいまだに規格化されてないってのがアホだよな WMIで得られる筈が>>778 みたいな半端な物で形骸化してるみたいだし 今ではデスクトップPCでさえサスペンド/レジュームする時代なんだぜ
803 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:06:26 ] homepage.mac.com/raktajino/cputhermometer/cputhermometer.html
804 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:07:30 ] forum.windowspower.de/thread.php?threadid=6907 freshmeat.net/projects/phptherm/ www.footslog.com/board/Forum6/HTML/000338.html
805 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:33:43 ] >>803 (゚д゚)ハァ?
806 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 03:01:36 ] >>787 もしVistaで動かす予定があるならntbackupは廃止されたから まじめにボリュームシャドウコピーを使う方法も併用する必要がある
807 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 07:17:28 ] >>802 計測ってより計測法でも利権が絡むからね。
808 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 08:05:05 ] >>801 それは、 何かよほどのこと って奴だったんだよ、たぶん。 ラージアドレス(/3GB)を使ってもアドレス空間が足りないが、 かといってPAEなんて使いたくないという場合には、 いっそのことプロセスを分けてしまうという手もある。 プロセスを跨ぐオーバーヘッドが巨大だけどね。
809 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 08:09:20 ] >>806 強引な荒技もあるよ。 デフラグのAPIを使ってファイルのディスク上の所在を調べて、そこを直に読んでしまうという手もある。 もちろん、そんな行儀の悪いことは、よほどの理由がないとダメだが。
810 名前:デフォルトの名無しさん [2007/07/13(金) 17:13:50 ] CreateProcessでCREATE_SUSPENDEDを利用してNotepad.exeを起動して、 とまってるときのMessageBoxAとMessageBoxWのアドレスと、 その後、ResumeThreadした後のMessageBoxAとMessageBoxWのアドレスが違うような気がするんですけど、 これって気のせいですか?
811 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 17:17:33 ] DefineDosDevice()で、特定のフォルダを新規ドライブとしてマウントできるけど、 そのとき、元のフォルダのほうをACLなりEFSなりで自プロセス以外から見えなくすることは可能?
812 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 17:53:48 ] >>810 CREATE_SUSPENDEDで作成されたプロセスは初期化が完了している保証は無い
813 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 18:37:58 ] むしろ初期化終わってないのが普通じゃない? この段階だとGetModuleFileNameExのようなAPIが失敗するもんで、 どうやってこの初期化だけを完了させるのか知りたかったりする (forでResume/sleep/Suspendを細切れにしてまわしてた)
814 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 18:45:57 ] PEヘッダ解析して、PE.EntryPointのアドレスを書き換えるか、 ブレークポイントをしかけておくってのはどうだい?
815 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 19:50:28 ] CREATE_SUSPENDEDで止まっているときに色々やるのはオススメしない。 Windowsのサービスパックで挙動が変るのならまだしも、 WindowsUpdateで配られるモジュールのアップデートで挙動が変ってしまうから。 安全なのはプロセスのエントリポイントを乗っとること。