📄 extfunc.cpp
字号:
/*********************************************************************
这里是按键精灵的插件模板
欢迎您为按键精灵制作插件!
这个模板是使用标准C++编写的
褚瑞 2005.3
*********************************************************************/
#include "stdafx.h"
#include "stdio.h"
#include "QMPlugin.h"
/*********************************************************************
* 函数名称:ParseParam
* 说明:这个函数是辅助编写插件的,由插件编写者调用。用于拆分用户传来的多个参数
* 参数:
* char * -- 用户传来的参数,多个参数之间用逗号分隔
* char *(多个) -- 把拆分后的参数分别存放在多个缓冲区里面
* 返回值:
* int -- 返回成功拆分的参数的个数
* 作者: 褚瑞
* 时间 : 2005-04-30 14:24:37
*********************************************************************/
int ParseParam(char *lpszParamList, ...)
{
va_list Marker;
//统计缓冲区的个数
va_start( Marker, lpszParamList); /* 初始化可变参数表 */
int iBufferNum = -1;
do {
int lpszCurrentParam = va_arg( Marker, int);
if(lpszCurrentParam == 0 || lpszCurrentParam == -1)
break;
iBufferNum ++;
} while(TRUE);
va_end(Marker);
//开始拆分
char *lpCurrentPos, *lpEndPos, *lpszCurrentParam;
lpCurrentPos = lpszParamList;
va_start( Marker, lpszParamList); /* 初始化可变参数表 */
int iParsedParamNum = 0; //记录已经拆分的参数的个数
char cFindChar;
while(TRUE)
{
iParsedParamNum ++;
if(iParsedParamNum > iBufferNum) //如果缓冲区数目不够,退出
break;
lpszCurrentParam = va_arg( Marker, char *); //取得一个新的缓冲区
cFindChar = ','; //默认是找逗号
if(*lpCurrentPos == '\"' || *lpCurrentPos == ',') //如果遇到了引号或者逗号
cFindChar = *lpCurrentPos ++; //找下一个引号或者逗号
lpEndPos = strchr(lpCurrentPos,cFindChar); //查找逗号或者引号
if(lpEndPos == NULL) //如果没有找到
{
strcpy(lpszCurrentParam, lpCurrentPos); //直接复制字符串
break;
}
//找到了
strncpy(lpszCurrentParam, lpCurrentPos, lpEndPos - lpCurrentPos);
lpszCurrentParam[lpEndPos - lpCurrentPos] = 0;
if(*lpEndPos == '\"' && *(lpEndPos+1) == ',')
lpCurrentPos = lpEndPos + 2;
else
lpCurrentPos = lpEndPos + 1; //当前查找位置前移动,准备继续找
}
va_end(Marker);
return iParsedParamNum;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -