剑仙十号
外挂工程师
关注数: 19
粉丝数: 442
发帖数: 3,966
关注贴吧数: 96
找怪打怪。3D游戏 鼠标画圆算法 找怪打怪。3D游戏 鼠标画圆算法
找怪打怪。3D游戏 鼠标画圆算法 找怪打怪。3D游戏 鼠标画圆算法
注册与反注册。regsvr32 com接口dll 注册与反注册。regsvr32 com接口dll . regsvr32 路径\dm.dll regsvr32 /u 路径\dm.dll regsvr32是一个用于注册和反注册DLL文件的命令行工具,主要用于在Windows系统中注册或注销COM组件。 命令行用记事本编辑,文件后缀名保存为 .bat . 使用方法 注册DLL文件:在命令提示符中输入 regsvr32 [lbk]路径[rbk]filename.dll,其中 [lbk]路径[rbk]filename.dll 是要注册的DLL文件的完整路径和名称。如果DLL文件位于当前目录下,可以直接输入文件名。 . 反注册DLL文件:在命令提示符中输入 regsvr32 /u [lbk]路径[rbk]filename.dll,其中 /u 参数用于取消注册DLL文件。 . . 常见错误及解决方法 找不到指定模块:确保DLL文件的路径正确无误,并且文件存在。如果DLL文件位于其他目录中,请提供完整的路径。 加载库时出错:可能是由于DLL文件损坏或不兼容造成的,尝试重新下载或修复DLL文件。 注册表访问被拒绝:以管理员身份运行命令提示符,右键点击“命令提示符”图标,选择“以管理员身份运行”。 参数说明 /u:表示注销(取消注册)DLL文件。 /s:表示静默操作,不显示任何对话框。 /n:表示不要调用DllRegisterServer或DllUnregisterServer,只是加载DLL。 /i[lbk]:cmdline[rbk]:表示调用DllInstall函数,并传递可选的cmdline参数。当与 /u 一起使用时,可调用 dll uninstall。 . 历史背景和系统兼容性 regsvr32.exe 安装在 Windows XP 及更高版本的 Windows 中的 %systemroot%\\System32 文件夹中。 在 64 位版本的 Windows 操作系统上,有两个版本的 regsvr32.exe 文件:64 位版本在 %systemroot%\\System32 文件夹中,32 位版本在 %systemroot%\\SysWoW64 文件夹中。
注册与反注册。regsvr32 com接口dll 注册与反注册。regsvr32 com接口dll . regsvr32 路径\dm.dll regsvr32 /u 路径\dm.dll regsvr32是一个用于注册和反注册DLL文件的命令行工具,主要用于在Windows系统中注册或注销COM组件。 命令行用记事本编辑,文件后缀名保存为 .bat . 使用方法 注册DLL文件:在命令提示符中输入 regsvr32 [lbk]路径[rbk]filename.dll,其中 [lbk]路径[rbk]filename.dll 是要注册的DLL文件的完整路径和名称。如果DLL文件位于当前目录下,可以直接输入文件名。 . 反注册DLL文件:在命令提示符中输入 regsvr32 /u [lbk]路径[rbk]filename.dll,其中 /u 参数用于取消注册DLL文件。 . . 常见错误及解决方法 找不到指定模块:确保DLL文件的路径正确无误,并且文件存在。如果DLL文件位于其他目录中,请提供完整的路径。 加载库时出错:可能是由于DLL文件损坏或不兼容造成的,尝试重新下载或修复DLL文件。 注册表访问被拒绝:以管理员身份运行命令提示符,右键点击“命令提示符”图标,选择“以管理员身份运行”。 参数说明 /u:表示注销(取消注册)DLL文件。 /s:表示静默操作,不显示任何对话框。 /n:表示不要调用DllRegisterServer或DllUnregisterServer,只是加载DLL。 /i[lbk]:cmdline[rbk]:表示调用DllInstall函数,并传递可选的cmdline参数。当与 /u 一起使用时,可调用 dll uninstall。 . 历史背景和系统兼容性 regsvr32.exe 安装在 Windows XP 及更高版本的 Windows 中的 %systemroot%\\System32 文件夹中。 在 64 位版本的 Windows 操作系统上,有两个版本的 regsvr32.exe 文件:64 位版本在 %systemroot%\\System32 文件夹中,32 位版本在 %systemroot%\\SysWoW64 文件夹中。
如果是干活,多用键盘模拟,少用鼠标模拟 我还是没明白你是想干活,还是想研究折腾 . 如果是干活,多用键盘模拟,少用鼠标模拟,一send到底,比如打印成pdf,send ctrl+P或者shift+ctrl+s, 没有快捷键就alt+字母 调出菜单栏,上下右选命令,做弹窗判断,然后用tab/shift+tab,选到需要修改的项,单选多选框用send 空格,组合框send 上下,选好打印机(pdf),调好纸张大小,手动选择打印区域,最后send回车,这一套临时干活够用了 . 如果是想折腾,那就做二次开发,引用软件的库,可以调用任何命令,甚至软件里没有的,偏底层的命令,库里全都有。 sw我没用过,cad是直接读取dwg数据库,读写图形entity对象的属性,调用对应命令的方法,写成代码,注册成新的命令,编译成插件文件,导入软件可以像原生命令一样使用。 . 干活的话,个人不建议二次开发,因为你真正熟悉的是软件操作,用api写的代码和你平时的操作习惯不一致,比如命令/图形/属性对不上,操作流程有差别,而且会出一些莫名其妙的错误,明明手操没问题的,写成代码就出错。 干活的需求总是在变的,很多都是loop一遍,用完就扔的。要求明后天交稿,然后还花大量时间写代码debug,那就不切实际了
工业化。怎么获取某个像素点的亮度啊,想通过亮度对比来控制启停 工业化。怎么获取某个像素点的亮度啊,想通过亮度对比来控制启停。 . 白色"FFFFFF"为亮亮最高, 255,255,255, 黑色"000000"为亮亮最低, 0,0,0, . 255/2=127.5, 获取这个像素点的三原色值, 以127为阀值,去比较三原色值。
工业化。怎么获取某个像素点的亮度啊,想通过亮度对比来控制启停 工业化。怎么获取某个像素点的亮度啊,想通过亮度对比来控制启停。 . 白色"FFFFFF"为亮亮最高, 255,255,255, 黑色"000000"为亮亮最低, 0,0,0, . 255/2=127.5, 获取这个像素点的三原色值, 以127为阀值,去比较三原色值。
安卓。opencv和gdi支持cpu gpu混合渲染 安卓。dx窗口只能显卡渲染。opencv和gdi支持cpu gpu混合渲染 安卓模拟器不是dx窗口,安卓模拟器 一般支持的是后两种渲染方式,因为兼容性高。 . 我也是你这个问题,后来图色换了opengl绑定模式,就能后台截图了
安卓。opencv和gdi支持cpu gpu混合渲染 安卓。dx窗口只能显卡渲染。opencv和gdi支持cpu gpu混合渲染 安卓模拟器不是dx窗口,安卓模拟器 一般支持的是后两种渲染方式,因为兼容性高。 . 我也是你这个问题,后来图色换了opengl绑定模式,就能后台截图了
C语言。怎样测效率 易语言。怎样测效率 start 整数型 finish 整数型 start=取启动时间() ' finish=取启动时间() 调试输出(到文本(finish - start)) . C语言。怎样测效率 start = clock(); //开始计时 // finish = clock(); //计时结束 printf("运行时间:%f毫秒\n", (float)(finish - start)); //C语言 //cout << "Read 1g ID file time :" << float(finish - start) << " ms " << endl;//C++
C语言。怎样测效率 易语言。怎样测效率 start 整数型 finish 整数型 start=取启动时间() ' finish=取启动时间() 调试输出(到文本(finish - start)) . C语言。怎样测效率 start = clock(); //开始计时 // finish = clock(); //计时结束 printf("运行时间:%f毫秒\n", (float)(finish - start)); //C语言 //cout << "Read 1g ID file time :" << float(finish - start) << " ms " << endl;//C++
C语言。怎样测效率 易语言。怎样测效率 start 整数型 finish 整数型 start=取启动时间() ' finish=取启动时间() 调试输出(到文本(finish - start)) . C语言。怎样测效率 start = clock(); //开始计时 // finish = clock(); //计时结束 printf("运行时间:%f毫秒\n", (float)(finish - start)); //C语言 //cout << "Read 1g ID file time :" << float(finish - start) << " ms " << endl;//C++
TC调用易语言DLL。文本型参数 如何声明? TC调用易语言DLL。文本型参数 如何声明? . 易语言的文本,使用ASCII编码, ANSI编码,通常称为ASCII字符编码。 . TC的字符串,使用Unicode编码, 对易语言DLL_传入ASCII编码的字符串,TC_dllcall用 "char *" 来声明。 . 易语言DLL 传出的字符串变量,同样是ASCII编码。 TC接收到变量后,需要转换成Unicode编码,才能正确识别。
TC调用易语言DLL。文本型参数 如何声明? TC调用易语言DLL。文本型参数 如何声明? . 易语言的文本,使用ASCII编码, ANSI编码,通常称为ASCII字符编码。 . TC的字符串,使用Unicode编码, 对易语言DLL_传入ASCII编码的字符串,TC_dllcall用 "char *" 来声明。 . 易语言DLL 传出的字符串变量,同样是ASCII编码。 TC接收到变量后,需要转换成Unicode编码,才能正确识别。
按住Q键,向记事本_连续发送按键Q;弹起Q键,则停止发送按键Q 按住Q键,向记事本_连续发送按键Q;弹起Q键,则停止发送按键Q . 请用AutoHotkey写一段代码。我想实现: 1 先获取记事本_主窗口句柄Hwnd,再获取子窗口句柄childHwnd。 2 按住Q键,就向处于后台的记事本子窗口childHwnd 连续发送按键Q; 弹起Q键,则停止发送按键Q。 3 如此循环。 . ```autohotkey #NoEnv SetBatchLines, -1 ; 获取记事本主窗口句柄 hwnd := WinGetHandle("无标题 - 记事本") ; 获取子窗口句柄,这里假设子窗口是记事本的编辑区域 childHwnd := DllCall("user32.dll", "uint", "FindWindowExA", "uint", hwnd, "string", "", "string", "Edit") ; 检查是否成功获取到子窗口句柄 if (childHwnd = 0) { MsgBox, 48, 错误, 无法找到记事本的子窗口。请确保记事本已经打开。 ExitApp } ; ; 定义一个变量来表示是否正在发送按键Q isSending := false ; 监听Q键按下事件 OnKeyDown, Q, SendQKeyToChildWindow ; 监听Q键弹起事件 OnKeyUp, Q, StopSendingQKeyToChildWindow ; 发送按键Q到子窗口 SendQKeyToChildWindow() { if (!isSending) { isSending := true Loop { DllCall("user32.dll", "uint", "PostMessageA", "uint", childHwnd, "uint", 0x100, "uptr", 0x51, "int", 0) Sleep, 100 ; 每100毫秒发送一次按键Q if (!isSending) { break } } } } ; 停止发送按键Q到子窗口 StopSendingQKeyToChildWindow() { isSending := false } ```
按一次Q键,就按住鼠标右键;再按一次Q键,就弹起鼠标右键。 请用AutoHotkey写一段代码。 我想实现:按一次Q键,就按住鼠标右键;再按一次Q键,就弹起鼠标右键。如此循环 . ```autohotkey #NoEnv SetBatchLines, -1 ; 初始化变量 QPressed := false ; 当按下 Q 键时执行以下操作 q:: ; 如果 Q 键没有被按下,则设置 QPressed 为 true 并按住鼠标右键 if not (QPressed) { QPressed := true mousedown r } else { ; 如果 Q 键已经被按下,则设置 QPressed 为 false 并弹起鼠标右键 QPressed := false mouseup r } return ```
切换输入法。 切换输入法。 SwitchIME(dwLayout) { HKL:=DllCall("LoadKeyboardLayout", Str, dwLayout, UInt, 1) ControlGetFocus,ctl,A SendMessage,0x50,0,HKL,%ctl%,A } . 例子:(00000804是百度输入法) HKL:=DllCall("LoadKeyboardLayout", Str,"00000804", UInt, 1) ControlGetFocus,ctl,A SendMessage,0x50,0,HKL,%ctl%,A
如何判断输入法候选窗口.是否存在? 如何判断输入法候选窗口.是否存在?也就是正在输入,但候选词还没有上屏时的状态。 使用下面的方法不行,就算我使用了`DetectHiddenWindows true`,都检测不出来。只检测到正在使用的应用程序,例如记事本。 WinActive("ahk_class <用Windows SPY检测到的信息>") . 旺仔泡泡堂:不要用WinActive,我一惯用WinExist。 我的电脑装了QQ五笔和搜狗拼音输入法,别的没有。我用的是AHk2.0 WinExist("ahk_class QQWubiCandWndII") ;表示按分号进入分号模式出现的候选框 WinExist("ahk_class QQWubiCompWndII") ; 表示正常打字母出现的候选框 WinExist("ahk_class SoPY_Comp") ;表示搜狗拼音的候选框 . 就算想得到状态栏,也是很容易的。 WinExist("ahk_class QQWubiStatusWndII") ;QQ五笔状态栏 WinExist("ahk_class SoPY_Status") ;搜狗拼音状态栏
第二章、易语言字节集 第二章、易语言字节集 TC: var 内存地址 = 结构体申请内存(数组("byte" = 数据长度, "value" = null)) 结构体释放内存(内存地址) . 其它语言,传入易语言DLL的内存地址, 数据长度,调用 字节集名=指针到字节集(内存地址, 数据长度)’转换成易的字节集变量。 . 内存地址=取变量地址(字节集名[lbk]1])’获得字节集数据的内存地址 数据长度=取字节集长度(字节集名) ’在易语言DLL中,调用以上两个函数,对其它语言 输出字节集变量_的内存地址, 数据长度。
第二章、易语言字节集 第二章、易语言字节集 TC: var 内存地址 = 结构体申请内存(数组("byte" = 数据长度, "value" = null)) 结构体释放内存(内存地址) . 其它语言,传入易语言DLL的内存地址, 数据长度,调用 字节集名=指针到字节集(内存地址, 数据长度)’转换成易的字节集变量。 . 内存地址=取变量地址(字节集名[lbk]1])’获得字节集数据的内存地址 数据长度=取字节集长度(字节集名) ’在易语言DLL中,调用以上两个函数,对其它语言 输出字节集变量_的内存地址, 数据长度。
第二章、易语言字节集 第二章、易语言字节集 TC: var 内存地址 = 结构体申请内存(数组("byte" = 数据长度, "value" = null)) 结构体释放内存(内存地址) . 其它语言,传入易语言DLL的内存地址, 数据长度,调用 字节集名=指针到字节集(内存地址, 数据长度)’转换成易的字节集变量。 . 内存地址=取变量地址(字节集名[lbk]1])’获得字节集数据的内存地址 数据长度=取字节集长度(字节集名) ’在易语言DLL中,调用以上两个函数,对其它语言 输出字节集变量_的内存地址, 数据长度。
调用win32 api,获取记事本_文本光标位置的坐标 请用c++写一段代码。调用win32 api,获取记事本_文本光标位置的坐标 #include <iostream> #include <windows.h> int main() { HWND hwnd = FindWindow(TEXT("Notepad"), NULL); if (hwnd != NULL) { DWORD threadId; GetWindowThreadProcessId(hwnd, &threadId); HWND hEdit = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL); if (hEdit != NULL) { CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if (GetConsoleScreenBufferInfo(hStdOut, &csbi)) { COORD cursorPosition = csbi.dwCursorPosition; std::cout << "记事本光标位置: (" << cursorPosition.X << ", " << cursorPosition.Y << ")" << std::endl; } } return 0; }
调用win32 api,获取记事本_文本光标位置的坐标 请用c++写一段代码。调用win32 api,获取记事本_文本光标位置的坐标 . #include <iostream> #include <windows.h> int main() { HWND hwnd = FindWindow(TEXT("Notepad"), NULL); if (hwnd != NULL) { DWORD threadId; GetWindowThreadProcessId(hwnd, &threadId); HWND hEdit = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL); if (hEdit != NULL) { CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if (GetConsoleScreenBufferInfo(hStdOut, &csbi)) { COORD cursorPosition = csbi.dwCursorPosition; std::cout << "记事本光标位置: (" << cursorPosition.X << ", " << cursorPosition.Y << ")" << std::endl; } } return 0; }
实现按Q一下就是“滚轮上”,再按一下Q就是“滚轮下” 实现按Q一下就是“滚轮上”,再按一下Q就是“滚轮下”,如此循环往复,只要按Q就循环实现滚轮上下,这样的想法能实现吗,或者说有别的软件能实现吗 希望大佬们能给些指点
安卓的触控方式。目前有三种 安卓的触控方式。目前有三种 . adb触控命令,(必须root) 无障碍触控命令,(开启无障碍) HID键鼠硬件触控,(需要购入HID键鼠) 这相当于电脑版的鼠键盒子 单头/双头硬件盒子。 . 那用户还得买硬件? . 用户考虑的是:你能不能有项目解决方案 是否能防住app检测。 当前很多app,都加入了root检测、无障碍检测。只要设备不用root、不开启无障碍,脚本的生存能力 就会大大提高.
安卓的触控方式。目前有三种 安卓的触控方式。目前有三种 . adb触控命令,(必须root) 无障碍触控命令,(开启无障碍) HID键鼠硬件触控,(需要购入HID键鼠) 这相当于电脑版的鼠键盒子 单头/双头硬件盒子。 . 那用户还得买硬件? . 用户考虑的是:你能不能有项目解决方案 是否能防住app检测。 当前很多app,都加入了root检测、无障碍检测。只要设备不用root、不开启无障碍,脚本的生存能力 就会大大提高.
循环(开关),开关做成全局变量,在循环前面 开关=1; 循环(开关),开关做成全局变量,在循环前面 开关=1;想停下来设置 开关=0
游戏不支持软件模拟的,可选择 硬件模拟 驱动级模拟 前台有软件模拟 硬件模拟 驱动级模拟。send 属于软件模拟 游戏不支持软件模拟的,可选择 硬件模拟 驱动级模拟
【新手回复】按两次启动热键,脚本就不能停止 【新手回复】按两次启动热键,脚本就不能停止 . 线程关闭(线程ID) 按两次热键 会启动两个线程,返回两个线程句柄。 而保存线程句柄的变量,只设置了一个。所以后面的句柄,会覆盖前一句柄。 前面的线程句柄 被覆盖掉了,相当于消失了;导致先打开的线程 无法关闭。 . ======================================================= var hThread, 开关 功能 执行() while(开关) //代码写这里. sleep(100) end 结束 // 功能 启动_热键() var bool = 线程获取状态(hThread) if(bool == 0) 开关 = 1 hThread = 线程开启("执行", "") end 结束 // 功能 终止_热键() 开关 = 0 线程关闭(hThread) 结束 . 来源:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73390-1-1.html&urlrefer=e3c50ec364c23cbd6ea47d1ccd14266c var 线程ID=线程开启(),实际返回值是 线程句柄, var 线程id=线程获取id(),跟真正的 线程id是有冲突的。
后台找图找不到,后台窗口截屏 返回是黑图,这是什么原因? 后台找图找不到,后台窗口截屏 返回是黑图,这是什么原因?窗口句柄没问题 . DX。使用DirectX截屏 如果截图的是黑图,请参考这一篇,DirectX截图黑屏的解决办法。 . 制作游戏时,游戏公司使用DirectX软件 绘制的游戏窗口, 后台操作时,必须使用大漠/ 天使/ 乐玩插件 的dx截图模式。 DX游戏窗口,后台模式只接受dx端口的输入。dx图色 dx鼠标 dx键盘, . 按键精灵 tc简单开发 易语言的窗口模式无效。dx绑定模式 由大漠首创,它是大漠最大的贡献。
后台找图找不到,后台窗口截屏 返回是黑图,这是什么原因? 后台找图找不到,后台窗口截屏 返回是黑图,这是什么原因?窗口句柄没问题 . DX。使用DirectX截屏 如果截图的是黑图,请参考这一篇,DirectX截图黑屏的解决办法。 . 制作游戏时,游戏公司使用DirectX软件 绘制的游戏窗口, 后台操作时,必须使用大漠/ 天使/ 乐玩插件 的dx截图模式。 DX游戏窗口,后台模式只接受dx端口的输入。dx图色 dx鼠标 dx键盘, . 按键精灵 tc简单开发 易语言的窗口模式无效。 dx绑定模式 由大漠首创,它是大漠最大的贡献。
【新手回复】按两次启动热键,脚本就不能停止 【新手回复】按两次启动热键,脚本就不能停止 . 线程关闭(线程ID) 按两次热键 会启动两个线程,返回两个线程句柄。 而保存线程句柄的变量,只设置了一个。所以后面的句柄,会覆盖前一句柄。 前面的线程句柄 被覆盖掉了,相当于消失了;导致先打开的线程 无法关闭。 . ======================================================= var hThread, 开关 功能 执行() while(开关) //代码写这里. sleep(100) end 结束 // 功能 启动_热键() var bool = 线程获取状态(hThread) if(bool == 0) 开关 = 1 hThread = 线程开启("执行", "") end 结束 // 功能 终止_热键() 开关 = 0 线程关闭(hThread) 结束 . 来源:http://52tc.info/thread-73390-1-1.html var 线程ID=线程开启(),实际返回值是 线程句柄, var 线程id=线程获取id(),跟真正的 线程id是有冲突的。
【新手回复】按两次启动热键,脚本就不能停止 【新手回复】按两次启动热键,脚本就不能停止 . 线程关闭(线程ID) 按两次热键 会启动两个线程,返回两个线程句柄。 而保存线程句柄的变量,只设置了一个。所以后面的句柄,会覆盖前一句柄。 前面的线程句柄 被覆盖掉了,相当于消失了;导致先打开的线程 无法关闭。 . ======================================================= var hThread, 开关 功能 执行() while(开关) //代码写这里. sleep(100) end 结束 // 功能 启动_热键() var bool = 线程获取状态(hThread) if(bool == 0) 开关 = 1 hThread = 线程开启("执行", "") end 结束 // 功能 终止_热键() 开关 = 0 线程关闭(hThread) 结束 . 来源:http://52tc.info/thread-73390-1-1.html var 线程ID=线程开启(),实际返回值是 线程句柄, var 线程id=线程获取id(),跟真正的 线程id是有冲突的。
安卓的触控方式。目前有三种 安卓的触控方式。目前有三种 . adb触控命令,(必须root) 无障碍触控命令,(开启无障碍) HID键鼠硬件触控,(需要购入HID键鼠) 这相当于电脑版的鼠键盒子 单头/双头硬件盒子。 . 那用户还得买硬件? . 用户考虑的是:你能不能有项目解决方案 是否能防住app检测。 当前很多app,都加入了root检测、无障碍检测。只要设备不用root、不开启无障碍,脚本的生存能力 就会大大提高. 论坛:http://52tc.info/thread-73389-1-1.html
我是TC和AHK结合使用的,ahk是免费软件,但是比较难。 我是TC和AHK结合使用的,ahk是免费软件,但是比较难。TC不行的用ahk,AHK不行的用TC
【新手回复】在按钮/热键 事件中写代码,为什么会卡死? 【新手回复】在按钮/热键 事件中写代码,为什么会卡死? 功能 按钮0_点击() 循环(真) 等待(1000) 结束 结束 这循环有毛病吗 . Tc*小Q: 按键精灵的线程是假的, 他那个多线程,是基于他自己的程序还在运行下的多线程。 小朋友,别再被骗了 . ======================================================= 解决方法1,使用 等待(假) 功能 按钮0_点击() 循环(真) 调试输出("循环中。") 等待(1000, 假) 结束 结束 . 解决方法2,必须开启线程。 var 线程ID, bool, run 功能 执行() while(run) traceprint("循环中。") 等待(1000) end 结束 功能 按钮0_点击() bool = 线程获取状态(线程ID) if(bool == false) run = 1 线程ID = 线程开启("执行", "") end 结束 功能 按钮1_点击() run = 0 线程关闭(线程ID) 结束
【chat GPT】任务日常,每天只执行一次。 【chat GPT】任务日常,每天只执行一次。 文心一言。http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fchat.baidu.com&urlrefer=3c1707aca2bb3fcd34cb9da73147ec5b 请用c++写一段代码。 在一个循环中,函数A 每天只调用一次。 设计思路: 配置文件里面,记录有config_year, config_month, config_day 先从电脑系统,读取年, 月, 日。 再从配置文件,读取年, 月, 日。 两边的年, 月, 日 进行对比。 如果不同,则判定为新的一天。调用一次函数a(),并更新配置文件。 等待15分钟,继续下一次循环。 ======================================================= #include <iostream> #include <fstream> #include <ctime> #include <chrono> #include <thread> void A() { std::cout << "Function A called." << std::endl; } void updateConfigFile(int year, int month, int day) { std::ofstream configFile("config.txt"); configFile << year << " " << month << " " << day; configFile.close(); } int main() { int systemYear, systemMonth, systemDay; int configYear, configMonth, configDay; while (true) { // 获取系统时间 time_t now = time(0); tm *ltm = localtime(&now); systemYear = 1900 + ltm->tm_year; systemMonth = 1 + ltm->tm_mon; systemDay = ltm->tm_mday; // 读取配置文件 std::ifstream configFile("config.txt"); configFile >> configYear >> configMonth >> configDay; configFile.close(); // 比较日期 if (systemYear != configYear || systemMonth != configMonth || systemDay != configDay) { A(); updateConfigFile(systemYear, systemMonth, systemDay); } // 等待15分钟 std::this_thread::sleep_for(std::chrono::minutes(15)); } return 0; } 看到了吧。代码框架写进去,chat GPT 就帮你写作业。秒出代码 翻译成TC的就行,编程的神器。 在互联网上,C++ python的资料最多,出来的代码质量最高。一些冷门的语言,能参考的代码少。chat GPT出来的代码 就差了很多 来源:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73358-1-1.html&urlrefer=bd645df4128c398c11c4c9159768de73
【chat GPT】任务日常,每天只执行一次。 【chat GPT】任务日常,每天只执行一次。 文心一言。http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fchat.baidu.com&urlrefer=3c1707aca2bb3fcd34cb9da73147ec5b请用c++写一段代码。 在一个循环中,函数A 每天只调用一次。 设计思路: 配置文件里面,记录有config_year, config_month, config_day 先从电脑系统,读取年, 月, 日。 再从配置文件,读取年, 月, 日。 两边的年, 月, 日 进行对比。 如果不同,则判定为新的一天。调用一次函数a(),并更新配置文件。 等待15分钟,继续下一次循环。 ======================================================= #include <iostream> #include <fstream> #include <ctime> #include <chrono> #include <thread> void A() { std::cout << "Function A called." << std::endl; } void updateConfigFile(int year, int month, int day) { std::ofstream configFile("config.txt"); configFile << year << " " << month << " " << day; configFile.close(); } int main() { int systemYear, systemMonth, systemDay; int configYear, configMonth, configDay; while (true) { // 获取系统时间 time_t now = time(0); tm *ltm = localtime(&now); systemYear = 1900 + ltm->tm_year; systemMonth = 1 + ltm->tm_mon; systemDay = ltm->tm_mday; // 读取配置文件 std::ifstream configFile("config.txt"); configFile >> configYear >> configMonth >> configDay; configFile.close(); // 比较日期 if (systemYear != configYear || systemMonth != configMonth || systemDay != configDay) { A(); updateConfigFile(systemYear, systemMonth, systemDay); } // 等待15分钟 std::this_thread::sleep_for(std::chrono::minutes(15)); } return 0; } 看到了吧。代码框架写进去,chat GPT 就帮你写作业。秒出代码 翻译成TC的就行,编程的神器。 在互联网上,C++ python的资料最多,出来的代码质量最高。一些冷门的语言,能参考的代码少。chat GPT出来的代码 就差了很多 来源:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73358-1-1.html&urlrefer=bd645df4128c398c11c4c9159768de73
文件遍历()。遍历指定文件夹下,所有的文件名与子文件夹名 文件遍历()。遍历指定文件夹下,所有的文件名与子文件夹名。只遍历当前一层目录. 函数原型: 文件遍历(路径,文件名数组,文件夹数组) 函数参数: 路径: 文件夹全路径 文件名数组: 返回数组,包含指定目录的所有文件名 文件夹数组: 返回数组,包含指定目录的所有文件夹名 返回值:打开目录成功返回真,否则返回假 脚本示例://路径="d:/tc/" 功能 递归遍历文件(路径) var len, 文件名数组, 文件夹数组 文件遍历(路径, 文件名数组, 文件夹数组) len = 数组大小(文件名数组) for(var ai = 0; ai < len; ai++) 调试输出(路径 & 文件名数组[lbk]ai[rbk]) end len = 数组大小(文件夹数组) for(var ai = 0; ai < len; ai++) 调试输出(路径 & 文件夹数组[lbk]ai[rbk] & "========") 递归遍历文件(路径 & 文件夹数组[lbk]ai[rbk] & "/") end 结束 F1_帮助文档,3.windows平台,1.api详解,3文件类。来源:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73353-1-1.html&urlrefer=801289d3be915cd7b6a7fa6a33314bd9
dllcall。易语言的文本型,在tc中用char * 表示 dllcall。易语言的文本型,在tc中用char * 表示
内存call。call在编译生成之前,是什么状态 内存call。call在编译生成之前,是什么状态 在c++里面。我们可以把世间所有的事物,看做一个对象来描述。 而类,就是一种对象的集合。 例如玩家类,就是所有玩家的集合,每个玩家都是一个对象。 而 类的属性,就是对象共有的东西。 比方说:每个玩家都有 学号 名字 血量 蓝量 坐标x 坐标y 等等,这些就是属性。 一个类,是由类属性 + 类方法组成的。假设我是某游戏公司的程序猿,用c++定义了,一个玩家类。 class player{ //类属性 (即类变量) private int 人物ID号; //类似于身份证号、学号等. private String name; //名字 private int 当前血量; private int 当前蓝量; private int 最大血量; private int 最大蓝量; private int 体魄值; private int 武力值; private float 坐标X; private float 坐标Y; ………… //上面这些,可以看作一个属性数组. //下面就是方法了。类方法 (即类函数),就是我们可以做什么。 public void 补红(人物ID号, 小金创药id号){子程序代码………… } public void 补蓝(人物ID号, 小雪原参id号){子程序代码………… } public void 寻路(人物ID号, 目标x, 目标y) {子程序代码………… } public void 选怪(人物ID号, 怪物id号) {子程序代码………… } public void 释放技能(人物ID号, 怪物id号, 技能id号) {子程序代码………… } } 玩家类,或者称呼为.人物类更好听一些? 遍历游戏玩家,可以得到周围的所有玩家,可以逐个查询这些玩家的信息。调用交易call,可以实现当面交易。 怪物类。 遍历游戏怪物,可以得到周围的所有怪物,可以逐个查询这些怪物的信息。调用选怪call,可以选定指定怪物。 物品类。矿石,药材等 遍历游戏物品,可以得到周围的所有物品,可以逐个查询这些物品的信息。调用捡物call,可以拾取指定物品。其它方法类似。 作者:剑仙十号. 原创作品。转载请标明作者,标明出处 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73321-1-1.html&urlrefer=c83e78d94d075f014f65de5afb00d275
内存call。call在编译生成之前,是什么状态 内存call。call在编译生成之前,是什么状态 在c++里面。我们可以把世间所有的事物,看做一个对象来描述。 而类,就是一种对象的集合。 例如玩家类,就是所有玩家的集合,每个玩家都是一个对象。 而 类的属性,就是对象共有的东西。 比方说:每个玩家都有 学号 名字 血量 蓝量 坐标x 坐标y 等等,这些就是属性。 一个类,是由类属性 + 类方法组成的。假设我是某游戏公司的程序猿,用c++定义了,一个玩家类。 class player{ //类属性 (即类变量) private int 人物ID号; //类似于身份证号、学号等. private String name; //名字 private int 当前血量; private int 当前蓝量; private int 最大血量; private int 最大蓝量; private int 体魄值; private int 武力值; private float 坐标X; private float 坐标Y; ………… //上面这些,可以看作一个属性数组. //下面就是方法了。类方法 (即类函数),就是我们可以做什么。 public void 补红(人物ID号, 小金创药id号){子程序代码………… } public void 补蓝(人物ID号, 小雪原参id号){子程序代码………… } public void 寻路(人物ID号, 目标x, 目标y) {子程序代码………… } public void 选怪(人物ID号, 怪物id号) {子程序代码………… } public void 释放技能(人物ID号, 怪物id号, 技能id号) {子程序代码………… } } 玩家类,或者称呼为.人物类更好听一些? 遍历游戏玩家,可以得到周围的所有玩家,可以逐个查询这些玩家的信息。调用交易call,可以实现当面交易。 怪物类。 遍历游戏怪物,可以得到周围的所有怪物,可以逐个查询这些怪物的信息。调用选怪call,可以选定指定怪物。 物品类。矿石,药材等 遍历游戏物品,可以得到周围的所有物品,可以逐个查询这些物品的信息。调用捡物call,可以拾取指定物品。其它方法类似。 作者:剑仙十号. 原创作品。转载请标明作者,标明出处 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73321-1-1.html&urlrefer=c83e78d94d075f014f65de5afb00d275
内存call。call在编译生成之前,是什么状态 内存call。call在编译生成之前,是什么状态 在c++里面。我们可以把世间所有的事物,看做一个对象来描述。 而类,就是一种对象的集合。 例如玩家类,就是所有玩家的集合,每个玩家都是一个对象。 而 类的属性,就是对象共有的东西。 比方说:每个玩家都有 学号 名字 血量 蓝量 坐标x 坐标y 等等,这些就是属性。 一个类,是由类属性 + 类方法组成的。假设我是某游戏公司的程序猿,用c++定义了,一个玩家类。 class player{ //类属性 (即类变量) private int 人物ID号; //类似于身份证号、学号等. private String name; //名字 private int 当前血量; private int 当前蓝量; private int 最大血量; private int 最大蓝量; private int 体魄值; private int 武力值; private float 坐标X; private float 坐标Y; ………… //上面这些,可以看作一个属性数组. //下面就是方法了。类方法 (即类函数),就是我们可以做什么。 public void 补红(人物ID号, 小金创药id号){子程序代码………… } public void 补蓝(人物ID号, 小雪原参id号){子程序代码………… } public void 寻路(人物ID号, 目标x, 目标y) {子程序代码………… } public void 选怪(人物ID号, 怪物id号) {子程序代码………… } public void 释放技能(人物ID号, 怪物id号, 技能id号) {子程序代码………… } } 玩家类,或者称呼为.人物类更好听一些? 遍历游戏玩家,可以得到周围的所有玩家,可以逐个查询这些玩家的信息。调用交易call,可以实现当面交易。 怪物类。 遍历游戏怪物,可以得到周围的所有怪物,可以逐个查询这些怪物的信息。调用选怪call,可以选定指定怪物。 物品类。矿石,药材等 遍历游戏物品,可以得到周围的所有物品,可以逐个查询这些物品的信息。调用捡物call,可以拾取指定物品。其它方法类似。 作者:剑仙十号. 原创作品。转载请标明作者,标明出处 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73321-1-1.html&urlrefer=c83e78d94d075f014f65de5afb00d275
内存call。call在编译生成之前,是什么状态的 内存call。call在编译生成之前,是什么状态的 在c++里面。我们可以把世间所有的事物,看做一个对象来描述。 而类,就是一种对象的集合。 例如玩家类,就是所有玩家的集合,每个玩家都是一个对象。 而 类的属性,就是对象共有的东西。 比方说:每个玩家都有 学号 名字 血量 蓝量 坐标x 坐标y 等等,这些就是属性。 一个类,是由类属性 + 类方法组成的。假设我是某游戏公司的程序猿,用c++定义了,一个玩家类。 class player{ //类属性 (即类变量) private int 人物ID号; //类似于身份证号、学号等. private String name; //名字 private int 当前血量; private int 当前蓝量; private int 最大血量; private int 最大蓝量; private int 体魄值; private int 武力值; private float 坐标X; private float 坐标Y; ………… //上面这些,可以看作一个属性数组. //下面就是方法了。类方法 (即类函数),就是我们可以做什么。 public void 补红(人物ID号, 小金创药id号){子程序代码………… } public void 补蓝(人物ID号, 小雪原参id号){子程序代码………… } public void 寻路(人物ID号, 目标x, 目标y) {子程序代码………… } public void 选怪(人物ID号, 怪物id号) {子程序代码………… } public void 释放技能(人物ID号, 怪物id号, 技能id号) {子程序代码………… } } 玩家类,或者称呼为.人物类更好听一些? 遍历游戏玩家,可以得到周围的所有玩家,可以逐个查询这些玩家的信息。调用交易call,可以实现当面交易。 怪物类。 遍历游戏怪物,可以得到周围的所有怪物,可以逐个查询这些怪物的信息。调用选怪call,可以选定指定怪物。 物品类。矿石,药材等 遍历游戏物品,可以得到周围的所有物品,可以逐个查询这些物品的信息。调用捡物call,可以拾取指定物品。其它方法类似。 作者:剑仙十号. 原创作品。转载请标明作者,标明出处 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73321-1-1.html&urlrefer=c83e78d94d075f014f65de5afb00d275
【剑仙教程】路径类。用进程PID,获取进程的运行路径 . 这函数怎么用呢? 以前做游戏辅助,要复制一些东西到游戏目录, 需要弄个"浏览框0",让用户点击浏览框,去选择游戏目录. . 有了 用进程PID,获取进程的运行路径, 直接通过进程名,先获取进程PID,再获取游戏目录 这样使脚本更加智能化,真正实现:小前端,大后台. 把简单的前端交给用户. 把复杂的后台交给自己. var hThread 功能 执行() var PROCESS_ALL_ACCESS = #1F0FFF //进程对象的所有可能的访问权限。 var MAX_PATH = 260 //var PROCESS_QUERY_INFORMATION = 1024 //var PROCESS_VM_READ = 16 var PID数组, PID //notepad PID数组 = 进程信息("notepad.exe", 0) //默认0,为进程名获取进程PID traceprint(" PID数组: " & PID数组) PID = cint(PID数组[0]) if(PID == 0) traceprint("请打开目标进程.") cmd("Notepad", 真) sleep(1000) PID数组 = 进程信息("notepad.exe", 0) PID = cint(PID数组[0]) end var hProcess, size, path hProcess = OpenProcess0(PROCESS_ALL_ACCESS, false, PID) traceprint(" hProcess: " & hProcess) size = GetModuleFileNameExW(hProcess, null, path, MAX_PATH) traceprint("size: " & size) traceprint("path: " & path) CloseHandle(hProcess) 结束 // 功能 GetWindowThreadProcessId(hWnd, &lpdwProcessId) return dllcall("user32.dll", "long", "GetWindowThreadProcessId", "long", hWnd, "plong", lpdwProcessId) //如果函数成功,则返回值是创建窗口的线程的标识符。 //如果窗口句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 结束 功能 OpenProcess0(dwDesiredAccess, bInheritHandle, dwProcessId) return dllcall("kernel32.dll", "long", "OpenProcess", "long", dwDesiredAccess, "long", bInheritHandle, "long", dwProcessId) 结束 功能 CloseHandle(hObject) return dllcall("kernel32.dll", "long", "CloseHandle", "long", hObject) 结束 功能 GetModuleFileNameExW(hProcess, hModule, &lpFilename, nSize) return dllcall("psapi.dll", "long", "GetModuleFileNameExW", "long", hProcess, "long", hModule, "pwchar *", lpFilename, "long", nSize) 结束 功能 启动_热键() var bool = 线程获取状态(hThread) if(bool == 0) hThread = 线程开启("执行", "") end 结束 功能 终止_热键() 线程关闭(hThread) 结束 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73328-1-1.html&urlrefer=ec0f15ed04b83021e34a68d105a64951 原创作品。转载请标明作者,标明出处.
【剑仙教程】路径类。用进程PID,获取进程的运行路径 . 这函数怎么用呢? 以前做游戏辅助,要复制一些东西到游戏目录, 需要弄个"浏览框0",让用户点击浏览框,去选择游戏目录. . 有了 用进程PID,获取进程的运行路径, 直接通过进程名,先获取进程PID,再获取游戏目录 这样使脚本更加智能化,真正实现:小前端,大后台. 把简单的前端交给用户. 把复杂的后台交给自己. var hThread 功能 执行() var PROCESS_ALL_ACCESS = #1F0FFF //进程对象的所有可能的访问权限。 var MAX_PATH = 260 //var PROCESS_QUERY_INFORMATION = 1024 //var PROCESS_VM_READ = 16 var PID数组, PID //notepad PID数组 = 进程信息("notepad.exe", 0) //默认0,为进程名获取进程PID traceprint(" PID数组: " & PID数组) PID = cint(PID数组[0]) if(PID == 0) traceprint("请打开目标进程.") cmd("Notepad", 真) sleep(1000) PID数组 = 进程信息("notepad.exe", 0) PID = cint(PID数组[0]) end var hProcess, size, path hProcess = OpenProcess0(PROCESS_ALL_ACCESS, false, PID) traceprint(" hProcess: " & hProcess) size = GetModuleFileNameExW(hProcess, null, path, MAX_PATH) traceprint("size: " & size) traceprint("path: " & path) CloseHandle(hProcess) 结束 // 功能 GetWindowThreadProcessId(hWnd, &lpdwProcessId) return dllcall("user32.dll", "long", "GetWindowThreadProcessId", "long", hWnd, "plong", lpdwProcessId) //如果函数成功,则返回值是创建窗口的线程的标识符。 //如果窗口句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 结束 功能 OpenProcess0(dwDesiredAccess, bInheritHandle, dwProcessId) return dllcall("kernel32.dll", "long", "OpenProcess", "long", dwDesiredAccess, "long", bInheritHandle, "long", dwProcessId) 结束 功能 CloseHandle(hObject) return dllcall("kernel32.dll", "long", "CloseHandle", "long", hObject) 结束 功能 GetModuleFileNameExW(hProcess, hModule, &lpFilename, nSize) return dllcall("psapi.dll", "long", "GetModuleFileNameExW", "long", hProcess, "long", hModule, "pwchar *", lpFilename, "long", nSize) 结束 功能 启动_热键() var bool = 线程获取状态(hThread) if(bool == 0) hThread = 线程开启("执行", "") end 结束 功能 终止_热键() 线程关闭(hThread) 结束 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73328-1-1.html&urlrefer=ec0f15ed04b83021e34a68d105a64951 原创作品。转载请标明作者,标明出处.
【教程】递归遍历文件夹,自定义栈大小。 【教程】递归遍历文件夹,自定义栈大小。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73327-1-1.html&urlrefer=9286590b6610a50070bed874236ec44e 夜尽天明 14:10:03 哪位大佬教下 递归遍历文件的方法嘛 LokmenoWer 14:11:56 递归遍历文件,全称是递归遍历文件.夹 首先你先写一个遍历文件夹 然后在调用里面判断,遍历到的是文件 还是文件夹 if(目标是文件夹) 就把文件夹作为参数传入,调用函数自身. end 夜尽天明 14:13:15 能写个示例吗 弄吧半天逛崩溃 等大神帮忙给个示例了 华 18:38:19 @夜尽天明 功能 递归遍历文件(路径) //路径="d:/IDM/" 变量 文件保存数组, 文件夹保存数组 文件遍历(路径, 文件保存数组, 文件夹保存数组) 变量 file_len = 数组大小(文件保存数组) 遍历(变量 ai = 0; ai < file_len; ai++) 调试输出(路径 & 文件保存数组[ai]) 结束 变量 folder_len = 数组大小(文件夹保存数组) 遍历(变量 ai = 0; ai < folder_len; ai++) 递归遍历文件(路径 & 文件夹保存数组[ai] & "/") 结束 结束 夜尽天明 18:57:01 @华 谢谢,明天去搞一下 厚德载物。 19:15:54 递归调用自身,50--60次就递归爆栈了 文件夹的个数,不能超过50--60个 厚德载物。 19:24:46 @华 栈空间大小,在开辟线程时 就已经定义好了。 栈空间大小 默认为2M,递归调用自身,50--60次就爆栈了。 在开辟线程时,把栈空间 定义为20M,递归调用个几百次 应该不成问题。 厚德载物。 19:29:07 用win32 API开辟线程,自定义栈大小 是这样写的。 var count = 0 function 递归proc() traceprint(cstring(count)) count++ if(count < 1000) 递归proc() end end vat lpStartAddress, lpParameter, hThread, ThreadId function 定义回调函数_点击() var StackSize = 1024 * 1024 * 20 //20M lpStartAddress = callbackmalloc("递归proc","dialogproc") lpParameter = "参数" hThread = CreateThread(null, StackSize, lpStartAddress, lpParameter, 0, ThreadId) end function 释放回调函数_点击() CloseHandle(hThread) callbackfree(lpStartAddress) end //开辟线程,win32 API函数 function CreateThread(Attributes, StackSize, Address, Parameter, Flags, &TId) return dllcall("kernel32.dll","long","CreateThread","long",Attributes, "long",StackSize, "callback",Address, "long",Parameter, "long",Flags, "plong",TId) end function CloseHandle(Handle) return dllcall("kernel32.dll","long","CloseHandle","long",Handle) end
【教程】递归遍历文件夹,自定义栈大小。 【教程】递归遍历文件夹,自定义栈大小。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-73327-1-1.html&urlrefer=9286590b6610a50070bed874236ec44e 夜尽天明 14:10:03 哪位大佬教下 递归遍历文件的方法嘛 LokmenoWer 14:11:56 递归遍历文件,全称是递归遍历文件.夹 首先你先写一个遍历文件夹 然后在调用里面判断,遍历到的是文件 还是文件夹 if(目标是文件夹) 就把文件夹作为参数传入,调用函数自身. end 夜尽天明 14:13:15 能写个示例吗 弄吧半天逛崩溃 等大神帮忙给个示例了 华 18:38:19 @夜尽天明 功能 递归遍历文件(路径) //路径="d:/IDM/" 变量 文件保存数组, 文件夹保存数组 文件遍历(路径, 文件保存数组, 文件夹保存数组) 变量 file_len = 数组大小(文件保存数组) 遍历(变量 ai = 0; ai < file_len; ai++) 调试输出(路径 & 文件保存数组[ai]) 结束 变量 folder_len = 数组大小(文件夹保存数组) 遍历(变量 ai = 0; ai < folder_len; ai++) 递归遍历文件(路径 & 文件夹保存数组[ai] & "/") 结束 结束 夜尽天明 18:57:01 @华 谢谢,明天去搞一下 厚德载物。 19:15:54 递归调用自身,50--60次就递归爆栈了 文件夹的个数,不能超过50--60个 厚德载物。 19:24:46 @华 栈空间大小,在开辟线程时 就已经定义好了。 栈空间大小 默认为2M,递归调用自身,50--60次就爆栈了。 在开辟线程时,把栈空间 定义为20M,递归调用个几百次 应该不成问题。 厚德载物。 19:29:07 用win32 API开辟线程,自定义栈大小 是这样写的。 var count = 0 function 递归proc() traceprint(cstring(count)) count++ if(count < 1000) 递归proc() end end vat lpStartAddress, lpParameter, hThread, ThreadId function 定义回调函数_点击() var StackSize = 1024 * 1024 * 20 //20M lpStartAddress = callbackmalloc("递归proc","dialogproc") lpParameter = "参数" hThread = CreateThread(null, StackSize, lpStartAddress, lpParameter, 0, ThreadId) end function 释放回调函数_点击() CloseHandle(hThread) callbackfree(lpStartAddress) end //开辟线程,win32 API函数 function CreateThread(Attributes, StackSize, Address, Parameter, Flags, &TId) return dllcall("kernel32.dll","long","CreateThread","long",Attributes, "long",StackSize, "callback",Address, "long",Parameter, "long",Flags, "plong",TId) end function CloseHandle(Handle) return dllcall("kernel32.dll","long","CloseHandle","long",Handle) end
内存call。根本没有什么内存脚本 内存call。根本没有什么内存脚本 6921008: 我来个例子 比如说 我要梦幻自动补血 补蓝 这个内存是可以做到 但是也是自w慰的。 什么叫自动补血补蓝,其实就是修改血的数据。 12滴血 修改成999 。 都可以 但是有一点就是 修改的内存数据 不会上传到 梦幻的服务器上 所以是自w慰 就是说 看着是999滴血 被怪砍一刀 你掉了12滴血 你也会死。 内存脚本是修改程序的资源 但是不会上传 说白了 你给自己改了个等级 改成99 别人看你 一样是原来的 等级 丝毫没有用 而且修改网络游戏的内存数据,属于非法动作 被抓的几率才更大。 所以说 内存只是修改罢了 不能实行出动作 如果谁说他会做内存脚本。 可以肯定他是骗子 大多数用内存的 都是外g挂 。 不是脚本。 外g挂跟脚本的区别在于 外g挂是属于修改游戏数据,来起到一种特别效果。 模拟脚本,是属于实行手动能操作的动作, 内存脚本 跟模拟脚本,根本就是两回事。 如果想真正实行那些 特别的效果 比如说:满血满蓝。 只能用一种方法 那就是做封包脚本,向游戏服务器.发送一个补血封包,发送一个补蓝封包,发送一个寻路封包。 就比如说把 假如 你在游戏里捡到个 彩果 你的电脑会给服务器 发送一个封包 增加一个彩果。 那么我们获取这个封包 让他不发送 把一个彩果 修改成 二十个彩果 。 再次发送到服务器 。 这样就实行了欺骗 。 但是这种方法 技术很有难度。 ======================================================= menghuan: 呵呵,遭到攻击了吧。从理论来说 调用内存call,确实可以起到补血的效果,不过有些东西不是你直接改血值 就可以实现的,因为你缺乏.触发补血效果的条件。 例子,比如远程卖东西,你必须先要满足打开商店的动作。所以根据这个原理,你要实现一个动作就必须是一个系列的动作,也就是call, 而且你直接修改血值.也会触发游戏自身的检测,比如tx的游戏都会有内存数据完整性的效验,改东西必然会触发检测,多学习吧,大家一起努力进步 其实游戏的多数东西.都是在本机完成判断的,服务端的不会有太多效验,因为如果在服务端效验这些,会给服务器增加很大压力,尤其是比如人物坐标、血量、蓝量这种经常变化的数据,如果几万台客户端的数据,都要传到服务器去判断,结果可象而知:服务器爆了,呵呵, 你模拟封包向服务器发消息,如果服务器可以接受,就说明在本机.也可以调用内存call来解决, 因为封包的信息.也是你本机的信息发送出去的。如果你做不到,只能说明水平问题,盲目下定论,被攻击也不奇怪了.
内存call。根本没有什么内存脚本 内存call。根本没有什么内存脚本 6921008: 我来个例子 比如说 我要梦幻自动补血 补蓝 这个内存是可以做到 但是也是自w慰的。 什么叫自动补血补蓝,其实就是修改血的数据。 12滴血 修改成999 。 都可以 但是有一点就是 修改的内存数据 不会上传到 梦幻的服务器上 所以是自w慰 就是说 看着是999滴血 被怪砍一刀 你掉了12滴血 你也会死。 内存脚本是修改程序的资源 但是不会上传 说白了 你给自己改了个等级 改成99 别人看你 一样是原来的 等级 丝毫没有用 而且修改网络游戏的内存数据,属于非法动作 被抓的几率才更大。 所以说 内存只是修改罢了 不能实行出动作 如果谁说他会做内存脚本。 可以肯定他是骗子 大多数用内存的 都是外g挂 。 不是脚本。 外g挂跟脚本的区别在于 外g挂是属于修改游戏数据,来起到一种特别效果。 模拟脚本,是属于实行手动能操作的动作, 内存脚本 跟模拟脚本,根本就是两回事。 如果想真正实行那些 特别的效果 比如说:满血满蓝。 只能用一种方法 那就是做封包脚本,向游戏服务器.发送一个补血封包,发送一个补蓝封包,发送一个寻路封包。 就比如说把 假如 你在游戏里捡到个 彩果 你的电脑会给服务器 发送一个封包 增加一个彩果。 那么我们获取这个封包 让他不发送 把一个彩果 修改成 二十个彩果 。 再次发送到服务器 。 这样就实行了欺骗 。 但是这种方法 技术很有难度。 ======================================================= menghuan: 呵呵,遭到攻击了吧。从理论来说 调用内存call,确实可以起到补血的效果,不过有些东西不是你直接改血值 就可以实现的,因为你缺乏.触发补血效果的条件。 例子,比如远程卖东西,你必须先要满足打开商店的动作。所以根据这个原理,你要实现一个动作就必须是一个系列的动作,也就是call, 而且你直接修改血值.也会触发游戏自身的检测,比如tx的游戏都会有内存数据完整性的效验,改东西必然会触发检测,多学习吧,大家一起努力进步 其实游戏的多数东西.都是在本机完成判断的,服务端的不会有太多效验,因为如果在服务端效验这些,会给服务器增加很大压力,尤其是比如人物坐标、血量、蓝量这种经常变化的数据,如果几万台客户端的数据,都要传到服务器去判断,结果可象而知:服务器爆了,呵呵, 你模拟封包向服务器发消息,如果服务器可以接受,就说明在本机.也可以调用内存call来解决, 因为封包的信息.也是你本机的信息发送出去的。如果你做不到,只能说明水平问题,盲目下定论,被攻击也不奇怪了.
内存call。根本没有什么内存脚本 内存call。根本没有什么内存脚本 6921008: 我来个例子 比如说 我要梦幻自动补血 补蓝 这个内存是可以做到 但是也是自w慰的。 什么叫自动补血补蓝,其实就是修改血的数据。 12滴血 修改成999 。 都可以 但是有一点就是 修改的内存数据 不会上传到 梦幻的服务器上 所以是自w慰 就是说 看着是999滴血 被怪砍一刀 你掉了12滴血 你也会死。 内存脚本是修改程序的资源 但是不会上传 说白了 你给自己改了个等级 改成99 别人看你 一样是原来的 等级 丝毫没有用 而且修改网络游戏的内存数据,属于非法动作 被抓的几率才更大。 所以说 内存只是修改罢了 不能实行出动作 如果谁说他会做内存脚本。 可以肯定他是骗子 大多数用内存的 都是外g挂 。 不是脚本。 外g挂跟脚本的区别在于 外g挂是属于修改游戏数据,来起到一种特别效果。 模拟脚本,是属于实行手动能操作的动作, 内存脚本 跟模拟脚本,根本就是两回事。 如果想真正实行那些 特别的效果 比如说:满血满蓝。 只能用一种方法 那就是做封包脚本,向游戏服务器.发送一个补血封包,发送一个补蓝封包,发送一个寻路封包。 就比如说把 假如 你在游戏里捡到个 彩果 你的电脑会给服务器 发送一个封包 增加一个彩果。 那么我们获取这个封包 让他不发送 把一个彩果 修改成 二十个彩果 。 再次发送到服务器 。 这样就实行了欺骗 。 但是这种方法 技术很有难度。 ======================================================= menghuan: 呵呵,遭到攻击了吧。从理论来说 调用内存call,确实可以起到补血的效果,不过有些东西不是你直接改血值 就可以实现的,因为你缺乏.触发补血效果的条件。 例子,比如远程卖东西,你必须先要满足打开商店的动作。所以根据这个原理,你要实现一个动作就必须是一个系列的动作,也就是call, 而且你直接修改血值.也会触发游戏自身的检测,比如tx的游戏都会有内存数据完整性的效验,改东西必然会触发检测,多学习吧,大家一起努力进步 其实游戏的多数东西.都是在本机完成判断的,服务端的不会有太多效验,因为如果在服务端效验这些,会给服务器增加很大压力,尤其是比如人物坐标、血量、蓝量这种经常变化的数据,如果几万台客户端的数据,都要传到服务器去判断,结果可象而知:服务器爆了,呵呵, 你模拟封包向服务器发消息,如果服务器可以接受,就说明在本机.也可以调用内存call来解决, 因为封包的信息.也是你本机的信息发送出去的。如果你做不到,只能说明水平问题,盲目下定论,被攻击也不奇怪了.
内存call。学习笔记 内存call。学习笔记 作者:剑仙十号 游戏基本是面向类和对象的编程。 类是虚态的东西,是基因模块。 对象是实态的东西,是类的实例化。 子程序是指子函数,它又叫功能。 子程序的关键call,就是子程序的手机码。 在电脑中,程序往往由一个主程序.和很多个子程序构成。子程序不被调用时,都是静止状态。每个子程序都配有一个手机码。 主程序需要子程序时,只需要call 0x手机号码,就能把子程序叫出来干活。 对于带参的子程序,方法也是一样的。先是把参数传进去,再call 0x手机号码,就能把子程序叫出来干活。 程序员经常讲找call写call。那这个call是啥? 在OD反汇编软件中,call 子程序的绝对地址,是调用已经编译好的,已经生成程序的子程序。 在代码注入器中, call 0x********,是调用游戏公司的子程序。这个子程序是游戏公司写的,不是我们写的。如游戏的加红子程序,加蓝子程序,行走子程序。 在tc中,调用 函数名(参数1,参数2),是调用未编译,未生成exe的函数。 当然,你用TC写一个主程序,一个弹出窗口的子程序。 经过编译生成后,再用代码注入器 call 子程序的绝对地址,也可以把它调出来,完成弹出窗口。 对于用TC,用易语言,用vc++2010编译好的子程序,有一个十分可爱的性质。 只要运行它的首句代码, 只要调用它的绝对地址,子程序就会一直执行下去,直到执行完这个子程序.所有的代码。 总结:子程序的关键call,就是子程序的手机码。 保存子程序的首句代码的地址, 就是保存这个子程序的绝对地址。 打开OD,附加自己写的TC程序/或网游,找到自己写的弹窗子程序/游戏的子程序,把这个地址用笔.记下来。 打开代码注入器,附加网游,对TC程序注入这个call, 这样就完成弹窗。完成人物的补血。不用按补血键。补红、补蓝、喊话、寻路。选怪 打怪,原理也一样。 // // 对读内存基址,注入游戏关键call,一些玩家是惊魂未定,谈之色变。 我的方法是, 坚持只读不写的原则:只读取游戏数据,不改写游戏数据。写好内存脚本后,开小号上线耍几天。不封号的就可以使用。 总结,在该用内存辅助时使用。 在不该使用时,坚决不使用。这样子收获丰厚,收益显著。分清楚什么时候该用,什么时候不该用,这是一种智慧。 原创作品。转载请标明作者,标明出处
内存call。学习笔记 内存call。学习笔记 作者:剑仙十号 游戏基本是面向类和对象的编程。 类是虚态的东西,是基因模块。 对象是实态的东西,是类的实例化。 子程序是指子函数,它又叫功能。 子程序的关键call,就是子程序的手机码。 在电脑中,程序往往由一个主程序.和很多个子程序构成。子程序不被调用时,都是静止状态。每个子程序都配有一个手机码。 主程序需要子程序时,只需要call 0x手机号码,就能把子程序叫出来干活。 对于带参的子程序,方法也是一样的。先是把参数传进去,再call 0x手机号码,就能把子程序叫出来干活。 程序员经常讲找call写call。那这个call是啥? 在OD反汇编软件中,call 子程序的绝对地址,是调用已经编译好的,已经生成程序的子程序。 在代码注入器中, call 0x********,是调用游戏公司的子程序。这个子程序是游戏公司写的,不是我们写的。如游戏的加红子程序,加蓝子程序,行走子程序。 在tc中,调用 函数名(参数1,参数2),是调用未编译,未生成exe的函数。 当然,你用TC写一个主程序,一个弹出窗口的子程序。 经过编译生成后,再用代码注入器 call 子程序的绝对地址,也可以把它调出来,完成弹出窗口。 对于用TC,用易语言,用vc++2010编译好的子程序,有一个十分可爱的性质。 只要运行它的首句代码, 只要调用它的绝对地址,子程序就会一直执行下去,直到执行完这个子程序.所有的代码。 总结:子程序的关键call,就是子程序的手机码。 保存子程序的首句代码的地址, 就是保存这个子程序的绝对地址。 打开OD,附加自己写的TC程序/或网游,找到自己写的弹窗子程序/游戏的子程序,把这个地址用笔.记下来。 打开代码注入器,附加网游,对TC程序注入这个call, 这样就完成弹窗。完成人物的补血。不用按补血键。补红、补蓝、喊话、寻路。选怪 打怪,原理也一样。 // // 对读内存基址,注入游戏关键call,一些玩家是惊魂未定,谈之色变。 我的方法是, 坚持只读不写的原则:只读取游戏数据,不改写游戏数据。写好内存脚本后,开小号上线耍几天。不封号的就可以使用。 总结,在该用内存辅助时使用。 在不该使用时,坚决不使用。这样子收获丰厚,收益显著。分清楚什么时候该用,什么时候不该用,这是一种智慧。 原创作品。转载请标明作者,标明出处
内存call。学习笔记 内存call。学习笔记 作者:剑仙十号 游戏基本是面向类和对象的编程。 类是虚态的东西,是基因模块。 对象是实态的东西,是类的实例化。 子程序是指子函数,它又叫功能。 子程序的关键call,就是子程序的手机码。 在电脑中,程序往往由一个主程序.和很多个子程序构成。子程序不被调用时,都是静止状态。每个子程序都配有一个手机码。 主程序需要子程序时,只需要call 0x手机号码,就能把子程序叫出来干活。 对于带参的子程序,方法也是一样的。先是把参数传进去,再call 0x手机号码,就能把子程序叫出来干活。 程序员经常讲找call写call。那这个call是啥? 在OD反汇编软件中,call 子程序的绝对地址,是调用已经编译好的,已经生成程序的子程序。 在代码注入器中, call 0x********,是调用游戏公司的子程序。这个子程序是游戏公司写的,不是我们写的。如游戏的加红子程序,加蓝子程序,行走子程序。 在tc中,调用 函数名(参数1,参数2),是调用未编译,未生成exe的函数。 当然,你用TC写一个主程序,一个弹出窗口的子程序。 经过编译生成后,再用代码注入器 call 子程序的绝对地址,也可以把它调出来,完成弹出窗口。 对于用TC,用易语言,用vc++2010编译好的子程序,有一个十分可爱的性质。 只要运行它的首句代码, 只要调用它的绝对地址,子程序就会一直执行下去,直到执行完这个子程序.所有的代码。 总结:子程序的关键call,就是子程序的手机码。 保存子程序的首句代码的地址, 就是保存这个子程序的绝对地址。 打开OD,附加自己写的TC程序/或网游,找到自己写的弹窗子程序/游戏的子程序,把这个地址用笔.记下来。 打开代码注入器,附加网游,对TC程序注入这个call, 这样就完成弹窗。完成人物的补血。不用按补血键。补红、补蓝、喊话、寻路。选怪 打怪,原理也一样。 // // 对读内存基址,注入游戏关键call,一些玩家是惊魂未定,谈之色变。 我的方法是, 坚持只读不写的原则:只读取游戏数据,不改写游戏数据。写好内存脚本后,开小号上线耍几天。不封号的就可以使用。 总结,在该用内存辅助时使用。 在不该使用时,坚决不使用。这样子收获丰厚,收益显著。分清楚什么时候该用,什么时候不该用,这是一种智慧。 原创作品。转载请标明作者,标明出处
read4byte,句柄设置-1,读取本进程的内存地址 read4byte,句柄设置-1,读取本进程的内存地址read=read4byte(handle,#4FC000) 获取bmp图片宽高,纯源码。就是读bytes。 bmp加载到内存,申请内存,复制到内存,看偏移然后读就行了。 bmp,jpg,png…………还有其它格式,都能用得到。 原文地址http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F52tc.info%2Fthread-44864-1-1.html&urlrefer=3c4d0d32997c14bccdcd5a7a44f3cfc4我是大自然的搬运工。 4.0源码,改成7.0代码 var path=系统获取进程路径() var name="tc.bmp" var hbmp=dllcall("user32.dll","int","LoadImageA","int",0,"char *",path&name,"int",0,"int",0,"int",0,"int",#10+#2000) //加载到内存. var size=dllcall("gdi32.dll","int","GetObjectA","int",hbmp,"int",0,"int",null) //创建对象,获取size大小. var lpbuff=dllcall("Kernel32.dll","int","GlobalAlloc","int",0,"int",size) //申请堆内存,返回值是缓冲区.地址 traceprint(dllcall("gdi32.dll","int","GetObjectA","int",hbmp,"int",size,"int",lpbuff))//复制到内存缓冲区.地址 dllcall("gdi32.dll","int","DeleteObject","int",hbmp) //删除对象 var width=read4byte(-1,lpbuff+4) var height=read4byte(-1,lpbuff+8) messagebox(width&" , "&height,"图片宽*高") dllcall("Kernel32.dll","int","GlobalFree","int",lpbuff) //记得释放缓冲区.
chatGPT查错。无法加载lib接口,请退出后重试 tc7.0。调试运行的时候经常弹这个是什么原因,生成的exe也有几率弹,更离谱的是,写了新版本,生成运行的居然是旧版本 昨晚下8.0,重装系统(win10),也一样弹
chatGPT查错。无法加载lib接口,请退出后重试 tc7.0。调试运行的时候经常弹这个是什么原因,生成的exe也有几率弹,更离谱的是,写了新版本,生成运行的居然是旧版本 昨晚下8.0,重装系统(win10),也一样弹
窗口截屏是黑屏,这是什么原因? 窗口截屏是黑屏,这是什么原因? 窗口句柄没问题 DX。使用DirectX截屏 如果截图变黑,请参考这一篇,DirectX截图黑屏的解决办法。 制作游戏时,游戏公司使用DirectX软件 绘制的游戏窗口,必须使用大漠/ 天使/ 乐玩插件 的dx截图模式。 DX游戏窗口,后台模式只接受dx端口的输入。dx图色 dx鼠标 dx键盘, 按键精灵 tc简单开发 易语言 的窗口模式无效。dx模式 由大漠首创,它是大漠最大的贡献。
窗口截屏是黑屏,这是什么原因? 窗口截屏是黑屏,这是什么原因? 窗口句柄没问题 DX。使用DirectX截屏 如果截图变黑,请参考这一篇,DirectX截图黑屏的解决办法。 制作游戏时,游戏公司使用DirectX软件 绘制的游戏窗口,必须使用大漠/ 天使/ 乐玩插件 的dx截图模式。 DX游戏窗口,后台模式只接受dx端口的输入。dx图色 dx鼠标 dx键盘, 按键精灵 tc简单开发 易语言 的窗口模式无效。dx模式 由大漠首创,它是大漠最大的贡献。
为什么后台组合键,识别不出来? 为什么后台组合键,识别不出来? 单独后台按键的,就能识别出来 前台按下。 后台按键, 前台弹起。 人才呀 我怎么就没想到用这种方式 完美解决。源码: 键盘按下(17) 等待(111) 窗口提交按键(窗口句柄1, 49) 窗口提交按键(窗口句柄2, 49) 窗口提交按键(窗口句柄3, 49) 窗口提交按键(窗口句柄4, 49) 窗口提交按键(窗口句柄5, 49) 等待(150) 键盘弹起(17)
1
下一页