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などの質問はそれぞれの言語や開発環境スレで
152 名前:デフォルトの名無しさん [2007/06/18(月) 00:25:42 ] >>151 TCP/IPはクライアントとの通信です。 モニターはサーバーPCのみでOKということです。 同一プロセスならばリアルタイムですが、プロセスを分けると 共有メモリにしろ周期的にチェックする必要があるので タイムラグが若干発生するけどまあ気にするほどでもないかと いうことです。失礼しました。
153 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:41:19 ] >>152 文章が不明瞭だと思ってたけど、日本語が通じなんだな、おい。
154 名前:デフォルトの名無しさん [2007/06/18(月) 00:49:50 ] >>153 単なる誤解でしょ。 >>稼働状況をモニターするクライアント をモニター=クライアントと解釈するかどうかですよね。 そうだとすると通じてなかった。
155 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:55:50 ] >>154 それ以外の解釈は、ないだろ。 誤解するかもしれないので、 「稼働状況をモニターする」 と書いたのに。 だいたい、お前が作っているサービスが何をする代物なのか、言ってないだろ。
156 名前:デフォルトの名無しさん [2007/06/18(月) 00:59:21 ] >>155 >お前が作っているサービスが何をする代物なのか、言ってないだろ。 ここで議論することでもないですので、これで終わりにしましょう。 ありがとうございました。
157 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:59:22 ] > 同一プロセスならばリアルタイムですが、プロセスを分けると > 共有メモリにしろ周期的にチェックする必要がある 同一プロセスだからといってリアルタイムとは限らないし、 プロセスを分けることで、周期的にチェックするしか出来ないわけでもない。
158 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 12:48:34 ] >>134 ・Vistaではサービスは別のセッションで動くように変更された ・あるセッションで動いているウィンドウは別セッションでは表示されない ・Windowsが終了(ログオフ含む)時に閉じようとするのは、ログオンしているセッションに属しているウィンドウのみ ・WM_DESTROYの応答でPostQuitMessageしていたらウィンドウ閉じるときにプロセスが終わってしまう この4点で「なぜVistaではトレイアイコンが出ないか」「なぜXPではログオフでプロセスが終わってしまうか」 の両者の理由が理解できるかと。
159 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 13:03:07 ] まあ、サービスをシステム権限で動かしてデスクトップとの対話を有効にすると 大きな穴になる可能性があるからなあ。 昔、その場限りでアドミン権限で実行させるためだけのサービスとか作って遊んでたっけ・・・
160 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 13:24:10 ] >>159 >昔、その場限りでアドミン権限で実行させるためだけのサービスとか作って遊んでたっけ・・・ まあ実際RunAsってサービス使って実装されてるしね。 ttp://www.atmarkit.co.jp/fwin2k/win2ktips/059execau/execau.html >なおこの機能は、Windows 2000では「RunAs」というサービス、 >Windows XPでは「Secondary Logon」というサービスを使って実現されている。 >Windows 2000/XPでは、デフォルトでこのサービスが組み込まれ、 >システム起動時に自動的に起動されるようになっているが、 >何らかの理由からこのサービスが起動されていないと、 >[別ユーザーとして実行]は利用できない。
161 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 15:58:38 ] >>159 そんなサービス作らずとも、 標準のatコマンドで直近の時間を指定するか、soonコマンドを入れるかすれば、 管理者権限をもったプロセスを普通のユーザが起動できたぞ。 >>160 話が唐突に飛んでる
162 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:07:33 ] >>161 >話が唐突に飛んでる スマソ。 >>159 が作っていたのが「いわゆるデスクトップでその場限りでアドミン権限で実行させるため」 のものだと誤解していたようだ。 しかしあれだけの文章から>>159 が作っていたのが 「別のウィンドウステーションでその場限りでアドミン権限で実行させるため」のものと よく確信できたね。 じつは>>159 ==>>161 ?
163 名前:161 mailto:sage [2007/06/18(月) 16:43:49 ] >>162 NT4.0時代では常套手段だったから。
164 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 18:48:49 ] >>158 への対策として「別セッション上のデスクトップのウィンドウを操作したい」ってのは可能なの? 別セッションのHDESKに接続できれば何とかなりそうな気もするけどAPIが見あたらない・・・
165 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 18:58:04 ] >>163 それはatを実行する権限を持ったやつが必要だしなあ fileman.exeをadminで実行してしまえばそこから起動するやつはみなadminだったっけな
166 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 21:48:52 ] VSのインテリセンスのような小窓?はどうやって実装しているんでしょうか。 解説しているサイトか取っ掛かりになるようなキーワードを教えてください。
167 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 21:54:26 ] ToolTipじゃねーの?
168 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:05:26 ] アクティブにしないフラグつっこんでShowWindowとかSetWindowPosしてるだけじゃね? と考えるおれは素人 しかしToolTipを間違ってクリックするとフォアグラウンド奪う実装は なんとかしてほしい
169 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:16:49 ] CD-Rソフトのように、アプリケーションの起動中のみ、 CDやUSBメモリのようなメディアを接続しても オートランを働かせないようにするにはどうしたら良いでしょうか?
170 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:28:10 ] >>169 おちつけ kwsk
171 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:37:30 ] R焼きソフトを起動中にオートランが起動しないのは、 CDドライブを握ってる副作用みたいなもん。 USBメモリは差し込む前にデバイスを握ることができないので 機能として実装するのは難しかったはず。
172 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:58:21 ] 一時的にオートランの設定をOFFにする。 問題はアプリが異常終了したとき、OFFのままになる。
173 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:29:37 ] プログラムが異常終了していないか監視するプログラムを作る。
174 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:33:09 ] OSが終了しないとも限らない OSの監視も必要だ
175 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:56:01 ] OSごと異常終了することへの対策は、 アプリが起動したら、 レジストリの自動実行に、オートランの設定を元に戻すプログラムを登録し、 アプリが正常終了したら、その登録を消すようにすればいい。 元に戻すプログラムは実行されたら、自分で自動実行の登録を消すのも忘れずに。
176 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 02:26:48 ] autoun関係のレジストリって、変更後再起動しないと explorerが認識してくれないこと無い?
177 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 02:28:36 ] Win95を無視するなら RegisterWindowMessage(TEXT("QueryCancelAutoPlay")) をどうぞ
178 名前:デフォルトの名無しさん [2007/06/19(火) 10:24:04 ] マルチポストあんましたくないんですが、すみません、このスレでいいのか迷うんですが、 Windows2000やXP、Vistaで、アプリからサービスを一時的に停止したり 開始したりする方法を教えて下さい。 宜しくお願いします。
179 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:27:58 ] やばい機能に使えそうだから教えない
180 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:28:46 ] net start/stop呼んどけ
181 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:32:23 ] マルチは嫌い。
182 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:34:02 ] >>178 >マルチポストあんましたくないんですが ふざけんな阿呆。 PC一般板にでも逝け。 そして二度と来るな。
183 名前:デフォルトの名無しさん [2007/06/19(火) 13:57:40 ] 静的ライブラリにリソースファイル (.res) を入れました。 このライブラリを別のプログラムからリンクした場合、 リソースがリンクされないようなのですが、どうしてでしょうか。 解決策はないでしょうか。
184 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 14:14:56 ] .libにリソースは入れられない
185 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 15:52:58 ] ええ?でも VC8 でビルドすると自然に入りますよ。
186 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 16:00:40 ] 入る?DLLとかじゃなくて? libってのは、objファイルを集めたもので、リンク時に使われてる関数が含まれてる objファイルを取り出してリンクするためのものだから、resが入ってても困ると思うんだが。
187 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 16:12:27 ] >>186 入るよ。 lib.exe /LIST Some.lib とかコマンド打つと、.res が入っている。 .obj も .res も link.exe への入力になるんだから、 そのまま .res もリンクしてくれればいいのだけど、 どうもしてくれないみたい。何かオプションがいるのかな。
188 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 16:16:31 ] いや、、そのresは名前をつけられるの?
189 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 16:22:04 ] そりゃ、静的ライブラリを作るプロジェクトの リソースコンパイラの設定でできるよ。
190 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 18:36:56 ] borlandなりgccなりvcなりしかるべき処理系のスレにいったほうが幸せになれると思うよ
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カウンタにスレッドの状態が出るから、 自分で全スレッドのインスタンスに対して状態をチェックして集計しる!