python多个记事本同步输入内容

本人py小白一枚,想做个小程序可以同步按键,比如开3个记事本,在一个记事本里输入可以同步内容到其他两个记事本,网上找了些代码凑了下,折腾了几天没折腾出来, 代码:

# -*- coding: utf-8 -*- #
import pythoncom
import pyHook
import win32api,win32gui,win32con


windows = []
# 问题1:这个startSync我只想类似于标识一样 不需要定义成数组 但是用startSync = 0的话执行会报错 为啥定义成数组就不报错了
startSync = []


def onKeyboardEvent(event):
    # F6将当前窗口加入同步
    if event.KeyID == 117:
        hwnd = win32gui.GetForegroundWindow()
        windows.append(hwnd)
        print hwnd, 'append to windows'

    # 发送按键到其他窗口
    if len(startSync) != 0:
        windows_max = len(windows)
        for index in range(windows_max):
            # 第一个加入的窗口未主窗口 无需同步按键
            # if index == 0:
            #     continue

            # 问题2:这种方法可以发送按键 但是有个问题 会无限循环 这个keybd_event又触发了键盘事件
            # win32gui.SetForegroundWindow(windows[index])
            # win32api.keybd_event(event.KeyID, 0, 0, 0)
            # win32api.keybd_event(event.KeyID, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键

            # 问题3:这种方法貌似不能发送按键到未激活的窗口 如果上面setForeground了 会有个新问题 只能发送按键到最后个窗口
            win32gui.PostMessage(windows[index], win32con.WM_KEYDOWN, event.KeyID, 0)
            win32gui.PostMessage(windows[index], win32con.WM_KEYUP, event.KeyID, 0)

    # F7开始同步
    if event.KeyID == 118:
        startSync.append(1)
        print 'start sync'

    return True


def main(): 
    # 创建一个“钩子”管理对象 
    hm = pyHook.HookManager()  
    # 监听所有键盘事件 
    hm.KeyDown = onKeyboardEvent 
    # 设置键盘“钩子” 
    hm.HookKeyboard()
    # 进入循环,如不手动关闭,程序将一直处于监听状态 
    pythoncom.PumpMessages()

    
if __name__ == "__main__": 
    main()
阅读 3.5k
1 个回答

直接使用shutil:

import shutil
src = '被复制的文件路径'
dst = '复制目的地'
shutil.copy2(src, dst)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题