前段时间自己想用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. C语言博客作业5--指针

    C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...

  2. 页面中dropDownListt的二级关联

    当下拉框选项不多,而且可以写死的情况下,用js在页面写可能更方便. 我的html代码如下,两个关联是下拉框:配件类型.子类型. <div class="col-md-3 col-sm- ...

  3. 特殊字符的过滤,防止xss攻击

    概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...

  4. 【JsonView工具】谷歌浏览器中安装JsonView扩展程序

    接口测试过程中,有时候要查看接口返回的数据(比如Get接口),为了更方便的查看,发现这个插件挺好用的. 实际开发工作中经常用到json数据,那么就会有这样一个需求:在谷歌浏览器中访问URL地址返回的j ...

  5. VS Code 1.18版本更新内容整理(2017年10月 October 2017)

    久前开始使用的VS Code,使用一段时间以后确实感觉比之前在用的Sublime Text好很多,可能是汉化及插件方面使用做的更好吧. 今天推送到更新到1.18,按我的个性,喜欢一个东西的话,我就回去 ...

  6. 关于c# Debug和Release的区别 (转)

    关于Debug和Release的区别之讨论本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release ...

  7. undefined symbol: PyFPE_jbuf

    参考: https://blog.csdn.net/ture_dream/article/details/52733326 报错确实是Python的版本不一致. 但是我又不想删除anaconda. 怎 ...

  8. 整合MVC实现文件上传

    1.整合MVC实现文件上传整合MVC实现文件上传在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,文件上传完毕之后需要将提交的基本信息插入数据库,那么我们来实现这个操作.整个MVC实 ...

  9. 基于SpringBoot+Mybatis+AntDesign快速开发平台,Jeecg-Boot 1.1 版本发布

    Jeecg-Boot 1.1 版本发布,初成长稳定版本 导读     平台首页UI升级,精美的首页支持多模式 提供4套代码生成器模板(支持单表.一对多) 集成Excel简易工具类,支持单表.一对多导入 ...

  10. DataGridView操作小记(1)

    1.获取总列数 int Column_num = DataGridView1.ColumnCount; 2.获取总行数 int Column_num = DataGridView1.RowCount; ...