前段时间自己想用python写一个关于截屏翻译的小功能,所以首先需要获取鼠标的坐标动作有按下、拖拽、释放。查找了很多资料
无非是pyhook或者用其他语言重写。但是自己用的是python3.65,第三方模块pyhook就不能很好的兼容了。
因为自己刚刚学习python困恼了一段时间。真的很想。。。。,之后再网上查找资料发现GetAsyncKeyState和
GetCursorPos 能够满足我部分的需求(C语言也是二把手,你懂的。)。突然灵光一闪。所以就决定用c来获取
实时鼠标位置 和鼠标状态吧。说干就干,现在附上源码,代码太扎眼大家将就看吧。更重要的是一种解决
方法。这方面不错的大神也可以自己重写一下。发到下面这样也可以帮到更多人
#C:dllmain.c
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <string.h>
DLLIMPORT void HelloWorld()
{
MessageBox(0,"Hello World from DLL!\n","Hi",MB_ICONINFORMATION);
}
DLLIMPORT long int getMouseXYDownload()
{
POINT p;
GetCursorPos(&p);
SHORT st = GetAsyncKeyState(VK_LBUTTON);
long int jilu;
jilu=p.x*10000;
jilu=jilu+p.y;
if(st==-32768)
{
return jilu;
}
return 1;
}
DLLIMPORT long int getMouseXY(){
POINT p;
GetCursorPos(&p);
long int jilu;
jilu=p.x*10000;
jilu=jilu+p.y;
return jilu;
}
DLLIMPORT long int MouseState()
{

SHORT st = GetAsyncKeyState(VK_LBUTTON);
return st;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
{
break;
}
case DLL_PROCESS_DETACH:
{
break;
}
case DLL_THREAD_ATTACH:
{
break;
}
case DLL_THREAD_DETACH:
{
break;
}
}

/* Return TRUE on success, FALSE on failure */
return TRUE;
}
#C:dll.h

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
#define DLLIMPORT __declspec(dllexport)
#else
#define DLLIMPORT __declspec(dllimport)
#endif

DLLIMPORT void HelloWorld();
DLLIMPORT long int getMouseXY();
DLLIMPORT long int getMouseXYDownload();
DLLIMPORT long int MouseState();
#endif
#生成Dll文件后,无非是在python处理dll传递过来的数据,我就不附上源码了。以免扎到大神们的眼
我是用的DEV C++生成的Dll文件
python3.6.5 中需要导入模块
from ctypes import CDLL
get_mouse=CDLL('getmouse.dll')

GetCursorPos,函数名。该函数检取光标的位置,以屏幕坐标表示。
https://baike.baidu.com/item/GetCursorPos/6369757

GetAsyncKeyState是一个用来判断函数调用时指定虚拟键的状态,确定用户当前是否按下了键盘上的一个键的函数。如果按下,则返回值最高位为1。 [1]
https://baike.baidu.com/item/GetAsyncKeyState/918387?fr=aladdin

通过以上两种win32方法可以获取实时鼠标,鼠标状态,以及经过筛选后,鼠标在按下、拖拽、释放处的鼠标坐标状态等

希望自己的这篇文件可以给大家一个方向,可以帮助到大家。  檐下听雨献上!

python3下获取全局坐标的更多相关文章

  1. python3下获取主流浏览器和python的安装路径

    #coding=utf-8#python3下获取主流浏览器和python的安装路径#by dengpeiyou date:2018-07-09import winreg,os #取得浏览器的安装路径d ...

  2. Python3下获取WINDOWS下所有常用系统路径

    #codeing:utf-8import os #搞定WINDOWS下所有系统路径filename='c:\\WINDOWS_ALL_PATH.txt'f=open(filename,'w')i=1f ...

  3. Android必知必会-获取View坐标和长宽的时机

    如果移动端访问不佳,请访问–>Github版 背景 最近要实现一个功能,用到了一些属性动画,需要获取一些View的坐标信息,设计图如下: 这里我使用的是DialogFragment来实现的,可以 ...

  4. Android下获取FPS的几种方法

    FPS(Frames Per Second)是关乎Android用户体验最为重要的指标之一,而在VR中更是如此.为了评估VR系统.VR SDK及Unity应用的性能,通常会实时获取FPS并将其显示出来 ...

  5. android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)

    在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...

  6. windows下获取IP地址的两种方法

    windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

  7. JavaScript通过ID获取元素坐标

    JavaScript通过ID获取元素坐标 function getElementPos(elementId) {    var ua = navigator.userAgent.toLowerCase ...

  8. 【Spring】非Spring IOC容器下获取Spring IOC上下文的环境

    前言 在Spring Web项目中,有些特殊的时候需要在非Spring IOC容器下获取Spring IOC容器的上下文环境,比如获取某个bean. 版本说明 声明POM文件,指定需引入的JAR. & ...

  9. 原生js获取鼠标坐标方法全面讲解-zmq

    原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...

随机推荐

  1. UnityShaderVariant的一些探究心得

    最近遇到了一个问题,角色在Unity编辑器里运行渲染结果都是好的,打包到IOS上却发现,角色身上渲染的很黑.花了些时间查了查,又试了试,把这方面算是初步弄清楚了. 先说出现问题的原因,由于我们把sha ...

  2. 高性能网络通信框架 HP-Socket v5.2.1

    项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : http://www.docin.com/p-2079016612.html 下载地址 : https ...

  3. TestNG实现日志输出

    这里介绍的是TestNG中的Report类来实现简单的log输出这个很简单直接看例子吧 package com.rrx.test; import java.io.IOException; import ...

  4. Flink开发环境搭建(maven)

    1.下载scala sdk http://www.scala-lang.org/download/ 直接到这里下载sdk,(https://downloads.lightbend.com/scala/ ...

  5. Kettle通过Webservice获取天气信息

      Kettle通过Webservice获取天气信息 需求: 通过kettle工具,通过webservice获取天气信息,写成xml格式文件. 思路: Kettle可通过两种选择获取webservic ...

  6. less和sass的区别

    首先sass和less都是css的预编译处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,作用域,JavaScript赋值等 加快了css开发效率,当然这两者都可以配合gulp和 ...

  7. Spring boot 自定义拦截器

    1.新建一个类实现HandlerInterceptor接口,重写接口的方法 package com.zpark.interceptor; import com.zpark.tools.Constant ...

  8. k3生成解决方案时错误处理

    F6一键生成,会出现进程使用的错误,关掉了游览器,bos设计器,以及重启了本机iis站点,都没解决,打开任务管理器发现,bos.ide没有关掉

  9. urllib、urllib2、urllib3区别和使用

    python3中把urllib和urllib合并为一个库了,urllib对应urllib.request 1.) python 中最早内置拥有的网络请求模块就是 urllib,我们可以看一下 urll ...

  10. MySql TIMEDIFF做计算之后,后台报Illegal hour value '24' for java.sql.Time type 问题

    页面需要显示这种格式:31:01:20 但是后台Springboot会提示Illegal hour value '24' for java.sql.Time type in value '24:00: ...