GRIP调用API
以下grip代码
number / nnm(3)
string / str(32),f(132)
nnm(1)=2
f='C:\UF_XLH\Debug\UF_XLH.dll' $$ UF_XLH.dll文件路径不能含空格和中文
grargs / str,nnm
xspawn / ufun,f,iferr,LMM0:
IF/nnm(1)==2,JUMP/LMM0:
JUMP/LMM1:
LMM0:
messg/'UF_XLH.dll文件丢失。'
HALT
LMM1:
ifthen/lenf(str)<8
messg/'错误的序列号'
halt
endif
PRINT/'C盘序列号:'+str
halt
以下api代码
#include <Windows.h>
//获取硬盘序号, 硬盘序号由8个十六进制数字组成 转成十六进制最大值为10位 [FFFFFFFF=4294967295]
LPTSTR namebuf=new char[12];
DWORD namesize=12;
DWORD serialnumber;
DWORD maxlen;
DWORD fileflag;
LPTSTR sysnamebuf=new char[10];
DWORD sysnamesize=10;
/* TODO: Add your application code here */
char buffer[32]="";
double pick_ga[3]; //数组
UF_args_t grip_arg_list[2];
grip_arg_list[0].type = UF_TYPE_CHAR; //字符串类型 【UF_TYPE_CHAR_ARRAY;字符串数组类型】
grip_arg_list[0].length = 0;
grip_arg_list[0].address = buffer;
grip_arg_list[1].type = UF_TYPE_DOUBLE_ARRAY; //数组类型
grip_arg_list[1].length = 3; //数组个数;如果不是数组,值=0就行
grip_arg_list[1].address = pick_ga;
/* GRIP 向 API 返回参数 */
int error_status=UF_ask_grip_args(2,grip_arg_list);
if (pick_ga[0]==2)
{
::GetVolumeInformation("c:\\",namebuf,namesize,&serialnumber,&maxlen,&fileflag,sysnamebuf,sysnamesize);
//cout<< "十进制:" << serialnumber <<endl;
// cout<< "十六进制:" << hex << serialnumber<<endl; //16进制输出
_itoa( serialnumber, buffer, 16 ); // DWORD 转换成 char //头文件 #include <stdlib.h>
// buffer为 获得的 C盘序列号
pick_ga[0]=1;
/* API 向GRIP 返回参数 */
UF_set_grip_args(2,grip_arg_list);
}
/* Terminate the API environment */
_____________________________________________________________________________ _
中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/
|