📄 unitmain.pas
字号:
m_dtRetType:=SDT_TEXT;
m_wReserved:=0;
m_shtUserLevel:=LVL_HIGH;
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_nArgCount:=High(ArgumentsInfo[i])+1;
m_pBeginArgInfo:=pARG_INFO(ArgumentsInfo[i]);
end;
//WatchClp
20:// 第20个命令的信息---------------------------------------------------------
with CommandsInfo[i] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szEGName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('监视剪辑板');
m_szEGName:=PChar('WatchClp');
m_szExplain:=PChar('把指定窗口添加到系统剪辑板监视链,当剪辑板内容被改变后,这个窗口会收到“窗口_剪辑板内容已改变”消息。在该窗口正常销毁时系统会自动把该窗口从剪辑板监视链中移除。成功返回真,失败返回假。');
{$ENDIF}
m_shtCategory:=5;
m_wState:=0;
m_dtRetType:=SDT_BOOL;
m_wReserved:=0;
m_shtUserLevel:=LVL_HIGH;
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_nArgCount:=High(ArgumentsInfo[i])+1;
m_pBeginArgInfo:=pARG_INFO(ArgumentsInfo[i]);
end;
//UnWatchClp
21:// 第21个命令的信息---------------------------------------------------------
with CommandsInfo[i] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szEGName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('撤销剪辑板监视');
m_szEGName:=PChar('UnWatchClp');
m_szExplain:=PChar('把指定窗口从系统剪辑板监视链中移除。成功返回真,失败返回假。');
{$ENDIF}
m_shtCategory:=5;
m_wState:=0;
m_dtRetType:=SDT_BOOL;
m_wReserved:=0;
m_shtUserLevel:=LVL_HIGH;
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_nArgCount:=High(ArgumentsInfo[i])+1;
m_pBeginArgInfo:=pARG_INFO(ArgumentsInfo[i]);
end;
//RegWndMsg
22:// 第22个命令的信息---------------------------------------------------------
with CommandsInfo[i] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szEGName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('注册消息');
m_szEGName:=PChar('RegisterWindowMessage');
m_szExplain:=PChar('定义一个新的系统范围内唯一的窗口消息,返回其消息号。这个命令的返回值可以用于“发送消息”或“投递消息”等命令,'+
'以实现不同程序之间的通讯和协作。');
{$ENDIF}
m_shtCategory:=1;
m_wState:=0;
m_dtRetType:=SDT_INT;
m_wReserved:=0;
m_shtUserLevel:=LVL_HIGH;
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_nArgCount:=High(ArgumentsInfo[i])+1;
m_pBeginArgInfo:=pARG_INFO(ArgumentsInfo[i]);
end;
//ExecuteSub
23:// 第23个命令的信息---------------------------------------------------------
with CommandsInfo[i] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szEGName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('执行子程序');
m_szEGName:=PChar('ExecuteSub');
m_szExplain:=PChar('执行指定的子程序指针(SubPtr)所指向的子程序,返回该子程序的返回值的地址(如果有返回值)。'+
'注意:*该命令在执行时不进行任何参数个数和类型检查!请确信所提供的参数的个数及类型与所执行的子程序要求的参数一致!'+
'如果所执行的子程序有返回值,请把本命令的返回值作为参数传递给“取数据”命令,将其取回。');
{$ENDIF}
m_shtCategory:=2;
m_wState:=CT_ALLOW_APPEND_NEW_ARG or CT_IS_ERROR;
m_dtRetType:=SDT_INT;
m_wReserved:=0;
m_shtUserLevel:=LVL_HIGH;
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_nArgCount:=High(ArgumentsInfo[i])+1;
m_pBeginArgInfo:=pARG_INFO(ArgumentsInfo[i]);
end;
//GetTsc
24:// 第24个命令的信息---------------------------------------------------------
with CommandsInfo[i] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szEGName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('取CPU运行周期');
m_szEGName:=PChar('GetTsc');
m_szExplain:=PChar('返回CPU从开始运行到现在为止所经过的时钟周期数(clock cycles)。 '+
'该命令的一个典型用途是反跟踪调试:在程序中关键代码段的前后分别使用这个命令,然后比较这两个返回值,'+
'如果发现两值之差远远大于该段代码正常执行时所需的CPU时钟周期,就可以断定该段代码被跟踪调试了。'+
'由于该命令在实现时直接调用了汇编指令“RDTSC”,所以'+
'不受系统时钟的影响,就算系统时钟被调试工具中断,该命令也完全可以正常工作。 具体请看该支持库附带的例程。');
{$ENDIF}
m_shtCategory:=6;
m_wState:=0;
m_dtRetType:=SDT_INT64;
m_wReserved:=0;
m_shtUserLevel:=LVL_HIGH;
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_nArgCount:=0;
m_pBeginArgInfo:=pARG_INFO(ArgumentsInfo[i]);
end;
end; // end of case and for
end;
////////////////////////////////////////////////////////////////////////////////
// 初始化参数信息
{$IFDEF __ELIB_FNR}
{$ELSE}
procedure InitArgumentsInfo;
var i,j,count:Integer;
begin
for i:=0 to High(ArgumentsInfo) do case i+1 of
1://以下是第1个命令的参数信息================================================
begin
count:=3; //!!! 本命令的参数个数
SetLength(ArgumentsInfo[i],count);
for j:=0 to High(ArgumentsInfo[i]) do case j+1 of
1: //第一个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('窗口句柄');
m_szExplain:=PChar('这个窗口的消息将被截获。*注意:如果这个窗口不属于调用该命令的程序,则截获失败。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_INT;
m_nDefault:=0;
m_dwState:=0;
end;
2: //第2个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('消息号');
m_szExplain:=PChar('指明要截获的消息。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_INT;
m_nDefault:=0;
m_dwState:=0;
end;
3: //第3个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('消息处理子程序指针');
m_szExplain:=PChar('请用易语言IDE的 “工具” 菜单中 《复制“消息处理子程序”到剪贴板》 命令,然后在易语言代码区中粘贴,以获得消息处理子程序的框架');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_SUB_PTR;
m_nDefault:=0;
m_dwState:=0;
end;
end; // end of case j+1 and for
end; // end of case i+1
2://以下是第2个命令的参数信息================================================
begin
count:=2; //!!! 本命令的参数个数
SetLength(ArgumentsInfo[i],count);
for j:=0 to High(ArgumentsInfo[i]) do case j+1 of
1: //第一个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('窗口句柄');
m_szExplain:=PChar('本参数指定欲撤消其消息截获的窗口句柄。如果本参数省略,则<参数2>也被忽略,表示撤消已建立的所有的截获。*注意:如果指定了该参数,其值必须是用“截获消息”命令成功截获其消息的窗口的句柄。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_INT;
m_nDefault:=0;
m_dwState:=AS_DEFAULT_VALUE_IS_EMPTY;
end;
2: //第2个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('消息号');
m_szExplain:=PChar('撤消对该消息的截获。如果省略本参数且正确指定了<参数1>,表示撤消<参数1>指定的窗口中所有已建立的消息截获。*注意:如果指定了该参数,其值必须是用“截获消息”命令成功截获的消息号。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_INT;
m_nDefault:=0;
m_dwState:=AS_DEFAULT_VALUE_IS_EMPTY;
end;
end; // end of case j+1 and for
end; // end of case i+1
3://以下是第3个命令的参数信息================================================
begin
count:=1; //!!! 本命令的参数个数
SetLength(ArgumentsInfo[i],count);
for j:=0 to High(ArgumentsInfo[i]) do case j+1 of
1: //第一个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('欲取其内存地址的容器');
m_szExplain:=PChar('当前版本仅支持取以下类型的容器的内存地址:'+
'1、字节型;2、短整数型;3、长整数型;4、小数型;'+
'5、双精度小数型;6、时间日期型;7、文本型;8、字节集;'+
'9、用户定义数据类型。注意:★如果该参数为文本型或字节集类型的容器,且在使用本命令前没有赋值,本命令会返回0。'+
' ★如果是用户自定义数据类型,则该类型的成员只能是上列9种类型中的前6种!否则将得不到正确的结果。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=_SDT_ALL;
m_nDefault:=0;
m_dwState:=AS_RECEIVE_VAR;
end;
end; // end of case j+1 and for
end; // end of case i+1
4://以下是第4个命令的参数信息================================================
begin
count:=3; //!!! 本命令的参数个数
SetLength(ArgumentsInfo[i],count);
for j:=0 to High(ArgumentsInfo[i]) do case j+1 of
1: //第一个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
m_szName:=PChar('内存地址');
m_szExplain:=PChar('');
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_INT;
m_nDefault:=0;
m_dwState:=0;
end;
2: //第2个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('存放取得数据的容器');
m_szExplain:=PChar('当前版本仅支持取以下类型的容器:'+
'1、字节型;2、短整数型;3、长整数型;4、小数型;'+
'5、双精度小数型;6、时间日期型;7、文本型;8、字节集;'+
'9、用户定义数据类型。注意:'+
' ★如果是“文本型”或“字节集”请确保不为空文本或空字节集(比如在使用本命令前用“取空白文本(255)”或“取空白字节集(255)为该容器赋值”),本命令最终取得的数据长度也仅限于该容器内原始数据的实际长度。'+
'如果是用户自定义数据类型,则该类型的成员只能是上列9种类型中的前6种,否则将得不到正确的结果。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=_SDT_ALL;
m_nDefault:=0;
m_dwState:=AS_RECEIVE_VAR;
end;
3: //第3个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
{$IFDEF __ELIB_FNR}
m_szName:=nil;
m_szExplain:=nil;
{$ELSE}
m_szName:=PChar('成员数');
m_szExplain:=PChar('代表<参数2>(自定义类型)的成员个数,如果 <参数2> 不为用户自定义类型,该参数将被忽略。');
{$ENDIF}
m_shtBitmapIndex:=0;
m_shtBitmapCount:=0;
m_dtDataType:=SDT_INT;
m_nDefault:=0;
m_dwState:=AS_DEFAULT_VALUE_IS_EMPTY;
end;
end; // end of case j+1 and for
end; // end of case i+1
5://以下是第4个命令的参数信息================================================
begin
count:=1; //!!! 本命令的参数个数
SetLength(ArgumentsInfo[i],count);
for j:=0 to High(ArgumentsInfo[i]) do case j+1 of
1: //第一个参数----------------------------------------------------------
with ArgumentsInfo[i][j] do begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -