前段时间自己想用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. git push时报错refusing to merge unrelated histories

    1. 删除本地项目中的.git目录,然后向远程仓库提交代码的时候,重新配置后再次提交.会有冲突. 解决方式: git remote add origin [//your giturl] git pul ...

  2. python-day5内置模块time、range、sys、os、shelve、xml、max等

    @os树状目录 import os,os.path def showdir(path,depth):    if depth==0:        print(path)    for item in ...

  3. pycharm同步代码到coding

    代码同步coding三步曲: 1.pycharm的tips---vcs---checkout from version control---git 选择git后会弹出clone repository弹 ...

  4. 在windows 10 上使用aspnet_regiis.exe -i 命令报 “此操作系统版本不支持此选项” 的解决办法

    用CMD窗口在C:\Windows\Microsoft.NET\Framework64\v4.0.30319下使用命令aspnet_regiis -i 报错: “此操作系统版本不支持此选项” .结果是 ...

  5. css样式基础详解

    一.字体属性:(font) 1.大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 2.样式 {font-styl ...

  6. 记一次easywechat企业付款问题

    由easywechat的cli "./vendor/bin/easywechat payment:rsa_public_key" 获取RSA公钥时 生成的.pem文件内的公钥默认是 ...

  7. python深拷贝,浅拷贝

    1.浅拷贝, 首先要引用copy包 from copy import copy class A: def __init__(self): self.A=1 self.B=2 a = A() copy( ...

  8. 折腾newifi3 d2笔记

    1.忘记密码,恢复出厂 通电开机,等正常运行后,长按RESET大约6~8秒,见所有灯开始一起慢闪,可松手等重启就是出厂状态了,出厂IP是:192.168.99.1 2.免拆机刷breed 首先要打开s ...

  9. 《DOM Scripting》学习笔记-——第四章 案列分析 JS美术馆(点击链接到图片)

    实现效果:点击图片链接,可以在当前网页显示图片,并且显示图片标题. Html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN&qu ...

  10. CSS 图像左右对齐

    左右对齐图像使用的技术是浮动div元素. float:left 左对齐 float:right右对齐 示例 <!DOCTYPE html> <html>     <hea ...