wei_Y 发表于 2016-11-8 21:36:00

如何区分两个一模一样的窗口。


如果两个窗口进程映像名/ 进程标题 / 窗口类名完全相同。 且是两个不可控的进程。

这两个窗口不是同一个程序。

那如何给这两个窗口做区分。


或者换一种问法:

两个不同的程序会不会 进程映像名/ 进程标题/ 窗口类名都完全相同。


@小甲鱼 @~风介~ @不二如是 @无符号整形 @SixPy

无符号整形 发表于 2016-11-8 21:36:01

1.会的,有可能会完全相同!
2.可以实现辨别的。
先通过EnumWindow获得窗口句柄
然后调用GetWindowThreadProcessId获取进程ID
再OpenProcess
最后GetModuleFileNameEx获取路径
路径总不同吧

wei_Y 发表于 2016-11-8 22:06:02

无符号整形 发表于 2016-11-8 21:50
1.会的,有可能会完全相同!
2.可以实现辨别的。
先通过EnumWindow获得窗口句柄


如果路径不可控呢。

无符号整形 发表于 2016-11-8 22:09:48

wei_Y 发表于 2016-11-8 22:06
如果路径不可控呢。

不明白啊

SixPy 发表于 2016-11-8 22:09:53

即使是同一个程序多开,pid是不一样的

wei_Y 发表于 2016-11-9 09:28:22

SixPy 发表于 2016-11-8 22:09
即使是同一个程序多开,pid是不一样的

但是如何做区分,只能获取到两个不一样的pid。

SixPy 发表于 2016-11-9 09:41:13

wei_Y 发表于 2016-11-9 09:28
但是如何做区分,只能获取到两个不一样的pid。

你是要区分什么?

wei_Y 发表于 2016-11-9 10:18:21

SixPy 发表于 2016-11-9 09:41
你是要区分什么?

我想知道,如果两个 窗口,从外观上看去,一模一样。 从外部获取能不能 做出区分。

SixPy 发表于 2016-11-9 10:35:56

wei_Y 发表于 2016-11-9 10:18
我想知道,如果两个 窗口,从外观上看去,一模一样。 从外部获取能不能 做出区分。

窗口句柄不一样啊

SixPy 发表于 2016-11-9 11:10:43

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')

小甲鱼 发表于 2016-11-11 15:32:50

PID 不同:

冲啊大笼包 发表于 2016-11-12 20:14:13

PID不一样

wei_Y 发表于 2016-11-13 12:22:20

小甲鱼 发表于 2016-11-11 15:32
PID 不同:

{:10_282:}可能是我的问题不合理。
pid和窗口句柄都不相同,但是没法从外部直接做区分。

immortalfaith 发表于 2016-11-13 15:13:17

进程ID不一样
页: [1]
查看完整版本: 如何区分两个一模一样的窗口。