python3下获取全局坐标
前段时间自己想用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下获取全局坐标的更多相关文章
- python3下获取主流浏览器和python的安装路径
#coding=utf-8#python3下获取主流浏览器和python的安装路径#by dengpeiyou date:2018-07-09import winreg,os #取得浏览器的安装路径d ...
- Python3下获取WINDOWS下所有常用系统路径
#codeing:utf-8import os #搞定WINDOWS下所有系统路径filename='c:\\WINDOWS_ALL_PATH.txt'f=open(filename,'w')i=1f ...
- Android必知必会-获取View坐标和长宽的时机
如果移动端访问不佳,请访问–>Github版 背景 最近要实现一个功能,用到了一些属性动画,需要获取一些View的坐标信息,设计图如下: 这里我使用的是DialogFragment来实现的,可以 ...
- Android下获取FPS的几种方法
FPS(Frames Per Second)是关乎Android用户体验最为重要的指标之一,而在VR中更是如此.为了评估VR系统.VR SDK及Unity应用的性能,通常会实时获取FPS并将其显示出来 ...
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- JavaScript通过ID获取元素坐标
JavaScript通过ID获取元素坐标 function getElementPos(elementId) { var ua = navigator.userAgent.toLowerCase ...
- 【Spring】非Spring IOC容器下获取Spring IOC上下文的环境
前言 在Spring Web项目中,有些特殊的时候需要在非Spring IOC容器下获取Spring IOC容器的上下文环境,比如获取某个bean. 版本说明 声明POM文件,指定需引入的JAR. & ...
- 原生js获取鼠标坐标方法全面讲解-zmq
原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...
随机推荐
- python3 数独
数独 最近在网上看到数独,感觉非常有意思,所以就来实现以下. 一个数独题的网站(https://www.oubk.com/DailySudoku/17778/1),偷懒直接爬虫抓下来了,哈哈 代码实现 ...
- 通过SID查找历史执行的SQL语句
这次某系统发生严重的阻塞,但是去查顶级会话,发现已经没有该对应的sql_id了,于是我们只用通过 v$active_session_history 视图来寻找.下面是查找的过程: 1.查找顶层ASH历 ...
- js实现选中div内容并复制到剪切板
function copyUrl () { var div = document.getElementById('xxxx'); if (document.body.createTextRange) ...
- CSS:手机页面,常用字号和布局(工作中用)
{literal} {/literal} 公用css .cOrange,.cOrange:visited,.cOrange > a {color: #ff7200;} .border1-to ...
- LeetCode 102. Binary Tree Level Order Traversal 二叉树的层次遍历 C++
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- Awvs、Snort的下载安装
学渗透测试是我对自己的奖赏. 这是Awvs环境的搭建. 推荐链接:https://www.cnblogs.com/show2008/p/10371461.html 这是Snort环境搭建. 推荐链接: ...
- C++中#include<iostream>
#include 是个包含命令,就是把iostream.h这个文件里的内容复制到这个地方 iostream.h是input output stream的简写,意思为标准的输入输出流头文件.它包含: ( ...
- windows,mac os与 linux 3系统共存
硬盘1,C盘 win7 ,D盘 win7文件,E盘 mac os系统 通过easybcd引导, 选项1 ,window 7 选项2,mac --便捷式/外接存储介质(是一个制作好的专门引导mac的工具 ...
- linux centos 磁盘清理
执行df -h 与 du -sh / 所查询到的已用容量不对应 执行xfs_fsr来清理磁盘 参考 https://www.jianshu.com/p/0ded68808123
- Redis阻塞诊断基础
slowlog Redis慢查询 slowlog 参数 slowlog-log-slower-than: 慢查询时间阈值,超过这个阈值的查询将会被记录,默认值10000,但是微妙,也即10毫秒. sl ...