|
IEの複数開いているタブのうちの特定の一つのPIDが取得したいのですが STATUS(ID, ST_PROCESS)等やっても取得できるのは親プロセスのPIDだけになってしまいます。 どうやったら現在取得中のタブのPIDを得ることができるのでしょうか?
|
No.3664 2017/03/22(Wed) 13:15:33
|
☆ Re: IEのタブのPID / しゅん |
|
|
状況により取り方はいろいろですが、難しいかもしれません。
Shell.ApplicationのCOMオブジェクトを作って、.Windows()メソッドからIEを列挙させて、HWNDをIDに変換するので、満たせるかもしれません。
|
No.3667 2017/03/22(Wed) 18:14:08
|
|
☆ Re: IEのタブのPID / kog |
|
|
以下のようにやっても取得できるのは親のPIDだけで、タブのは取得できないです
DEF_DLL GetWindowThreadProcessId(HWND,var DWORD):DWORD:user32 pid = 0 sh = CREATEOLEOBJ("Shell.Application") for k=0 to sh.Windows.Count-1 win = sh.Windows.Item(k) name = win.name if name="Windows Internet Explorer" hWnd = win.hWnd GetWindowThreadProcessId(hWnd, pid) print pid endif next
|
No.3669 2017/03/22(Wed) 21:22:56
|
|
☆ Re: IEのタブのPID / しろまさ |
|
|
「取得できない」ではなく「PIDは同じ」で正解です。 仮に別々のPIDを取得できたとして、その先の操作は何がしたいのですか?
ついでに name=""Windows Internet Explorer" で取得できます? 私の環境(IE11)では以下でした。 name="Internet Explorer"
|
No.3670 2017/03/23(Thu) 08:51:56
|
|
☆ Re: IEのタブのPID / kog |
|
|
今やりたいのはタブ毎の使用メモリ量の取得です タスクマネージャやWMIだとPIDと共に使用メモリがわかるのですが それがどのタブの物かというのは推測しかできません
IE11だとエラーが出るスクリプトのためIE10でやっています
|
No.3671 2017/03/23(Thu) 11:30:13
|
|
☆ Re: IEのタブのPID / kog |
|
|
ProcessExplorerでウィンドウ指定すると該当プロセスがハイライトされるのでウィンドウにつきPIDがあるとは思うんですが、それをUWSCで取れないものかと思います。
|
No.3672 2017/03/23(Thu) 11:32:08
|
|
☆ Re: IEのタブのPID / しろまさ |
|
|
// PIDありましたね!失礼しました。 // とりあえず以下でタスクマネージャに表示されるPIDと同じ数字は取得できました。 // win.hWndだとhnd値が違うんですよねー。不思議だ。 // win.hWndは Status(wID, ST_CLASS) = "IEFrame" のhndと一緒でした。
DEF_DLL GetWindowThreadProcessId(HWND,var DWORD):DWORD:user32 Dim i, wID, hnd, pid = 0 For i = 0 To GetAllWin() - 1 wID = ALL_WIN_ID[i] Ifb Status(wID, ST_CLASS) = "TabThumbnailWindow" hnd = IDtoHND(wID) GetWindowThreadProcessId(hnd, pid) Print "hnd=" + hnd + " pid=" + pid + " ttl= " + Status(wID, ST_TITLE) + " cls= " + Status(wID, ST_CLASS) EndIf Next
// もしよかったらPIDからメモリ量を取得するロジックのほうを教えてください! // Status(wID, ST_PROCESS)でも一緒でした(GetWindowThreadProcessId不要) // あれ? タブとPrintされたプロセス数が合わない。。PID=タブではないのか?
|
No.3674 2017/03/23(Thu) 12:51:53
|
|
☆ Re: IEのタブのPID / しゅん |
|
|
しろまささん、ありがとうございます。 あまり深く考えずに回答するものではありませんね。
|
No.3675 2017/03/23(Thu) 13:02:51
|
|
☆ Re: IEのタブのPID / kog |
|
|
ありがとうございます。やっと取得できました。 win.hWndと特に何も考えずに使ってましたが、全然見当違いのハンドルだったんですね
|
No.3676 2017/03/23(Thu) 13:08:33
|
|
☆ Re: IEのタブのPID / しろまさ |
|
|
いえいえしゅんさん、私もそれでいけると思ってました>< kogさんのダメだし後、APIやWMIやいろいろ試して結局標準関数に落ち着くという結末 orz
|
No.3677 2017/03/23(Thu) 13:10:25
|
|
☆ Re: IEのタブのPID / kog |
|
|
ロジックというほど高尚なものではありません…
doscmd("wmic process where (processid = '" + pid + "') get workingsetsize")
とやっているだけです
|
No.3679 2017/03/23(Thu) 14:06:16
|
|
☆ Re: IEのタブのPID / しろまさ |
|
|
ありがとうございます。シンプルさが素敵です^^ 後で調べてみます<workingsetsize
|
No.3680 2017/03/23(Thu) 14:50:13
|
|