Win32API質問箱 Build48

このエントリーをはてなブックマークに追加
952795:2007/01/12(金) 01:50:37
>>947
レス有難うございます。
確かにメッセージをディスパッチしてるスレッドを止めると応答なしとなることからも
単にスレッドが他の処理をやってて結果として応答なしとなってしまうようです。

>>948
レス有難うございます。
IsHungAppWindowのAPIはウィンドウハンドルをとることからもCUIのプロセスは判別が難しいかなと思いました。
やっぱり、そこまでするならクラスタリング用アプリのようにハートビートでロックしていないことを定期的に示すようにしないと無理そうです。
今回のプロセス監視プログラムは任意のアプリを監視する仕様なので残念ながらクラスタリング用の細工をプログラムにすることはできません。

もしかしたら、CUIアプリのスレッドが全てブロックされた状態になったことを検出してハングアップを検出できるかもしれませんが、
単にWaitしてブロック状態であることも考えられますのでこれもダメそうです。

またループしてた場合などは、ハングアップしたのか処理を継続してるのか判別がつかないので難しいと思います。
仮にデバッガープロセスであればインストラクション実行状況やアドレスを定期的に監視することもできますが、
それでもループ処理なのか無限ループなのかわかりません。
これは八方塞がりだと諦めています。
953デフォルトの名無しさん:2007/01/12(金) 07:43:42
Jobとか使わずに、専用ユーザーつくって、runas ってのはだめなのかな?
と、適当なことを書いとく・・・

どちらにしろ、すげークリティカルな相手みたいで大変だね・・・
954デフォルトの名無しさん:2007/01/12(金) 16:06:28
ハリコの虎見てちんちんおっきおっき


こ の 書 き 込 み を 見 た 人 は 三 年 後 に イ ン ポ に な り ま す 。

イ ン ポ に な っ て オ ナ ニ ー が 出 来 な く な る の が 嫌 な 人 は
こ の 書 き 込 み と 同 じ 文 章 を 三 時 間 以 内 に
違 う ス レ に 五 回 以 上 コ ピ ペ し て く だ さ い 。

五 回 書 き 込 ま な か っ た 男 子 学 生 が
書 き 込み を 見 た 後 三 年 後 に イ ン ポに な り ま し た 。


955デフォルトの名無しさん:2007/01/12(金) 17:55:35
        ∧_∧ n^)   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ´Д`/ /  <  先生!すでにインポな漏れはどうなるんでしょうか?
      / ,    /     \_________________
        | | , 、 i
 ____| |  | | |__
 ||\   (_/         \
 ||\\            \
 ||  \|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 ||   || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     ‖               ||
956デフォルトの名無しさん:2007/01/12(金) 18:40:37
USBデバイスが接続されたときに、
1.0と2.0のどちらで接続されたかどうかを判定したいのですが
そのようなAPIはありますか?
できればSHCNE_DISKEVENTSのタイミングで取りたいのですが。
957デフォルトの名無しさん:2007/01/12(金) 18:54:18
958デフォルトの名無しさん:2007/01/12(金) 18:58:04
SetupDi を使用してハードウェア機器を列挙する方法
http://support.microsoft.com/kb/259695/ja
959デフォルトの名無しさん:2007/01/12(金) 20:21:19
>>958
なつけーソースw
その内容って、2000とXPで動作が異ならない?

確か文字数が・・・
960デフォルトの名無しさん:2007/01/13(土) 21:47:06
大丈夫だよおまえら
2chなくならないから
961デフォルトの名無しさん:2007/01/13(土) 21:51:30
てか、普通にAPI質問箱無くなると困るんだけどなー
962デフォルトの名無しさん:2007/01/14(日) 00:45:10
ム板はないと困る俺は底辺なのかな('A`)

ところで>>970あたりの方はお願いします
963デフォルトの名無しさん:2007/01/14(日) 00:53:02
だがこ、とわる!
964デフォルトの名無しさん:2007/01/14(日) 01:54:57
>>962
少なくともAPI32は情報交換って言う意味で俺には必要('A`)
965デフォルトの名無しさん:2007/01/14(日) 01:58:52
('A`)←しね
966デフォルトの名無しさん:2007/01/14(日) 02:05:50
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
967デフォルトの名無しさん:2007/01/14(日) 02:09:18
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
('A`)('0`)('0`)('0`)('0`)('0`)('0`)('0`)('A`)
('A`)('A`)('0`)('A`)('A`)('0`)('A`)('A`)('A`)
('A`)('A`)('0`)('0`)('A`)('0`)('A`)('A`)('A`)
('A`)('0`)('A`)('0`)('A`)('0`)('0`)('0`)('A`)
('A`)('0`)('0`)('0`)('A`)('0`)('A`)('A`)('A`)
('0`)('A`)('A`)('0`)('A`)('0`)('A`)('A`)('A`)
('0`)('A`)('0`)('A`)('A`)('0`)('A`)('A`)('0`)
('0`)('A`)('0`)('A`)('A`)('0`)('A`)('A`)('0`)
('A`)('0`)('A`)('A`)('A`)('0`)('A`)('A`)('0`)
('0`)('A`)('A`)('A`)('A`)('A`)('0`)('0`)('A`)
('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
968デフォルトの名無しさん:2007/01/14(日) 02:27:05

次スレ

Win32API質問箱 Build49
http://pc10.2ch.net/test/read.cgi/tech/1168708801/
969デフォルトの名無しさん:2007/01/14(日) 02:36:45


>>967は「死」って出るのか
よくやるなぁ
970デフォルトの名無しさん:2007/01/14(日) 03:45:51
>>968が新スレたててくれたから、質問させてもらいます。

CreateProcess()で起動したInternet Explorer(IE1)からjavascriptのwindow.open()で
新しく、別ウィンドウのInternet Explorer(IE2)を開いてるのですが、IE2がアイドル状態に
なるまで自作プログラムの処理を待機させるにはどのようにすればよいでしょうか?
IE2はIE1と別プロセスではなく,同一プロセスの別スレッドで動いている状態です。

呼び出しの関係は↓のようになってます。
自作プログラム(コンソールアプリ) -> CreateProcess() -> IE1 -> window.open() -> IE2
971デフォルトの名無しさん:2007/01/14(日) 10:07:51
while( IE2.Busy ){}
972デフォルトの名無しさん:2007/01/14(日) 10:22:06
_(アンダーバー)の仮想キーコードを教えてください。
何処を調べても出てきません(;´Д`)ハァハァ
973デフォルトの名無しさん:2007/01/14(日) 11:13:20
>>972
アンダーバーってSHIFT+バックスラッシュキーじゃないの?
少なくとも俺のIME+キーボードではそうなんだけど。
バックスラッシュキーならキーコード無しの0xE2
あとGetAsyncKeyStateとか使う場合はこれが何気に便利なんだぜ
ttp://www.vector.co.jp/soft/winnt/util/se074436.html
974デフォルトの名無しさん:2007/01/14(日) 11:17:18
CreateFileMapping使うときに
CreateFileでハンドル取得後
CreateFileMapping使うんですが
処理が終わった後
CloseHandleする時上記のAPIで取得したハンドル
どちらともClose処理しなければならないのでしょうか?
975デフォルトの名無しさん:2007/01/14(日) 11:43:19
>>974
YES。CreateFileは該当のファイルをオープンし、そのハンドルを返します。
つまり、このハンドルは開いたファイルに関する情報の構造体への
ポインタみたいな感じ(実際はちょっと違います)です。
CreateFileMappingはオープンしたファイルに関連付けられた
マッピングオブジェクト(メモリマッピングに必要になる色々な情報)
を作成、纏めてそのハンドルを返します。2つとも全く別物です。
片方が閉じられると連動してもう片方も閉じられるとか、そういう事はありません。

ちなみにメモリマップドファイルの蛇足として、
実際にファイルがメモリ上にロードされるのはMapViewOfFileが実行された時で、
メモリ上のファイルデータが実際のファイルに反映されるのは
UnmapViewOfFileが実行された時です。参考までに。
976970:2007/01/14(日) 11:57:03
970です。
すいません、環境を書くの忘れてました。VC6.0でMFCは使ってません。
Win32APIのみで作成しています。あと、質問内容の書き方も悪かったので、
下に改めて書き直します。

1.自作プログラムからIE1を起動(CreateProcessでHTMLファイルを
  IE1の引数として起動させてます。自作プログラムとIE1は別プロセス)
2.IE1に読み込まれたHTMLファイル内のjavascriptのwindow.openで
  新たにIEのウィンドウ(IE2)を開く(IE1とIE2は同一プロセス)

この状態で、自作プログラムからIE2の状態を監視して,IE2がアイドル状態に
なるまで,自作プログラムの処理を待機させたいのです。

>>971氏の方法はIE1内でwindow.openではなくてCreateObjectを使うってことでしょうか?

長文で申し訳ないですが、よろしくおねがいします。
977デフォルトの名無しさん:2007/01/14(日) 11:59:57
>>975
参考になりました。ありがとうございます。
978デフォルトの名無しさん:2007/01/14(日) 13:37:46
>>973
US配列だとshift+マイナスだったりしないかな
979デフォルトの名無しさん:2007/01/14(日) 13:47:34
>>973
スキャンコードは仮想キーコードからMapVirtualKeyで変換したもの使わないとキーボードドライバによっては不具合出る。(US101ドライバとか)
980デフォルトの名無しさん:2007/01/14(日) 14:45:42
>>973
>>972どえす
おおきにアンダーバー0x2Eでビンゴでした、それからVKどわすれくん、重宝します。
981デフォルトの名無しさん:2007/01/14(日) 15:33:28
埋め
982デフォルトの名無しさん:2007/01/14(日) 21:10:52
983デフォルトの名無しさん:2007/01/14(日) 21:16:51
>>974
ハンドルを2つ管理するのが面倒だったらCreateFileMappingの後で
CreateFileから返ってきたハンドルは閉じてしまってかまわない
984デフォルトの名無しさん:2007/01/14(日) 21:17:01
土里
985デフォルトの名無しさん:2007/01/14(日) 21:20:19
埋める前に次スレ立てろよ…と思ったらもう立ってたのか
http://pc10.2ch.net/test/read.cgi/tech/1168708801/l50
986デフォルトの名無しさん:2007/01/14(日) 21:27:46
十田
/土
987デフォルトの名無しさん:2007/01/14(日) 22:24:13
>>983
それって大丈夫なのか?
988デフォルトの名無しさん:2007/01/14(日) 22:47:02
>>987
大丈夫じゃない。
ttp://msdn2.microsoft.com/en-gb/library/aa366542.aspx
>In addition, the file handle should remain open until the process no longer needs the file mapping object.
989デフォルトの名無しさん:2007/01/14(日) 22:47:20
>>987
ファイルマッピングハンドルは内部的にファイルハンドルへの参照も持つから
大丈夫なことは保証されてる。確かAdvanced Windowsにも出てた
990デフォルトの名無しさん:2007/01/14(日) 22:49:28
>>988
その直前にある分を無視するなよ。排他アクセスを保証したい場合は、だろ。
> To ensure that other processes cannot write to the portion of the file that
> is mapped, you should open the file with exclusive access.
991デフォルトの名無しさん:2007/01/14(日) 23:19:14
結局どっちでもいいんでね?
992デフォルトの名無しさん:2007/01/14(日) 23:46:09
どうせATL::CHandle使うからどうでもいい。
993デフォルトの名無しさん:2007/01/14(日) 23:48:38
うま
994デフォルトの名無しさん:2007/01/14(日) 23:51:23
うま
995デフォルトの名無しさん:2007/01/14(日) 23:53:10
まう
996デフォルトの名無しさん:2007/01/14(日) 23:54:18
997デフォルトの名無しさん:2007/01/14(日) 23:55:06
998デフォルトの名無しさん:2007/01/15(月) 00:02:07
ちんちん
999デフォルトの名無しさん:2007/01/15(月) 00:03:22
かいかい
1000デフォルトの名無しさん:2007/01/15(月) 00:03:41
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。