精华内容
下载资源
问答
  • 在自动化办公的趋势下,繁琐的工作可以让程序自动完成。比如自动化测试、自动下单交易等。很多软件除了可以GUI方式操作外还可以用CLI接口操作,不过当一些软件未提供CLI...pywin32是一个Python库,它为Python提供访...

    80bdf7ad05c4515b139c16b677990019.png

    在使用PC时与PC交互的主要途径是看屏幕显示、听声音,点击鼠标和敲键盘等等。在自动化办公的趋势下,繁琐的工作可以让程序自动完成。比如自动化测试、自动下单交易等。很多软件除了可以GUI方式操作外还可以用CLI接口操作,不过当一些软件未提供CLI接口时,我们应该怎么办呢?我们还可以用程序控制桌面上的窗口、模拟点击鼠标或按下键盘等动作来释放自己。

    pywin32是一个Python库,它为Python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制等等,安装后会自带一个pythonwin的IDE。接下来主要介绍下如何通过Python去操作windows桌面软件。

    1、打开软件或文件 ,比如打开一个谷歌浏览器,或者打开一个word文件,如下所示:

    win32api.ShellExecute(1, 'open',
     r'C:Program Files (x86)GoogleChromeApplicationchrome.exe',
     '', '', 1)
    win32api.ShellExecute(1, 'open',
     r'C:UsersJayDesktopEnvironment Guider.docx',
     '', '', 1)
    

    win32api.ShellExecute()的参数主要包括:

    HWND:指定父窗口句柄

    Operation:指定动作, 譬如"edit",“explore”,“open”,“find”,“print”,“NULL”

    FileName:指定要打开的文件或程序

    Parameters:指定打开程序所需参数

    Directory:缺省目录

    ShowCmd:打开选项,可选值:

    • •SW_HIDE = 0; {隐藏窗口,活动状态给令一个窗口}
    • •SW_SHOWNORMAL = 1; {用最近的大小和位置显示窗口, 同时令其进入活动状态}
    • •SW_NORMAL = 1; {用当前的大小和位置显示一个窗口,不改变活动窗口}
    • •SW_SHOWMINIMIZED = 2; {最小化窗口,并将其激活}
    • •SW_SHOWMAXIMIZED = 3; {最大化窗口,并将其激活}
    • •SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}
    • •SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示一个窗口,不改变活动窗口}
    • •SW_SHOW = 5; {用当前的大小和位置显示一个窗口,令其进入活动状态}
    • •SW_MINIMIZE = 6; {最小化窗口, 不激活}
    • •SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
    • •SW_SHOWNA = 8; {用当前的大小和位置显示一个窗口,不改变活动窗口}
    • •SW_RESTORE = 9; {同 SW_SHOWNORMAL}
    • •SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}
    • •SW_MAX = 10; {同 SW_SHOWNORMAL}

    执行成功会返回应用程序句柄, 如果返回值 <= 32,则表示执行错误。返回值可能的错误有:

    0—— {内存不足}

    2—— {文件名错误}

    3—— {路径名错误}

    11—— {EXE 文件无效}

    26—— {发生共享错误}

    27—— {文件名不完全或无效}

    28—— {超时}

    29—— {DDE 事务失败}

    30—— {正在处理其他 DDE 事务而不能完成该 DDE 事务}

    31—— {没有相关联的应用程序}

    2、查找窗体的句柄。在win32编程的世界里,包括窗口到文本框的所有控件都是窗体,所有的窗体都有独立的句柄。要操作任意一个窗体,都需要找到这个窗体的句柄。句柄是一个32位整数,在windows中用于标记对象。比如查找Snipping Tool和New Text Document.txt的句柄,如下所示:

    para_hld = win32gui.FindWindow(None, "Snipping Tool")# 1836416
    para_hld = win32gui.FindWindow(None, "New Text Document.txt - Notepad")# 591410
    

    win32gui.FindWindow()属于win32gui的模块,它自顶层窗口(也就是桌面)开始搜索条件匹配的窗体,并返回这个窗体的句柄。该函数仅能查找主窗口,因此无法搜索子窗口,也不区分大小写,未找到则返回0。

    win32gui.FindWindow()的参数主要包括 (lpClassName=None, lpWindowName=None):

    •lpClassName:字符型,窗体的类名,可以在Spy++里找到

    •lpWindowName:字符型,窗口名,也就是标题栏上能看见的那个标题。

    5d91aed7ccc64e9086a4c8ce8acfda11.png

    3、查找句柄的类名和标题。比如通过Snipping Tool和New Text Document.txt的句柄查找对应的类名和标题,如下所示:

    title = win32gui.GetWindowText(1836416)
    classname = win32gui.GetClassName(1836416)
    print "windows handler:{0}; title:{1}; classname:{2}".format(1836416, title, classname)
    

    打印显示如下:

    windows handler:1836416; title:Snipping Tool; classname:Microsoft-Windows-Tablet-SnipperToolbar
    title = win32gui.GetWindowText(591410)
    classname = win32gui.GetClassName(591410)
    print "windows handler:{0}; title:{1}; classname:{2}".format(591410, title, classname)
    

    打印显示如下:

    windows handler:591410; title:New Text Document.txt - Notepad; classname:Notepad
    

    4、调用win32gui.EnumWindows()枚举所有窗口句柄,直到最后一个顶层窗口被枚举则停止枚举过程。如下所示:

    hWndList = []
    win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)
    print hWndList
    for hwnd in hWndList:
     title = win32gui.GetWindowText(hwnd)
     print title
    

    打印显示如下:

    [852802L, 65946L, 65928L, 65930L, 65900L, 65920L, 65924L, 65922L, 65944L, 65892L, 65886L, 6817870L, 65960L, 6031410L, …… 66052L, 65734L]
    ……
    New Text Document.txt - Notepad
    Snipping Tool
    DDE Server Window
    OfficePowerManagerWindow
    OfficePowerManagerWindow
    DDE Server Window
    GDI+ Window
    Global Internet Access
    ……
    

    5、win32gui.SetForegroundWindow()函数将指定窗体设置到最顶层,并且激活该窗口

    构造函数为:win32gui.SetWindowPos(HWN hWnd,HWND hWndlnsertAfter, int X,int Y, int cx,int cy, UNIT.Flags)

    关于win32gui.SetForegroundWindow(para_hld)报错的问题:

    pywintypes.error: (0, ‘SetForegroundWindow’, ‘No error message is available’)

    其实调用SetForegroundWindow()会有很多限制,参考官网的说明:https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setforegroundwindow

    1c9819090e37543db9769f0a0be99938.png

    因此调用SetForegroundWindow()时需要查看当前运行的条件是否符合上述要求,此处在调用SetForegroundWindow()前事先发送一个键盘event来解决该问题。

    例程如下所示:

    win32api.keybd_event(13, 0, 0, 0) #
    win32gui.SetForegroundWindow(para_hld)
    

    6、win32api.keybd_event()模拟键盘输入。

    构造函数如下所示:

    win32api.keybd_event (bVk, bScan, dwFlags, dwExtraInfo)

    •bVk:虚拟键码(键盘键码对照表见附录);

    •bScan:硬件扫描码,一般设置为0即可;

    •dwFlags:函数操作的一个标志位,如果值为KEYEVENTF_EXTENDEDKEY则该键被按下,也可设置为0即可,如果值为KEYEVENTF_KEYUP则该按键被释放;

    •dwExtraInfo:定义与击键相关的附加的32位值,一般设置为0即可。

    按下enter键后抬起的例程如下所示:

    win32api.keybd_event(13,0,0,0) # enter
    win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
    

    7、模拟鼠标输入。直接给出例程,如下所示:

    # 获取鼠标当前位置的坐标
    print win32api.GetCursorPos()
    # 将鼠标移动到坐标处
    win32api.SetCursorPos((100, 100))
    # 左点击
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 100, 100, 0, 0)
    time.sleep(2)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 100, 100, 0, 0)
    

    8、关于鼠标键盘的操作还可以使用PyUserInput库。PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,使用非常方便。支持的平台及依赖如下:

    •Linux - Xlib

    •Mac - Quartz, AppKit

    •Windows - pywin32, pyHook

    实例化一个鼠标和键盘对象,如下所示:

    from pymouse import PyMouse
    from pykeyboard import PyKeyboard
    m = PyMouse()
    k = PyKeyboard()
    操作鼠标和键盘,如下所示:
    m.click(190,70,1)#移动并且在xy位置点击
    time.sleep(2)
    m.click(190, 200, 1)#移动并且在xy位置点击
    time.sleep(2)
    k.tap_key(k.function_keys[5])#–点击功能键F5
    

    伙伴们哪里有不清楚的地方,可以留言哦!

    展开全文
  • python操作windows窗口获取窗口句柄

    万次阅读 多人点赞 2019-11-06 09:16:54
    python获取窗口句柄 在Windows下获取窗口句柄时操作系统版本和软件版本对获取有影响,就会出现在本地调试正常的程序,交付使用的时候报错。 查看windows所有可显示的窗口句柄及窗口名称。 # -*- coding: utf-8 -*- ...

    想要看更加舒服的排版、更加准时的推送
    关注公众号“不太灵光的程序员”
    每日八点有干货推送

    python获取窗口句柄

    在Windows下获取窗口句柄时操作系统版本软件版本对获取有影响,就会出现在本地调试正常的程序,交付使用的时候报错。

    查看windows所有可显示的窗口句柄及窗口名称。

    # -*- coding: utf-8 -*-
    """
    File Name  windows_gui
    Created on 2019-11-06
    
    @author: jj
    
    """
    import win32gui
    
    hwnd_title = {}
    
    def get_all_hwnd(hwnd, mouse):
        if (win32gui.IsWindow(hwnd)
                and win32gui.IsWindowEnabled(hwnd)
                and win32gui.IsWindowVisible(hwnd)):
            hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})
    
    
    win32gui.EnumWindows(get_all_hwnd, 0)
    for h, t in hwnd_title.items():
        if t :
            print (h, t.decode("gbk"))
    if __name__ == '__main__':
        pass
    

    结果 :
    (263618L, u’\u5fae\u4fe1’)
    (66630L, u’\u5c0f\u706b\u7bad\u901a\u7528\u52a0\u901f’)
    (131362L, u’Program Manager’)
    (132782L, u’python\u4e2d\u7684\u89e3\u7801\u4e0e\u7f16\u7801 - zhang_cherry\u7684\u535a\u5ba2 - CSDN\u535a\u5ba2 - Google Chrome’)
    (67384L, u’\u57ce\u5e02 - \u4e00\u4e09’)
    (131572L, u’\u4efb\u52a1\u7ba1\u7406\u5668’)
    (329592L, u’work [F:\work] - …\yanchi_auto\windows_gui.py [work] - PyCharm’)
    (329492L, u’lot_irrigated_litong_v3 [F:\jfzx_svn\001litongqu3P\03jieguan\03Development\lot_irrigated_litong_v3] - …\bus_prediction\tasks_apscheduler.py [lot_irrigated_litong_v3] - PyCharm’)
    (133012L, u’archive_record_gate_report @lot_canal_hongsipu (aliyun) - \u8868 - Navicat Premium’)
    (131690L, u’TIM’)

    python操作Windows窗口程序

    推荐阅读:

    展开全文
  • 查找元素之前我们还要变更driver指向的窗口为最新的窗口。 在直接查找qq登录的元素之前我们要先定位进外面的iframe元素,不然会报查找不到。 2 下拉滚动条 直接让selenium运行下拉滚动条的JS就可以,至于滚动像素...

    爬取对象

    我们的爬取目标是(登陆状况下的)新浪微博的首页。也就是下图:

    e4ca366dd5dd60b2f649876d18f7d76b.png

    爬取目标

    首先,我们要模拟登陆。

    其次,我们要下拉滚动条两次,让微博加载新的动态。

    第三,作为良好公民我会给我关注的所有博主点赞,所以我们给所有微博点一次赞。

    第四,我们把获取到的所有博文保存到文件里。

    第五,我们发一条微博,内容为“Hello World!”。

    那么,我们的上述行为用到了:

    6c8c46f9672b2c1a99720e14433b2139.png

    准备工作-分析页面

    1 模拟登陆

    微博的登录按钮对应的html文本如图所示:

    dcf4f4b0cfd940969d4982631cd58080.png

    我们使用find_element_by_link_text("登录")获取此元素然后click(ele)点击它。

    跳出的登录界面如图:

    9741ab45e37b4ea3421a69e517100b79.png

    因为使用帐号密码登录会有验证码,所以我们直接使用qq登录。在查找元素之前我们还要变更driver指向的窗口为最新的窗口。

    7dd06e99df46426262f3642f86850f29.png

    在直接查找qq登录的元素之前我们要先定位进外面的iframe元素,不然会报查找不到。

    2 下拉滚动条

    直接让selenium运行下拉滚动条的JS就可以,至于滚动像素我们使用document.body.clientHeight获取(这个函数返回body元素的高度,还有一个document.documentElement.clientHeight返回屏幕中可见的高度)。下拉滚动条的JS为Window_scrollBy(right,down)。

    3 点赞

    获取所有点赞对应的元素(node-type="like_status"),然后依次执行点击操作(记得设置间隔时间)。

    4 保存博文

    本步骤的原理很简单,即获取所有满足条件的元素然后保存到文件内。但是微博的页面元素较为复杂,我们要保存所有博文的所有内容,也包括图片,并且要把所有折叠的内容展开。

    所以我们的步骤分为五步:首先我们要点击页面中的所有“展开全文”,然后获取所有node-type=”feed_list_item”元素,之后遍历确认其是否含有node-type=”feed_list_content_full”或node-type=”feed_list_content”的内容标签,再遍历确认是否含有图片。最后我们根据图片的链接下载图片。

    5 发表微博

    找到发表微博的textarea,使用sendKeys发送微博内容,然后对提交按钮使用click()。

    代码部分

    #0️⃣.准备工作-----------------------------------------------------------------------------from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsfrom time import sleepfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.ui import WebDriverWait   from selenium.webdriver.common.by import Byimport requestsDRIVERPATH="chromedriver.exe"driver=webdriver.Chrome(DRIVERPATH)driver.get("https://weibo.com/")driver.implicitly_wait(10) #等待加载#----------------------------------------------------------------------------------------#1️⃣.登录---------------------------------------------------------------------------------_handle=driver.current_window_handle #记录当前的句柄login1=driver.find_element_by_css_selector('[node-type="loginBtn"]') #登录按钮login1.click() #执行点击动作 点击登录login2=driver.find_element_by_css_selector('[node-type="qq_box"]')login2.click() #点击切换到qq登陆#此时,微博会跳出一个新标签页来完成qq登陆,所以我们要切换selenium的句柄handlel=driver.window_handles while(len(handlel)==1):    sleep(1)    handlel=driver.window_handles #等待 直到有多个句柄driver.switch_to.window(handlel[-1]) #切换到新窗口#但是新的窗口中包含了一个iframe,所以我们还得先定位进framedriver.switch_to.frame("ptlogin_iframe")login3=driver.find_element_by_css_selector('a[uin="2223216740"]')login3.click() #点击头像 登陆#----------------------------------------------------------------------------------------#2️⃣.下拉滚动条---------------------------------------------------------------------------sleep(6) #等待跳转height=driver.execute_script("return document.body.clientHeight") #获取长度driver.execute_script("window.scrollTo(0,arguments[0])",height) #下拉height=driver.execute_script("return document.body.clientHeight")-heightdriver.execute_script("window.scrollTo(0,arguments[0])",height) #下拉#---------------------------------------------------------------------------------------#3️⃣.点赞--------------------------------------------------------------------------------like=driver.find_elements_by_css_selector('[node-type="like_status"]') #找到所有喜欢的按钮for i in like:    try:        driver.execute_script("window.scrollBy(arguments[0])",i) #可视过程,极致享受        i.click()        sleep(1)    except:        driver.find_element_by_css_selector('[node-type="ok"]').click()        break    #如果提示操作频繁就点掉,然后跳出去    #这里会有个问题,点赞过快或者过多会弹出“操作频繁”页面(有时候我正常浏览都会弹,只能说emmm)#---------------------------------------------------------------------------------------#4️⃣.保存博文----------------------------------------------------------------------------text_expand=driver.find_elements_by_link_text("展开全文")for i in text_expand:    i.click() #点击所有展开全文text=driver.find_elements_by_class_name("WB_detail") #找到所有微博正文内容#   #----------------------------------------------------------------------------#   #Weibo类 定义,用于存储微博的内容#   #----------------------------------------------------------------------------class Weibo:    img=[]    def setAuthor(self,author):        self.author=author    def setTime(self,time):        self.time=time    def setText(self,text):        self.text=text    def addImg(self,img):        self.img.append(img)re=[] #用于存储微博数据的Weibo对象列表for i in text:    try:        i.find_element_by_css_selector('[node-type="feed_list_item_date"]') #广告是没有时间的    except:        continue    a=Weibo()    a.setAuthor(i.find_element_by_class_name("WB_info").text)    a.setTime(i.find_element_by_css_selector('[node-type="feed_list_item_date"]').get_attribute("title"))    if len(i.find_elements_by_css_selector('[node-type="feed_list_content"]'))>0: #不用展开的博文的node-text        if len(i.find_elements_by_css_selector('[node-type="feed_list_forwardContent"]'))>0: #注意转发之前是否有引用            a.setText(i.find_element_by_css_selector('[node-type="feed_list_content"]').text+            i.find_element_by_css_selector('[node-type="feed_list_forwardContent"]').text)        else:            a.setText(i.find_element_by_css_selector('[node-type="feed_list_content"]').text)    elif len(i.find_elements_by_css_selector('[node-type="feed_list_forwardContent"]'))>0: #展开了博文 有前置的情况下        a.setText(i.find_element_by_css_selector('[node-type="feed_list_content_full"]').text+        i.find_element_by_css_selector('[node-type="feed_list_forwardContent"]').text)     else:        a.setText(i.find_element_by_css_selector('[node-type="feed_list_content_full"]').text)    if len(i.find_elements_by_class_name("media_box")[0].find_elements_by_tag_name("img"))>0: #获取图片        for m in i.find_element_by_class_name("media_box").find_elements_by_tag_name("img"):            a.addImg(m.get_attribute("src"))    re.append(a)with open("output.txt","w",encoding="utf-8",errors="ignore") as f:    for i in re:        f.write("作者:"+i.author+"")        f.write("时间:"+i.time+"")        f.write("内容:"+i.text+"")        f.write("图片链接:")        for m in i.img: #这里可以用正则表达式直接变成文件名之类的,我们就不详细写了            f.write(m+",")        f.write("")def getImg(url):    imgname=url.spilt("")[-1]    with open("img/"+imgname,'w') as f:        f.write(requests.get(i).read()) #用requests是因为快速而且方便    return imgnamefor i in re: #下载图片    for m in i.img:        print(getImg(m)+"下载完成。")#---------------------------------------------------------------------------------------#5️⃣.发布新微博--------------------------------------------------------------------------driver.find_element_by_css_selector('[node-type="textEL"]').sendKeys("Hello World!")driver.find_element_by_css_selector('[node-type="submit"]').click()#---------------------------------------------------------------------------------------
    展开全文
  • Python 获取窗口句柄,模拟鼠标点击

    千次阅读 2020-05-13 22:54:06
    一、效果图 二、代码 import win32gui import win32api import pyautogui # from pymouse import PyMouse hwnd_title = {} def get_all_hwnd(hwnd, mouse): if (win32gui.IsWindow(hwnd) and ...

    一、效果图
    在这里插入图片描述
    二、代码

    import win32gui
    import win32api
    import pyautogui
    # from pymouse import PyMouse
    hwnd_title = {}
    
    def get_all_hwnd(hwnd, mouse):
        if (win32gui.IsWindow(hwnd) and
            win32gui.IsWindowEnabled(hwnd) and
            win32gui.IsWindowVisible(hwnd)):
            hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})
    
    
    win32gui.EnumWindows(get_all_hwnd, 0)
    
    # m = PyMouse()
    
    for h, t in hwnd_title.items():
        if t :
            print(h, t)
            if t == '米格尔':
                left, top, right, bottom = win32gui.GetWindowRect(h)
                print(left,top,right,bottom)
                pyautogui.click(right-206,bottom-31)
    
    
    

    三、输出结果
    在这里插入图片描述
    注意点:
    1.pyhook目前只支持到3.7版本

    展开全文
  • 学习python窗口句柄、后台鼠标点击等知识笔记

    万次阅读 多人点赞 2020-02-26 18:18:52
    获取句柄:(ParentName为对应窗口的完整名称(字符串),实在确定不了可以用按键抓抓的句柄抓取获得) parent = win32gui.FindWindow(0,ParentName) 获取子句柄:(ChildClass为子句柄的类名(字符串)) child=...
  • 由于给公司开发外挂,窗口句柄是必须的东西,所以经常要抓窗口句柄,原来老大给的是spy++的抓取句柄工具。 但是感觉不是太准确,而且抓取返回的信息比较少。于是在网上找了下,就有了这个抓取窗口的小工具-Spy++...
  • KEYUP, win32con.VK_RETURN, 0) https://blog.csdn.net/seele52/article/details/17504925 Part 1: 查找窗体句柄 貌似在win32编程的世界里,包括窗口到文本框的所有控件就是窗体,所有的窗体都有独立的句柄。...
  • Part 1: 查找窗体句柄 貌似在win32编程的世界里,包括窗口到文本框的所有控件就是窗体,所有的窗体都有独立的句柄。要操作任意一个窗体,你都需要找到这个窗体的句柄,这里,我们就可以用到FindWindow函数和...
  • python 查询控件句柄及其信息

    千次阅读 2019-12-30 10:59:59
    获取一个dialog的password 输入框的句柄 # 通过句柄精灵查询该控件的ID为271 password_hwnd = win32gui.GetDlgItem(dialog_hwnd, 271) # password edit
  • “`flow st=>start: 开始 e=>end: 结束 op=>operation: 我的操作 cond=>condition: 确认?st->op->cond cond(yes)->e cond(no)->op“`
  • python获取句柄并关闭窗口

    千次阅读 2020-03-26 16:18:10
    一个程序要用到某个文件,...搜集一些句柄的用法,同时也向大佬请教,脚本如下: import time import win32process handle = win32process.CreateProcess('C:\\Windows\\notepad.exe', '', None, None, 0, win32p...
  • 获取窗口句柄 只是查找某个窗口的句柄还是挺简单的,首先找到大窗口比如这里是“夜神模拟器”,然后再找子窗口,可以根据名字大致确定哪个是想要找到的子窗口。如果不是很确定,可以右键点击选中有一个“highlight...
  • 使用Python时,有时也会要操作到系统窗口的一些东西,下面就介绍win32gui.Findwindow(param1,param2)方法查找窗口句柄参数及对应参数值如何获取 win32gui.Findwindow(param1,param2):param1需要传入窗口的类名,...
  • import win32clipboardimport win32gui获取user32.dll的APIuser32 = windll.user32获取当前窗口句柄hwnd = user32.GetForegroundWindow()获取句柄对应的应用程序app = win32gui.GetWindowText(hwnd)print app ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • vb-EnumChildWindows所有窗口及子窗口句柄
  • Win32gui 无效窗口句柄

    千次阅读 2018-12-28 09:43:34
    xx是 无效窗口句柄 经过spy++排查,确定窗口类和名称都无误,后来经过多次测试,发现问题是:窗口打开太慢,在窗口打开之前就开始查找窗口了,当然就找不到了。所以要等一等,一秒也行。 time.sleep(1) 部分python...
  • python3 遍历 所有句柄窗口名称

    千次阅读 2019-06-17 22:59:04
    # -*- coding: utf-8 -*- """ Created on Mon Jun 17 22:55:29 2019 @author: Administrator """ import win32gui hwnd_title = dict() def get_all_hwnd(hwnd,mouse): if win32gui.IsWindow(hwnd) and win3...
  • python操作Windows窗口程序

    万次阅读 多人点赞 2018-03-16 17:23:09
    场景 定时获取数据接口数据写入Excel表格,Excel需要被其他程序使用,需要...其次,为了方面查找目标窗口句柄,可以下载一个微软自家的Spy++,这玩意儿满大街都是。有了它,还能很方便的查看窗体的消息。 句柄是...
  • 可以拖动查找程序工具中的准心,到要查找的程序上3.点击确定后,查看属性,获取类和标题代码写法 win32gui.Findwindow(param1,param2) param1:需要传入窗口的类名 param2:需要传入窗口的标题 使用工具...
  • 查看句柄,获取HANDLE,用于windows编程获取某窗口句柄
  • 1.通过类名和标题查找窗口句柄,并获得窗口位置和大小 import win32gui import win32api classname = MozillaWindowClass titlename = 百度一下,你就知道 - Mozilla Firefox #获取句柄 hwnd = win32gui.FindWindow...
  • 获取当前焦点所在窗口句柄,通过 句柄获取执行路径
  • 获取父窗口句柄 HWND hWnddlg = AfxGetMainWnd()->m_hWnd; //主窗口句柄 或者 HWND hWnddlg = this->m_hWnd; //主窗口句柄 获取子窗口句柄 如果子窗口是控件,并有控件ID号, 则如下获取其子窗口句柄 HWND hwnd=:...
  • python webdriver操作浏览器句柄 # 断言 assert self.driver.title.find(u"搜狗搜索引擎")>=0, "assert error" # 浏览器后退,前进,前进前要先后退 self.driver.back() self.driver.forward() # 浏览器强制...
  • Pywin32是一个Python库,为python提供访问...1.通过类名和标题查找窗口句柄,并获得窗口位置和大小 import win32gui import win32api classname = "MozillaWindowClass" titlename = "百度一下,你就知道 ...
  • WPF获取窗口句柄

    2015-08-16 12:57:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • 除了opencv专门用来进行图像处理,可以进行像素级、特征级、语义级、应用级的图像处理外,python中还有其他库用来进行简单的图像处理,比如图像的读入和保存、滤波、直方图均衡等简单的操作,下面对这些库进行详细的...
  • Pywin32是一个Python库,...1.通过类名和标题查找窗口句柄,并获得窗口位置和大小import win32gui import win32api classname = "MozillaWindowClass" titlename = "百度一下,你就知道 - Mozilla F...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,730
精华内容 1,092
关键字:

python查找窗口句柄

python 订阅