如何区分两个一模一样的窗口。
如果两个窗口进程映像名/ 进程标题 / 窗口类名完全相同。 且是两个不可控的进程。
这两个窗口不是同一个程序。
那如何给这两个窗口做区分。
或者换一种问法:
两个不同的程序会不会 进程映像名/ 进程标题/ 窗口类名都完全相同。
@小甲鱼 @~风介~ @不二如是 @无符号整形 @SixPy
1.会的,有可能会完全相同!
2.可以实现辨别的。
先通过EnumWindow获得窗口句柄
然后调用GetWindowThreadProcessId获取进程ID
再OpenProcess
最后GetModuleFileNameEx获取路径
路径总不同吧 无符号整形 发表于 2016-11-8 21:50
1.会的,有可能会完全相同!
2.可以实现辨别的。
先通过EnumWindow获得窗口句柄
如果路径不可控呢。 wei_Y 发表于 2016-11-8 22:06
如果路径不可控呢。
不明白啊 即使是同一个程序多开,pid是不一样的 SixPy 发表于 2016-11-8 22:09
即使是同一个程序多开,pid是不一样的
但是如何做区分,只能获取到两个不一样的pid。 wei_Y 发表于 2016-11-9 09:28
但是如何做区分,只能获取到两个不一样的pid。
你是要区分什么?
SixPy 发表于 2016-11-9 09:41
你是要区分什么?
我想知道,如果两个 窗口,从外观上看去,一模一样。 从外部获取能不能 做出区分。 wei_Y 发表于 2016-11-9 10:18
我想知道,如果两个 窗口,从外观上看去,一模一样。 从外部获取能不能 做出区分。
窗口句柄不一样啊 wei_Y 发表于 2016-11-9 10:18
我想知道,如果两个 窗口,从外观上看去,一模一样。 从外部获取能不能 做出区分。
栗子{:10_271:}
import os, time
from win32gui import * #EnumWindows
from win32process import GetWindowThreadProcessId
titles = {}
def foo(hwnd,mouse):
if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):
t = GetWindowText(hwnd)
tid,pid = GetWindowThreadProcessId(hwnd)
titles.setdefault(t,[])
titles.append({'pid':pid,'hwnd':hwnd})
os.popen('notepad')
os.popen('notepad')
time.sleep(2)
EnumWindows(foo, 0)
for t in titles:
if t and len(titles)>1:
print (t,titles)
print ('end')
PID 不同:
PID不一样 小甲鱼 发表于 2016-11-11 15:32
PID 不同:
{:10_282:}可能是我的问题不合理。
pid和窗口句柄都不相同,但是没法从外部直接做区分。 进程ID不一样
页:
[1]