首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python脚本到Exe Win32api不起作用

Python脚本到Exe Win32api不起作用
EN

Stack Overflow用户
提问于 2015-08-18 19:43:42
回答 1查看 211关注 0票数 0

我试着寻找一个类似的问题,可能有人有,但找不到。长话短说。我编写了一个python脚本,用于创建一个文件,并对其进行写入和读取。然后,我使用nssm-2.24创建了.exe,并将可执行文件作为服务进行安装,它可以正常工作。

然后,我创建了第二个脚本,它从python模块调用win32api和win32con,只需在屏幕上移动鼠标并执行一两次单击。这项工作是在python内部进行的,并且在编译为.exe时也是如此。

当我将第二个exe安装为服务时,它会显示为服务并运行,但鼠标不会在屏幕上移动。

代码语言:javascript
复制
Code below:
import autopy
import time
import win32api
import win32con

def click(x, y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

def move_mouse_around():
    time.sleep(300)
    autopy.mouse.smooth_move(500,500)
    time.sleep(.`enter code here`5)
    autopy.mouse.smooth_move(200,200)
    time.sleep(1.5)
    autopy.mouse.smooth_move(200,600)
    time.sleep(1)
    autopy.mouse.smooth_move(200,500)
    time.sleep(1)
    autopy.mouse.smooth_move(200,400)
    time.sleep(1)
    autopy.mouse.smooth_move(400,200)
    time.sleep(.5)
    autopy.mouse.smooth_move(400,300)
    time.sleep(.5)
    autopy.mouse.smooth_move(400,400)
    time.sleep(.5)
    autopy.mouse.smooth_move(400,450)
    time.sleep(1)

    autopy.mouse.smooth_move(50,50)
    time.sleep(1)

    click(50,50)
    click(50,50)
    time.sleep(.5)
    autopy.mouse.smooth_move(50,150)
    click(50,150)

    autopy.mouse.smooth_move(500,500)
    time.sleep(.5)
    autopy.mouse.smooth_move(200,200)
    time.sleep(1.5)
    autopy.mouse.smooth_move(200,600)
    time.sleep(1)
    autopy.mouse.smooth_move(200,500)
    time.sleep(1)
    autopy.mouse.smooth_move(200,400)
    time.sleep(1)
    autopy.mouse.smooth_move(400,200)
    time.sleep(.5)
    autopy.mouse.smooth_move(400,300)
    time.sleep(.5)
    autopy.mouse.smooth_move(400,400)
    time.sleep(.5)
    autopy.mouse.smooth_move(400,450)
    time.sleep(1)

    autopy.mouse.smooth_move(17,50)
    click(17,50)
    click(17,50)
    time.sleep(1.5)


def close_window():
    autopy.mouse.smooth_move(1360,5)
    click(1360,5)
    time.sleep(30)




#close_window()


while True:
    move_mouse_around()
EN

回答 1

Stack Overflow用户

发布于 2015-08-18 20:13:09

服务在非交互式会话(会话0 )中执行,因此与用户的交互式桌面隔离。用户在会话1、会话2等中拥有桌面。

所有这些都意味着您无法通过服务与用户的桌面进行交互。您必须在与用户相同的桌面上的用户会话中执行此代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32071481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档