Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用win32api,模拟鼠标移动并复制/粘贴到diskfile中_Python_Winapi - Fatal编程技术网

Python使用win32api,模拟鼠标移动并复制/粘贴到diskfile中

Python使用win32api,模拟鼠标移动并复制/粘贴到diskfile中,python,winapi,Python,Winapi,大家好…我正在使用win32api。其用途是在计算机屏幕上移动鼠标,突出显示一个区域,复制内容,并将内容发送到MS Excel电子表格 代码如下: import xlwt import win32api import win32con import win32clipboard import time x,y = win32api.GetCursorPos() win32api.SetCursorPos((36, 311)) # choose the contents, highlight

大家好…我正在使用win32api。其用途是在计算机屏幕上移动鼠标,突出显示一个区域,复制内容,并将内容发送到MS Excel电子表格

代码如下:

import xlwt
import win32api
import win32con 
import win32clipboard
import time

x,y = win32api.GetCursorPos()
win32api.SetCursorPos((36, 311))

# choose the contents, highlight area from 36,311 to 66,400
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) 
time.sleep(0.05)
win32api.SetCursorPos((66, 400))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

# copy the contents
time.sleep(0.05)
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard
aaa = win32clipboard.SetClipboardData
win32clipboard.CloseClipboard()

# write the contents into speadsheet
book = xlwt.Workbook(encoding='utf-8', style_compression = 0)
sheet = book.add_sheet('SheetOK', cell_overwrite_ok = True)
sheet.write (1, 1, aaa)
book.save("C:\\paste_write.xls")
它不工作并返回错误“异常:意外数据类型”。看起来复制粘贴部分不起作用

你能帮我吗?谢谢

错误:

Traceback (most recent call last):
  File "C:\Python27\simulate mouse click.py", line 27, in <module>
    sheet.write (0, 0, aaa)
  File "C:\Python27\lib\xlwt\Worksheet.py", line 1030, in write
    self.row(r).write(c, label, style)
  File "C:\Python27\lib\xlwt\Row.py", line 259, in write
    raise Exception("Unexpected data type %r" % type(label))
Exception: Unexpected data type <type 'builtin_function_or_method'>
回溯(最近一次呼叫最后一次):
文件“C:\Python27\simulate mouse click.py”,第27行,在
工作表写入(0,0,aaa)
文件“C:\Python27\lib\xlwt\sheet.py”,第1030行,以书面形式
self.row(r.write)(c、标签、样式)
写入文件“C:\Python27\lib\xlwt\Row.py”,第259行
引发异常(“意外的数据类型%r”%type(标签))
异常:意外的数据类型

错误消息将显示失败的代码行:

Traceback (most recent call last):
  File "C:\Python27\simulate mouse click.py", line 27, in <module>
    sheet.write (0, 0, aaa)
  ^^^ THIS YOUR FUNCTION CALL THAT FAILED

  File "C:\Python27\lib\xlwt\Worksheet.py", line 1030, in write
    self.row(r).write(c, label, style)
  File "C:\Python27\lib\xlwt\Row.py", line 259, in write
    raise Exception("Unexpected data type %r" % type(label))
  ^^^ THIS IS WHERE IT ACTUALLY FAILED IN THE LIBRARY

Exception: Unexpected data type <type 'builtin_function_or_method'>
啊-这里您想做的是计算函数,但是您省略了括号
&
。因此,所发生的情况是
aaa
已被分配函数本身。要调用函数,请查看此答案以了解详细信息

您还看到了上面一行中函数的左括号

win32clipboard.EmptyClipboard
请尝试以下方法:

win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText("test data")
...
aaa = win32clipboard.GetClipboardText()


不过,这里似乎还有第二个问题,您必须将数据传递给
SetClipbardData
——它不会触发对当前选定文本的复制操作。您可能需要使用不同的API。

提问时请粘贴完整的错误消息。感谢Peter Gibson的回复。他补充道。彼得·吉布森,谢谢你的详细解释。对于这样的任务(复制一个屏幕区域,然后将复制的内容写入一个文件),您会推荐什么API?@MarkK您似乎想远程控制一个程序。你发送一些鼠标移动和点击。因此,也发送通常建议程序复制选择的命令(主要是strg-c),以便受控程序本身填充clipboard@vlad_tepesch是的,我想建立某种自动化,因为这项工作需要从1个屏幕复制粘贴到Excel文件,我正在尝试看看Python是否可以完成这项工作。
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText("test data")
...
aaa = win32clipboard.GetClipboardText()