上个月就打算开发个还算好玩的项目,但是一直没时间。这篇是此项目用到的一部分,
处理好此部分基本还差通信等方面的了。首先模拟鼠标键盘按下释放的动作,本人利用X11
这个库,所以要了解X11编程;其次,本身用c或者c++就可以实现了,但是由于本人是py
粉,所以总想把代码搬进python,所以本人就要实现python模块,本篇用的ctypes,以后会
把python的c扩展模块附上来的。
1.X11编程
首先简单的介绍一下X11吧,网上有介绍,本人就不重复了。我们知道X是以server与client
的方式提供服务的,我们想要使用其功能,我们就需要与server通信。使用
Display *XOpenDisplay(char *display_name)获得一个Display类型的句柄指针就可以了。
display_name可以是DISPLAY环境变量,用echo $DISPLAY输出是:0(这是本人linux mint输
出的)。如果display_name为NULL接口默认使用环境变量保存的值。X11编程常用的几个头
文件:
#include
#include
#include
本人用到的是#include
XTest.h有我们模拟鼠标和键盘需要的接口XTestFakeButtonEvent、 XTestFakeMotionEvent和
XTestFakeKeyEvent。想了解更多信息只需要在终端上man加函数名即可获得。
比如XTestFakeMotionEvent接口:
代码如下:
int XTestFakeMotionEvent(display, screen_number, x, y,delay);
Display *display; //此值就是从XOpenDisplay获得
int screen_number; //让其为-1即可表示当前的屏幕
int x, y; //屏幕位置
unsigned long delay; //延迟毫秒,让其为CurrentTime表示不延迟
最后我们要关闭Display句柄:XCloseDisplay(Display *display)。
接口实现如下:
代码如下:
#include
#include
#include
Display *dspopen(){
Display *dsp = XOpenDisplay(NULL);
if(!dsp) {
printf("open display failed\n");
return NULL;
}
return dsp;
}
int presskey(Display *dsp,int s){ //键盘按
if(dsp==NULL)
return -1;
// KeySym keysym=XStringToKeysym(s);
KeyCode key=XKeysymToKeycode(dsp,s);
if(key==NoSymbol)
return -1;
XTestFakeKeyEvent(dsp,key,1,CurrentTime);
XFlush(dsp);
return 0;
}
int move(Display *dsp,int x,int y) //鼠标移动
{
if(0==XTestFakeMotionEvent(dsp,-1,x,y,CurrentTime))
{
printf("Cannot move!\n");
return -1;
}
return 0;
}
int buttonpress(Display *dsp,int type) //鼠标按,type=1表示左键,3是右键,2是中键
{
if(0==XTestFakeButtonEvent(dsp,type,1,CurrentTime))
{
printf("press failed\n");
return -1;
}
return 0;
}
int buttonrelease(Display *dsp,int type) //鼠标释放
{
if(0==XTestFakeButtonEvent(dsp,type,0,CurrentTime))
{
printf("release failed\n");
return -1;
}
return 0;
}
int releasekey(Display *dsp,int s){ //键盘release
if(dsp==NULL)
return -1;
// KeySym keysym=XStringToKeysym(s);
KeyCode key=XKeysymToKeycode(dsp,s);
if(key==NoSymbol)
return -1;
XTestFakeKeyEvent(dsp,key,0,CurrentTime);
XFlush(dsp);
return 0;
}
void dspclose( Display *dsp ){
if(dsp!=NULL){
XCloseDisplay(dsp);
}
}
//int main(){ //测试用的会在程序结束后,在光标前输出c
// Display *dsp=dspopen();
// presskey(dsp,'c');
// releasekey(dsp,'c');
// dspclose(dsp);
// return 0;
/

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo

Inpython、「リスト」は、「リスト」、自由主義的なもの、samememory効率が高く、均質な偶然の瞬間の想起された「アレイ」の「アレイ」の「アレイ」の均質な偶発的な想起されたものです

pythonlistsandarraysaraybothmutable.1)listsareflexibleandsupportheTeterdatabutarlessmemory-efficient.2)Arraysaremorememory-efficientiant forhomogeneousdative、ressivelessatile、ressing comerttytytypecodeusageodoavoiderorors。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

PythonまたはCの選択は、プロジェクトの要件に依存します。1)迅速な開発、データ処理、およびプロトタイプ設計が必要な場合は、Pythonを選択します。 2)高性能、低レイテンシ、および緊密なハードウェアコントロールが必要な場合は、Cを選択します。

毎日2時間のPython学習を投資することで、プログラミングスキルを効果的に改善できます。 1.新しい知識を学ぶ:ドキュメントを読むか、チュートリアルを見る。 2。練習:コードと完全な演習を書きます。 3。レビュー:学んだコンテンツを統合します。 4。プロジェクトの実践:実際のプロジェクトで学んだことを適用します。このような構造化された学習計画は、Pythonを体系的にマスターし、キャリア目標を達成するのに役立ちます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









