| Index: third_party/mozprocess/mozprocess/wpk.py
|
| ===================================================================
|
| --- third_party/mozprocess/mozprocess/wpk.py (revision 0)
|
| +++ third_party/mozprocess/mozprocess/wpk.py (revision 0)
|
| @@ -0,0 +1,54 @@
|
| +# This Source Code Form is subject to the terms of the Mozilla Public
|
| +# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
| +# You can obtain one at http://mozilla.org/MPL/2.0/.
|
| +
|
| +from ctypes import sizeof, windll, addressof, c_wchar, create_unicode_buffer
|
| +from ctypes.wintypes import DWORD, HANDLE
|
| +
|
| +PROCESS_TERMINATE = 0x0001
|
| +PROCESS_QUERY_INFORMATION = 0x0400
|
| +PROCESS_VM_READ = 0x0010
|
| +
|
| +def get_pids(process_name):
|
| + BIG_ARRAY = DWORD * 4096
|
| + processes = BIG_ARRAY()
|
| + needed = DWORD()
|
| +
|
| + pids = []
|
| + result = windll.psapi.EnumProcesses(processes,
|
| + sizeof(processes),
|
| + addressof(needed))
|
| + if not result:
|
| + return pids
|
| +
|
| + num_results = needed.value / sizeof(DWORD)
|
| +
|
| + for i in range(num_results):
|
| + pid = processes[i]
|
| + process = windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION |
|
| + PROCESS_VM_READ,
|
| + 0, pid)
|
| + if process:
|
| + module = HANDLE()
|
| + result = windll.psapi.EnumProcessModules(process,
|
| + addressof(module),
|
| + sizeof(module),
|
| + addressof(needed))
|
| + if result:
|
| + name = create_unicode_buffer(1024)
|
| + result = windll.psapi.GetModuleBaseNameW(process, module,
|
| + name, len(name))
|
| + # TODO: This might not be the best way to
|
| + # match a process name; maybe use a regexp instead.
|
| + if name.value.startswith(process_name):
|
| + pids.append(pid)
|
| + windll.kernel32.CloseHandle(module)
|
| + windll.kernel32.CloseHandle(process)
|
| +
|
| + return pids
|
| +
|
| +def kill_pid(pid):
|
| + process = windll.kernel32.OpenProcess(PROCESS_TERMINATE, 0, pid)
|
| + if process:
|
| + windll.kernel32.TerminateProcess(process, 0)
|
| + windll.kernel32.CloseHandle(process)
|
|
|
| Property changes on: third_party/mozprocess/mozprocess/wpk.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|