|
本帖最后由 bestkakkoii 于 2023-3-4 11:55 编辑
其他文章:
http://52tc.info/home.php?mod=space&uid=231477&do=thread&view=me&from=space&type=thread
项目内包含lua函数只有8.0能用,註释掉lua部分的话7.0也可以用
WINAPI库中除了WINAPI还包含一大堆其它函数封装的库和windows自带COM的库 因为太多太杂所以就不拆分了
2023/03/04 新增几个wsaapi
2022/01/07 新增几个winapi , 图片改变尺寸函数 , 激活并回復最小化窗口函数 修正一个winapi错误
2021/12/18 新增编码/语言转换相关函数常量
2021/12/16 新增线程相关winapi函数/常量
2021/12/10 新增winapi函数/结构体/常量
2021/12/05 新增winapi函数/结构体/常量/列表框控件宏
2021/12/02 新增钩子相关winapi函数/结构体/常量
2021/11/28 修正GetProcAddress 必须使用char *误打成指针传入
2021/11/25 新增几个结构体、常量,修正结构体部分参数错误
2021/11/24 新增几个winapi
2021/11/22 新增几个FTP winapi、修正几个参数类型错误
2021/11/21 新增几个winapi
2021/11/20 新增几个winapi结构体、常量
2021/11/18 新增一个变量库(全局变量、只读变量、加密变量),将几个控件宏改为可用控件名也可以直接用控件句柄操作、新增几个winapi
2021/11/15 加了几个宏,修正一个读utf8函数的错误、新增一个写utf-8 with BOM 和 utf-8 no BOM的函数、新增两个枚举ini节名/键名函数/刪除节名或键名函数
2021/11/13 修正几个函数类型跟调用方式的正确性
2021/11/11 补上一堆winapi函数、结构体、常量
2021/11/10 补上一堆winapi函数 和其他宏和库
2021/11/09 完善几个宏
2021/11/08 又补上几个常量跟控件宏、转换宏
除了源碼以外還加上(包含简易功能注解):
win32api库[約2000行代码](之前所有项目用到的api都塞进去了)
user32.dll
kernel32.dll
gdi32.dll
gdiplus.dll
ntdll.dll
msvbvm60.dll
Wininet.dll
shell32.dll
msimg32.dll
oleaut32.dll
oleacc.dll
uxtheme.dll
Ole32.dll
shlwapi.dll
winmm.dll
Advapi32.dll
Ws2_32.dll
//这几个是window自带的COM
ScriptControl(COM)
Scripting.FileSystemObject(COM)
ADODB.Stream(COM)
Microsoft.XMLHTTP(COM)
MSScriptControl.ScriptControl(COM)
win32结构体库[2x种](也是所有有用到的都塞了)
_PAINTSTRUCT
_CHARFORMAT2W
_LOGFONTW
_REC
_gettextex
_gettextlengthex
_charrange
_FILETIME
_MSG
_POINT
_SECURITY_ATTRIBUTES
_TVINSERTSTRUCTW
_LARGE_INTEGER
_OVERLAPPED
_NOTIFYICONDATW
_WNDCLAS**W
_MODULEENTRY32W
_STRUCT_TOKEN_PRIVILEGE
_STARTUPINFOW
_PROCESS_INFORMATION
_HOSTENT
_WSADATA_SOCKADDR_IN
_IN_ADDR
_CHOOSECOLOR
_CHOOSEFONT
_RGB_COLORREF
_REASON_CONTEXT
win32常量库[約2000个](TC文档提供的+自己有用到的常量+順便搜刮的)
窗口可自由调整大小控件自适应大小
1.调适窗口主要是自绘的 ListBox + 与TC相同的右键菜单
//ListBox 可支援每一行不同颜色
2.编辑框使用的也是自绘的 RICHEDIT(富编辑框) + 画上去的行数显示
//富编辑框支持包括图片黏贴语法高亮甚至不同字体等等...但太麻烦了没写((头痛
3.另外放了一个没啥用的下拉框模仿聊天对话 按下回车能把文本输出到调适窗口并记录(预设是纪录30行 之后每增加一行就删除末尾一行) 还有输入提示文
4.还有一个注释掉的托盘气泡自绘
//另外以上四个控件都是写了回调、其实可以直接塞在消息路由
按下 F5 可以运行编辑框内的 lua 脚本
//附带一个数组传参式的dllcall封装 最多15个参数 以下是调用方法
//測試用
function TEST(hWnd)
var dllarr = array()
dllarr["扩展风格"] = array("DWORD", #0)
dllarr["类名"] = array("wchar *", "ListBox")
dllarr["文本"] = array("wchar *", "")
dllarr["风格"] = array("DWORD", WS_CHILD + WS_VISIBLE + WS_VSCROLL + LBS_HASSTRINGS)
dllarr["x座标"] = array("int", 5)
dllarr["y座标"] = array("int", m_size["y"] - 205)
dllarr["宽"] = array("int", m_size["x"] - 19)
dllarr["高"] = array("int", 171)
dllarr["父窗口句柄"] = array("long", hWnd)
dllarr["菜单句柄"] = array("long", null)
dllarr["实例模块指针"] = array("long", GetModuleHandleW())
dllarr["CREATESTRUCT结构指针"] = array("long", null)
var ret = DllCall("user32.dll", "HWND", "CreateWindowExW", dllarr)
return ret
end
//下面是正常调用法 区别在于一个是万能封装一个是独立封装
function TEST(hWnd)
var dwExStyle = #0//扩展风格
var lpClassName = "ListBox"//类名
var lpWindowName = ""//文本或标题
//子窗口 + 可见 + 垂直滚动条 + 指定列錶框包含由字符串组成的项目
var wStyle = WS_CHILD + WS_VISIBLE + WS_VSCROLL + LBS_HASSTRINGS//窗口风格
var X = 5//x座标
var Y = m_size["y"] - 205//y座标
var nWidth = m_size["x"] - 19//宽
var nHeight = 171//高
var hWndParent = hWnd // 父窗口句柄
var hMenu = null//菜单
var hInstance = GetModuleHandleW()//实例模块指针
var lpParam = null//CREATESTRUCT结构指针
//创建并返回句柄
var lhwnd = CreateWindowExW(dwExStyle, lpClassName, lpWindowName, wStyle, X, Y, nWidth, nHeight, hWndParent, null, hInstance, null)
return ret
end
|
须配合附件中的 位运算库、win32函数库、win32常量库使用
TC8.0自带位运算不过没有包含 位元移位运算子(<<, >>)
转换宏 | 说明 | MAKEPOINT macro | 将lParam转换成POINT结构体包含x, y座标 | MAKEWORD macro | 将两个byte型合并成一个word型,一个在高8位(b),一个在低8位(a) | MAKELONG macro | 将高低位合并转为LONG | LOWORD macro | 指定的 32 位值檢索低位字节 | HIWORD macro | 指定的 32 位值中檢索高位字节 | LOBYTE macro | 指定的 16 位值中檢索低位字节 | HIBYTE macro | 從指定的 16 位值中檢索高位字节 | IS_INTRESOURCE macro | 确定值是否是资源的整数标识符 | MAKEINTRESOURCEW macro | 将整数值转换为与资源管理功能兼容的资源类型 | MAKEWPARAM macro | 将两个word型合并成一个dword型(wParam )。一个在高16位,一个在低16位 | MAKELPARAM macro | 将两个word型合并成一个dword型(lParam )。一个在高16位,一个在低16位 | MAKELRESULT macro | 创建一个值以用作窗口过程的返回值 | MAKELANGID macro | 从主语言标识符和子语言标识符创建语言标识符(lcid) | PRIMARYLANGID macro | 从语言标识符(lcid)中提取主要语言标识符。 | SUBLANGID macro | 从语言标识符(lcid)中提取子语言标识符。 | MAKELCID macro | 根据语言标识符、排序顺序标识符 和 排序版本构造 区域设置标识符(LCID) | MAKESORTLCID macro | 根据语言标识符、排序顺序标识符 和 排序版本构造 区域设置标识符(LCID) | LANGIDFROMLCID macro | 从区域设置标识符中检索 语言标识符 | SORTIDFROMLCID macro | 从区域设置标识符中检索 排序顺序标识符。 | SORTVERSIONFROMLCID | 从区域设置标识符中检索排序版本 |
memset() 填充内存
new() 申请一个新的指定类型内存空间(byte short long double wchar char)
delete() 删除一个new出来的空间
memcopy() 由 "来源"(src) 指向地址为起始地址的连续 n 个字节的数据复制到以 "目标"(distin) 指向地址为起始地址的空间内
memcopy_byte() 同上,不过复制类型是byte
A2W() 多字节转宽字节字符串
W2A() 宽字节转多字节字符串
EnablePrivilege() 根據指定令牌提升進程權限 如 "SeDebugPrivilege"
LONGLONG() 将转换long转换成longlong(TC8.0限定)
外加一个lua测试用的代码:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|