易语言api使用教程(易语言 api)
大家好!今天让创意岭的小编来大家介绍下关于易语言api使用教程的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,有小程序、在线网页版、PC客户端和批量生成器
问友Ai官网:https://ai.de1919.com。
本文目录:
易语言 API函数
ReadProcessMemory:读写内存WriteProcessMemory:写入内存
CloseHandle:关闭句柄
OpenProcess:打开进程
新建DLL命令,复制以下内容:
----------------------------------------------------------------------
.版本 2
.DLL命令 OpenProcess, 整数型
.参数 dwDesiredAccess, 整数型
.参数 bInheritHandle, 逻辑型
.参数 dwProcessId, 整数型
.DLL命令 WriteProcessMemory, 整数型, , , , 在指定进程中写内存
.参数 hProcess, 整数型
.参数 lpBaseAddress, 整数型
.参数 lpBuffer, 字节集
.参数 nSize, 整数型
.参数 lpNumberOfBytesWritten, 整数型
.DLL命令 CloseHandle, 整数型
.参数 hObject, 整数型
----------------------------------------------------------------------
易语言API和DLL教程!
说白了 DLL就是API API就是DLL 你首先不要管DLL是什么 API是什么 等你会用后在去简单 记住简单的了解下 他们的性质有哪些不同 其实用法是一样的 如果你一开始就去深度了解API,和DLL 那样只能是吧问题搞成复杂化
DLL是好比是个封装的程序,需要调用才能使用
API我们可以这样理解是系统自带的一个DLL 懂了吧 你只要了解DLL API 就差不多了解了 前面已经说到了 你不要管他们2个是什么意思 先要会用
易语言里的DLL文件名:是可以自定义的,你可以随便改名字,返回类型它(API.DLL)本身返回的是什么类型就写什么类型.
易语言里的DLL库文件名:就是(API.DLL)的名字,就好比是编译出来的程序的名字
易语言里的DLL库中对应的文件名:就是(API.DLL)里面的子程序名字。
首先怎么写DLL 我告诉你怎么写 给个源码你 上面标示的很清楚
易语言如何调用API接口,请教!
这个API是这样的。
1,返回值是整数型的,非零标示成功(如,1或2),零标示失败
2,第一个参数,这个参数最好填文本型变量名,这个文本型变量名就是计算机名
3,第二个参数,就是文本变量的长度,整数型
注意事项:
1,,先声明文本变量,如下
.版本 2
.局部变量 我的计算机名, 文本型
2,给变量赋值,任意文本,长度最好是16或者以上,但不需要太长,一般16就可以,如下
我的计算机名 = “吾问无为谓呜呜呜”
我也顺手些了一下,截个图你看看吧
追问可能是我没有说明白,我的意思是通过使用DLL命令调用GetComputerNameA函数的方式来实现。不是直接调用自带类库的方式。
追答这就是DLL命令啊。。
自己把DLL命令插入到易语言就行了
只不过我这命名的是中文而已。
易语言 怎样快速掌握API学习?
先打开易语言,点程序-新建,然后选择常用向导,选择API助手,双击它,或者点击确定打开后会弹出打开API助手,里面有很多函数的用法介绍等,根据提示找到你需要的函数
或者可以在搜索里面进行搜索关键字,轻松找到你想要的函数,在索引中输入关键字则是查找以该关键字开头的函数
我们以设置窗口标题为例,找到它并双击它,将它添加到选用API数据下
然后我们点击API相关例程,里面的例程可以帮你掌握该函数的用法,双击打开它,弹出的对话框选择“是”,然后将该源文件保存到一个目录下,自己随意指定
点击保存后会自动帮你打开该文件,打开后我们可以看到一些代码,这是对于该函数的使用的一个例子,代码一般不长,很容易就能看懂
相信像这样把源码及用法给你之后,你一定可以很快就将其掌握的
明白使用方法之后,我们再将其应用到我们开发的软件中去即可
易语言 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()上面,实现了进程防杀。喜悦之余,将这心得体会拿出来与大家分享。参考资料: http://hi.baidu.com/wlw7758/blog/item/9d109322816032f1d7cae2d7.html版权所有,谢绝抄袭!!!!!!追问如何HOOK呢 你这样里都没有说如何HOOK 我要的是方法
追答HOOK的是哪个方面的啊,说清楚点。。
追问就好比你说的这个 把他的过程写下来 说是要HOOK OpenProcess() 但它的过程了 就这么一句话说 HOOK OpenProcess() 我怎么知道怎么怎么搞 说了要详细的说明 例子
追答还是听不清楚你在说什么,能说的再详细点么。。。HOOK有很多方面,不知道你说的是哪个方面。。。
追问这样吧 就想你说的这个 拦截OpenProcess() 就能实现防杀 那应该怎么实现了?
以上就是关于易语言api使用教程相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: