大家好,关于易语言交易平台api很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于易语言API发送消息问题的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
本文目录
一、易语言API发送消息问题
.DLL命令 _发送消息,整数型,,"SendMessageA"
.DLL命令 _发送消息A,整数型,,"SendMessageA"
.DLL命令模拟键盘行动_,整数型,"user32.dll","keybd_event",,这个函数模拟了键盘行动
.参数键代码,整数型,, bVk,欲模拟的虚拟键码
.参数键扫描码,整数型,, bScan,键的OEM扫描码
.参数标志值,整数型,, dwFlags,标志常数
.参数特定值,整数型,, dwExtraInfo,通常不用的一个值
.DLL命令 _投递消息,,,"PostMessageA",,向指定窗口句柄发送消息
.子程序 _启动子程序,整数型,,请在本子程序中放置易模块初始化代码
_临时子程序()'在初始化代码执行完毕后调用测试代码
返回(0)'可以根据您的需要返回任意数值
'本名称子程序用作测试程序用,仅带洞行在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。***注意不要修改本子程序的名称、参数及返回值类型。
.子程序文本投递,,公开,向指定窗口句柄的窗口中后台发送文本内容,对游戏有效!(无返回值)
.参数窗口句柄,整数型,,接收消息的窗口句柄
.参数文本内容,文本型,,发送的文本内容
_投递消息(窗口句柄, 258,消息 [计次], 0)
.子程序文本发送,,公开,向指定编辑框后台发送文本内容(无返回值)
.参数临时句柄,整数型,,接收消息的编辑框的句柄
.参数临时内容,文本型,,发送的文本内容蠢哗
_发送消息A(临时句柄, 177, 0,-1)
_发送消息(临时句柄, 194, 1,临时内容)
.子程序按键消息,,公开,向指定窗口句柄的窗口中发送按键消息(无返回值)
.参数窗口句柄,整数型,,接收消息的窗口句柄
.参数键代码,整数型,,按键的键代码
.参数状态,整数型,可空,可空:按键(按下+放开) 1输入字符 3#按下 4#放开
.参数是否功能键,逻辑型,可空,可空为假:普通键真:功能键(为功能键可用于热键技能不输入字符)
_投递消息(窗口句柄, 258,键代码, 0)
_投递消颤余息(窗口句柄,按下,键代码, 0)
_投递消息(窗口句柄,放开,键代码, 0)
.子程序按键组合消息,,公开,向指定窗口句柄的窗口中发送组合按键的消息,游戏中有效!(无返回值)
.参数窗口句柄,整数型,,接收消息的窗口句柄
.参数键代码,整数型,,按键的键代码
.参数功能键码1,整数型,,功能键的键代码
.参数功能键码2,整数型,可空,功能键的键代码(可选)
.参数功能键码3,整数型,可空,功能键的键代码(可选)
_投递消息(窗口句柄, 260,功能键码3, 0)'按下
_投递消息(窗口句柄, 260,功能键码2, 0)'按下
_投递消息(窗口句柄, 260,功能键码1, 0)'按下
_投递消息(窗口句柄, 256,键代码, 0)'按下
_投递消息(窗口句柄, 261,功能键码3, 0)'放开
_投递消息(窗口句柄, 261,功能键码2, 0)'放开
_投递消息(窗口句柄, 261,功能键码1, 0)'放开
_投递消息(窗口句柄, 257,键代码, 0)'放开
.子程序按键,,公开,执行模拟按键(无返回值)
.参数状态,整数型,可空,可空:按键(按下+放开) 3#按下 4#放开
模拟键盘行动_(键代码, 0, 0, 0)
模拟键盘行动_(键代码, 0, 2, 0)
' home键区 1 129 33UP 34Down 35End 36Home 45Ins 46Del
'光标区 1 129 37左 38上 39右 40下
二、易语言 HOOK API 教程 要详细的说明
#include#include"APIHook.h" extern CAPIHook g_OpenProcess;//自定义OpenProcess函数#pragma data_seg("YCIShared") HHOOK g_hHook= NULL; DWORD dwCurrentProcessId=0;#pragma data_seg() HANDLE WINAPI Hook_OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId){ typedef HANDLE(WINAPI*PFNTERMINATEPROCESS)(DWORD, BOOL,DWORD); if(dwProcessId!= dwCurrentProcessId){ return((PFNTERMINATEPROCESS)(PROC)g_OpenProcess)(dwDesiredAccess,bInheritHandle,dwProcessId);} return 0;}//挂钩OpenProcess函数 CAPIHook g_OpenProcess("kernel32.dll","OpenProcess",(PROC)Hook_OpenProcess);////static HMODULE ModuleFromAddress(PVOID pv){ MEMORY_BASIC_INFORMATION mbi; if(::VirtualQuery(pv,&mbi, sizeof(mbi))!= 0){ return(HMODULE)mbi.AllocationBase;} else{ return NULL;}} static LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam){ return::CallNextHookEx(g_hHook, code, wParam, lParam);} BOOL WINAPI SetSysHook(BOOL bInstall, DWORD dwThreadId){ BOOL bOk; dwCurrentProcessId=dwThreadId; if(bInstall){ g_hHook=::SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, ModuleFromAddress(GetMsgProc), 0); bOk=(g_hHook!= NULL);} else{ bOk=::UnhookWindowsHookEx(g_hHook); g_hHook= NULL;} return bOk;} API通过HOOK OpenProcess()实现进程防杀2007-07-04 14:41在WINDOWS操作系统下,当我们无法结束或者不知道怎样结束一个程序的时候,或者是懒得去找“退出”按钮的时候,通常会按“CTRL+ALT+DEL”呼出任务管理器,找到想结束的程序,点一下“结束任务”就了事了,呵呵,虽然有点粗鲁,但大多数情况下都很有效,不是吗?设想一下,如果有这么一种软件,它所要做的工作就是对某个使用者在某台电脑上的活动作一定的限制,而唤培又不能被使用者通过“和历唯结束任务”这种方式轻易地解除限制,那该怎么做?无非有这么三种方法:1.屏蔽“CTRL+ALT+DEL”这个热键的组合;2.让程序不出现在任务管理器的列表之中;3.让任务管理器无法杀掉这个任务。对于第一种方法,这样未免也太残酷了,用惯了“结束任务”这种方法的人会很不习惯的;对于第二种方法,在WINDOWS 9X下可以很轻易地使用注册服务进程的方法实现,烂或但是对于WINDOWS NT架构的操作系统没有这个方法了,进程很难藏身,虽然仍然可以实现隐藏,但实现机制较为复杂;对于第三种方法,实现起来比较简单,我的作品:IPGate网址过滤器就是采用的这种方式防杀的,接下来我就来介绍这种方法。任务管理器的“结束任务”实际上就是强制终止进程,它所使用的杀手锏是一个叫做TerminateProcess()的Win32 API函数,我们来看看它的定义: BOOL TerminateProcess( HANDLE hProcess;//将被结束进程的句柄 UINT uExitCode;//指定进程的退出码);看到这里,是不是觉得不必往下看都知道接下来要做什么:Hook TerminateProcess()函数,每次TerminateProcess()被调用的时候先判断企图结束的进程是否是我的进程,如果是的话就简单地返回一个错误码就可以了。真的是这么简单吗?先提出一个问题,如何根据hProcess判断它是否是我的进程的句柄?答案是:在我的进程当中先获得我的进程的句柄,然后通过进程间通讯机制传递给钩子函数,与hProcess进行比较不就行了?错!因为句柄是一个进程相关的值,不同进程中得到的我的进程的句柄的值在进程间进行比较是无意义的。怎么办?我们来考察一下我的hProcess它是如何得到的。一个进程只有它的进程ID是独一无二的,操作系统通过进程ID来标识一个进程,当某个程序要对这个进程进行访问的话,它首先得用OpenProcess这个函数并传入要访问的进程ID来获得进程的句柄,来看看它的参数: HANDLE OpenProcess( DWORD dwDesiredAccess,//希望获得的访问权限 BOOL bInheritHandle,//指明是否希望所获得的句柄可以继承 DWORD dwProcessId//要访问的进程ID);脉络渐渐显现:在调用TerminateProcess()之前,必先调用OpenProcess(),而OpenProcess()的参数表中的dwProcessId是在系统范围内唯一确定的。得出结论:要Hook的函数不是TerminateProcess()而是OpenProcess(),在每次调用OpenProcess()的时候,我们先检查dwProcessId是否为我的进程的ID(利用进程间通讯机制),如果是的话就简单地返回一个错误码就可以了,任务管理器拿不到我的进程的句柄,它如何结束我的进程呢?至此,疑团全部揭开了。由Hook TerminateProcess()到Hook OpenProcess()的这个过程,体现了一个逆向思维的思想。其实我当初钻进了TerminateProcess()的死胡同里半天出也不来,但最终还是蹦出了灵感的火花,注意力转移到了OpenProcess()上面,实现了进程防杀。喜悦之余,将这心得体会拿出来与大家分享。参考资料: 版权所有,谢绝抄袭!!!!!!
三、易语言API有什么作用或功能简单的介绍完整点!
API即 Application Programming Interface.应用程序编程接口,是WINDOWS提供渣租陪给应用程序如蠢开发者的一系列接口支持。
程序开发者可以在不处理(甚至不需要了解)过于底层内容的情况下,高效开发出自己的程序。
例如:ShowWindow()这个函数(存储于动态链接库USER32.dll里)用于显示一个窗口,你只需要提供这个函数相应的窗口参数即可,而不需要你自己写过多的处理代码,如画出窗体,分配资源,驱动显卡在显示器上显示出来等等。
WINDOWS API可参考程序员手册或API手册之类的书籍,常用的记住些就可以了,其它的现用现查。
大概有几千个函数,分部在WINDOWS和SYSTEM32目录的动态链型唯接库里。
WINDOWS API在各种语言中很方便地调用。如:VB C++ Delphi Java易语言等等(只要支持调用动态链接库的语言,如果这个都支持不了,那可以不用去学了).
易语言交易平台api和易语言API发送消息问题的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
声明:本文内容来自互联网不代表本站观点,转载请注明出处:https://www.41639.com/15_271281.html
