第三步:GetComputerNameW 调用实战。
在tc中,系统API的调用格式:
dllcall("dll路径","返回值类型","函数名",
"参数类型",参数名, "…",…)
调用系统dll,省略dll路径。调用第三方的dll,必须带路径。
"dll路径":"kernel32.dll"
"返回值类型":"long"
"函数名":"GetComputerNameW"
看看参数1,参数2应该怎样写。
__out LPTSTR lpBuffer,
__in,out LPDWORD lpnSize
lpBuffer是获取电脑名称的缓冲区。英文单词Buffer,缓冲区。
nSize是输入缓冲区的大小 和输出电脑名称的大小。
.
参数1 out是返回字符串的。LP是引用。这样是引用返回。
标识字符串的引用返回,使用"pwchar *"
参数2 是用来标识参数1 缓冲区的长度。
参数2 是先in后out的。先传入最大的参数,再根据参数1 保存计算机名的长度,引用返回参数。
=======================================================
运行VS2013,热键F1_弹出帮助文档。
帮助文档就是MSDN。在百度搜索,同样有在线的MSDN。
BOOL WINAPI GetComputerName(
__out LPTSTR lpBuffer,
__in,out LPDWORD lpnSize
);
———————————————————————
运行tc,热键F1_弹出帮助文档。
3.windows平台,6.dllcall,1_dllcall的使用说明
———————————————————————
WIN32中的参数类型 LPTSTR,
对应 tc_dllcall,pwchar *
WIN32中的参数类型 LPDWORD,
对应 tc_dllcall,plong
对照MSDN 和TC帮助文档的说明,套着用就行。
//
var bool_va, lpBuffer="",nSize=128
bool_va = dllcall("kernel32.dll","long","GetComputerNameW", "pwchar *",lpBuffer, "plong",nSize)
traceprint(bool_va)
traceprint(lpBuffer)
traceprint(nSize) //经过引用返回,128变成15了。调用 GetUserName(),方法类似。
//
tc大成群:433286131
本贴记录在:tc简单开发吧,精品区2,编程八**。
=======================================================
重点:
WIN32_API的参数类型。WIN32传址类型的参数,
都对应tc_dllcall的p类型参数。必须使用带p开头的。
|