      . SET 
  PE. SET  ENVI &, SET-def  SET & 
ENVI &&.   ,  ENVI.
================================================================================

ENVI[Keys][-x1-[Lfr:Lto[:Rfr:step]]] [&[&]|^][$][#][-][*][ ][[~Destructor~]Name][=Val]
ENVI[Keys] &::[Name][=Val] //  PE

Keys	  ENVI: [".$#%~~.*=<>"]
	"."	"ENVI." ,  \n    ; 
		  ,   
	"$"	 hex- ( )  
	"%"	   ( )  
		,       UNICODE
	"~"	"ENVI~"     
	"~~"	"ENVI~~"    
	"*"	  "$" "%", [*  ] 
	"="	 ,  , [* .] 
	"#"	 $%       / 
	<>	 , "<"   , ">"  
-x1 -x2 -x3	    1/2/3 
-[Lfr:Lto[:Rfr:step]]	 ; %%d -  ; :
	[C:[::] / [LeftFrom:LeftTo[:RightFrom:Step]]
"$"	      
"#"	      
"$#"	     ; 
	 ,  5 
"*-"	  $#
"-"	  THREAD
"*"	   ;     
	 ENVI
"&"	      PE .
"&&"	       ;
	    ,   ;  
	,     ,   
	. .., "&&"      .
--------------------------------------------------------------------------------
"ENVI ABC"   //     "="   
"ENVI &ABC"  //   PE  "=",    
"ENVI ABC =" "ENVI &ABC ="  //   ,    
"ENVI *"     //   CDROM      
	CDROM0, CDROM, CDROM 1  CDROM2.
"ENVI $"     //      
	     : Favorites Desktop
	StartMenu Startup Programs SendTo Personal QuickLaunch
"ENVI"       //      	 
	 ( 5- -,  
	,    ).
Destructor           PE.
"Destructor VarRef VarVal"  ,   PE  
 .
--------------------------------------------------------------------------------
ENVI-copy PEVarName=SrcPEVarName[;SrcOff;Len;DstOff]
	  , []: part_copy
	SrcOff	 
	Len	
	DstOff	 
	:  ENVI-copy &&PX=&a;0;4;0  ENVI-copy &OLD=&T

ENVI-cmp PEVarName=SrcPEVarName[;SrcOff;Len;DstOff];[S|s|I|i]
	  S/s/I/i, 
	S/I	 
	s/i	 
	I/i	 
	S/s/I/i	      

ENVI-tom PE_VarName=SrcPEVarName
	 UNICODE    (, GBK);
	 ,    (, GBK)  UNICODE

ENVI-addr [AddrVarName][;LenVarName]=SrcPEVarName
	   (AddrVarName),    (LenVarName)

ENVI-swap PE_VarName=PE_VarName2 //   

ENVI-make PE_VarName=[Addr|&PEVarName[@[$]Offset]][;[*][[$]ByteNum]]
	  PE       ;
	Addr		
	&PEVarName	 
	Offset		
	*		  
	$		 

ENVI-mkdummy PE_VarName=[Addr][;[*][[$]ByteNum]]
	 -make,       
	 ;     
	PEVAR[@[$]Offset] ? (shm)ShmCtrName[@[$]Offset] ByteNum=~:from obj

ENVI-mkfixdummy PE_VarName=[Addr][;[*][ByteNum]]
	 -mkdummy,   -   , 
	 

ENVI-zero PE_VarName=[[$]Val][@[$]Off]][;[$]Num]
	  , - 0;
	$:NB [times]   
ENVI-env    forcelocal;     ! 
	 ENVI^ ForcelLocal=1   - 
	PE-         (%Temp%,
	%Systemroot%, %WinDir%); ENVI-env  SET-env   
	  : SET-env &Systemroot=%Systemroot%
ENVI-std    EnviMode=1;     .
ENVI-ret[TraceLevel]      (- 1),
	  PE_VarName,   
ENVI-get[TraceLevel]     (- 1),  
	  PE,     PE_VarName.
SET-raw	  ,    "="
--------------------------------------------------------------------------------

ENVI-DataType PE_VarName=Num[:[~]ByteNumOffset]
	       PE-.
~	 

ENVI?DataType[0[@]] SrcPeVarName=VarName[:[~]BitNumOffset]
	     "DataType"  PE-; "0"
	 ; "@"  0x; "s"  ; "~"  
	"DataType"	char wchar short int long longlong int64 float double
			ldouble ptr(pointer)

ENVI^     ; "^"    

SET-def ABC // ,       ABC.  ,
	  ;  ,   ; 
	 : ENVI && ABC

ENVI-ex ReturnVarName=[&[&]]VarNameQuery
	 ,    
	"&"	  PE
	"&&"	 PE  ,     
	   VarName "^"    
	(ENVI ^ ABC = 1).    %^VarName%   
	; FORCELOCAL   .
--------------------------------------------------------------------------------
ENVI^ HelpColor=[*CMDLineHeight] [ForeColor][#BkColor] // Help -
ENVI @WinName.percent=[Percent]RLCVEF[:BkColor][:PrgColor][:TxtColor][:TXT] 
ENVI @@percent=WinID:[Percent][RLCVEF][:BkColor][:PrgColor][:TxtColor][:TXT] 
	//   (:/:/:.:)
:  ENVI @Check1.percent=70:0xFF00:0xFF:0xFF0000:MyText
--------------------------------------------------------------------------------
ENVI @@Enable=?WinID:VarName"    
ENVI @WinName.Enable=?VarName"    
ENVI @@Visible=?WinID:VarName"    
ENVI @WinName.Visible=?VarName"    
ENVI @@IsWindow=?WinID:VarName"  ,    WinID  
ENVI @@POS=WinID:L:T:[@]W:H:Level:[$]Transp:Front:Actv:PareWinID::CustW:CustH
  //WinID::::::[$]:::
  :ID  :: : ; @   
ENVI @@POS=?WinID:[@]L_VName:T_VName:W_VName:H_VName:X0_VName:Y0_VName:
--------------------------------------------------------------------------------
ENVI ?RetVarName=PPID, ProcID  // ID  
ENVI ?RetVarName=ISADMIN  //,      
ENVI ?RetVarName=ispe //  Windows: 0  , >0 WinPE
--------------------------------------------------------------------------------
ENVI ?StrNm, NumNm=PEBIT, [FILE_System32Dir] 
	//   /: x86/x64/ia64
ENVI ?Bits=PEBIT,%SystemRoot%\System32	//  
ENVI ?Bits=PEBIT,X:\Windows\System32	//  
ENVI ?Bits=PEBIT,Z:\bootice.exe		//  bootice.exe
----------------------------------------------------------------[ ]-----
ENVI ?RetName=WinVer[+][;[^]*|File]  //  Windows:  
	 : *  , ^  , + Fix WinVer with File 
ENVI ?&a=WinVer  //< >< >< >
ENVI-make &b=&a@0;*(2*3)
ENVI-make &c=&a@(0+(2*3));*(2*4)
ENVI-make &d=&a@(0+(2*3)+(2*4));*(2*4)
MESS. <%&a%><%&b%><%&c%><%&d%>  //<0x600011DB1><0x6><0001><1DB1>

------------------------------------------------[ ,  ]-----
ENVI^ Clipboard=Str  //   ,  
ENVI^ Clipboard?=VarName //    
ENVI ?FileVarName[, ProduVerName]=FVER, FileName //   
: SITE ?XEnvi=FVER,%WinDir%\System32\cmd.exe
	ENVI ?XEnvi=FVER,%WinDir%\System32\cmd.exe

----------------------------------------------------[  ]-----
ENVI @@DeskTopFresh=[clearicon][;][1/2/4/8/16][;[-/+]PATH]
Clearicon	   ()
	1	     " "
	2	  " " ()
	4	 1,   
	8	 ICO   
16[:func]	   " " (Desktop),
	   	"-"  , "+"    
:  ENVI @@DeskTopFresh=1 

--------------------------------------------------------------[  ]-----
            
 .     ,    
       .
	ENVI @@TaskIcoMenu=1  //   
	ENVI @@TaskIcoMenu=0  //   
	ENVI @@TaskIcoMenu=2  //    (<>)

--------------------------------------[   ]-----
ENVI ?[SingleName],[AllName]=DROPFILE, wParam
	  - WM_DROPFILES
	wParam		   
	SingleName	  
	AllName		    
:		ENVI @LABE1.MSG=0x0233::wp, lp, CALL OnDrop1 %wp% %lp% 
		_SUB OnDrop1 
		 TEAM ENVI ?&&F1, &&FS=DROPFILE, %1| ENVI @LABE1=%&FS% 
		_END 
----------------------------------------------------------[  ]-----

ENVI @@Cur=X;Y //   ( ";"  ", ")
ENVI @WinName.Cur=X;Y  //  :
ENVI @@Cur=?[@HWND;][[Nm]X][;[Nm]Y][;POINTNm][;KeyNm][;RcNm][;InNm]
	//  
ENVI @WinName.Cur=?[VarNameX][;VarNameY][;VarNameCustCoordX][;VarNameCustCoordY]
	//  :
ENVI @@Cur=*Num //    0 , 1 
ENVI @WinName=?[WinIDVarName][;CtrlIDVarName]  // WinID
ENVI @CtrlName.ID=?[WinIDVarName][;CtrlIDVarName]  // CtrlID
:    	ENVI @ITEM4.MSG=%&::WM_MOUSEHOVER%: CALL DisplayGfile
		_SUB DisplayGfile
		ENVI @@Cur=?&&CurX;&&CurY
		TIPS. ,%FILES01%,5000,0,@AL%&CurX%T%&CurY%
		_END
--------------------------------------------------------------------------------
ENVI @CtrlName.MouseCapture=1/0  // MouseCaptureA: 1 , 0 
ENVI @WinName.MouseCapture=1/0   // MouseCaptureA: 1 , 0 
ENVI @WinName.MouseCapture=#1/#0 // MouseCaptureB: #1 , #0 
--------------------------------------------------------------------------------
ENVI @@EATEKEYS=CombKey1 CombKey2 ... 
	// ,  ,  HOTK,   
ENVI @@EATEKEYS=VK_LWIN VK_RWIN ALT+VK_TAB Alt+VK_ESCAPE Ctrl+VK_ESCAPE 
--------------------------------------------------------------------------------
ENVI^ Arg=*[BreakCharSet]BrokenStrings  //  

  "="  "*",      
    ,   -   .
,    ENVI^ Arg=    
   LAMDA.      ,    .
    BreakCharSet:  null,   :sp:;  ,
:sp:   ; ]   \]  \  \\; 
    .
  []  BreakCharSet   .   "="  "*", 
      ,    
      BreakCharSet (  ).
  :	ENVI^ arg=*[:sp:,]   _SUB ABC,XXXX
		MESS [%1] [%2] [%3] [%4] [%5]@DEBUG
		FIND $[ %1=_SUB & '%3'<>'' ], MESS [%3]

---------------------------------------------------------[  ]-----
ENVI ?[StartVarName][, LenVarName][, CluSizeVarName][, DiskBlkListVarName][, BlkNumVarName][, PartStartVarName][, DEVRetVarName]=FPOS, FileName 
	//  
  DiskBlkList     ,     
     .  -1   
  .
    65535 ; 65536   ,   , 
  , "-"  "BlkNum"    
0.  -38:   .
  1:	ENVI ?,,,&&POS,&&BLKS=FPOS,Z:\efi.img
		MESS. %&BLKS%  %&POS%
  //1 16384 1073741824 =  , . 16384,  1073741824
  2:	ENVI ?&POS,&LEN,&CS,&BLOCKS=FPOS,C:\upx394w.zip
		MESS [%&POS%] [%&LEN%] [%&CS%] [%&BLOCKS%]
  // [4825088] [79200256] [4096] [4825088 79200256]
--------------------------------------------------------------------------------
ENVI ?[Name][, TopName]=PWIN, [x], [y][, Flag]  //  
	Flag:	1= 		2= 
		4= 		0:
		-=3 (   )
--------------------------------------------------------------------------------
ENVI @@RMENU=VarName;FileName
	//     , .
	     .
:  ENVI @@RMENU=&R;%AnyLNK%
--------------------------------------------------------------------------------
ENVI^ Alias [*opt] CMDAlias=[CMDFrontHalf] 
	//      .
	*opt	.
:	ENVI^ Alias *opt SevenZip=CALL $**m **ret:* *#5,SevenZip,
ENVI^ ALIAS *opt Rectangle=CALL $**qd#  **ret:* Gdi32.dll,Rectangle,*dummy,
ENVI^ ALIAS *opt Ellipse=CALL $**qd#  **ret:* Gdi32.dll,Ellipse,*dummy,
ENVI^ ALIAS *opt Polyline=CALL $**qd#  **ret:* Gdi32.dll,Polyline,*dummy,
--------------------------------------------------------------------------------
ENVI $# Broadcast:ENVI^ EnviBroad=0/1/-
	// Broadcast: 1 , 0 , -  
--------------------------------------------------------------------------------
ENVI^ __arg=0/1	 // &&__arg param list (  lite-):
	1 , 0  (-) 
--------------------------------------------------------------------------------
ENVI^ memvar=[?RetVarName, ][:ByteNum:]AddrOffset, Val 
	//    ("?")   PECMD.
:	ENVI^ memvar=0,0  //     FE FF FF
		ENVI^ memvar=0,1 //  0xFE FF FF (-)
		ENVI^ memvar=:2:16,950  // 950 Chinese
--------------------------------------------------------------------------------
ENVI^ LoadEnvi [[HKCU\]SubPath|-] [VarName]
	// [Envivar]  , !!
:	TEAM ENVI^ EnviMode=1|ENVI ABC=123|SET  &ABC.0=%ABC%
	ENVI MyPth=HKLM\SOFTWARE\PE_DAT\%&__PID%
	EXEC =!"%MyNAME%" REGI $%MyPth%-%%&__PID%%\Environment\ABC=5678
	ENVI^ LoadEnvi %MyPth%-%&__LastPID%\Environment ABC //LoadEnvi
	MESS. Old ABC[%&ABC.0%] New ABC[%ABC%] [PECMD%&PECMDVER% %PECMDBUILD%]
//Old ABC[123] New ABC[5678] [PECMD201201880200 X86 U Jul 9 2014 08:46:31]
--------------------------------------------------------------------------------
ENVI^ zero=0/1 //  (   ):
	0  (-), 1 
--------------------------------------------------------------------------------
ENVI^ DisX64=1, OldCfg   //  X64 FS ***
ENVI^ DisX64=0, %OldCfg% //  X64 FS ***
	//***      ,  OldCfg  !
--------------------------------------------------------------------------------
ENVI ?[$.]RetName[, AttrNm]=FVAR, VName[;NameSP_GUID] //  Envi_var
	non_pe_var  $:  HEX .:wstring 
ENVI ?[-v] [Attr]=FVAR+[$#%], VName[;NameSP_GUID], Val  // Envi_var
	 ,  . -v:Val .
	#  , $ HEX-, %  
ENVI ?$&v=FVAR,BootOrder
--------------------------------------------------------------------------------
  ,  "EXEC",     
PECMD.  ,  ,   "ENVI"  "$" 
 , -     "EXEC".
WinName  CtrlName    "&".

ENVI^ EXPORTLOCAL=1  //   PE  PECMD.
ENVI^ EXPORTLOCAL=0  //   PE (-)
ENVI^ EXPORTLOCAL=&1  //   PE  ;
	     ,    THREAD
ENVI^ EXPORTLOCAL=&0  //   PE (-);
	     ,    THREAD
ENVI^ FORCELOCAL=1  //    PE-; 
	     ( )
ENVI^ FORCELOCAL=0  // FORCELOCAL=1, . ; (-)
ENVI^ EnviMode=0  //,   4.0, -;   
	;   
	   
ENVI^ EnviMode=1  // ;    
	;     .

        "$",    
  .   .   
  .      
 ,  (  ).
TEAM ENVI ABC = 123 |  //ABC   " 123 "  "123" ( ).

"~" ,     , ..,  
         
   .
"~."     ,    
"~*"      "~",   
 ,   -    "~."
"~~" ,     
"~", "~~", "~."  "~*"   
    .  ,     
.
ENVI A=123 | ENVI B=123 //  A=123 ,  B=123 

------------------------------------------------------------[ PE]-----
   PE:      SET-def A=, SET &A= 
ENVI &&A= (   ,   )  
;        ;
    ,    ,  
   .
   PE   ,    
     .    PE 
,    .
     %&VarName%,    . 
  ,  PE    .
 SET    PE.

    PE:       
,         .
    PE      
 .
         (*function)  ;
           , 
    .
  ,  "EXEC",     
PE  PECMD.
  WinName  CtrlName   &.

-----------------------------------[     ]-----
 :      
  , , %ABC%   %%.

  :   ,  ,   
   .      ,
 ABC,   %%.

    ,      
,   0,      .

******************************************************************[]*****
ENVI TEMP=%SystemDrive%\TEMP
ENVI &&ABC=123
ENVI &ABC
ENVI$ NL=0d 0a  //   HEX-
ENVI% RAW=65  //   DEC-
ENVI$ DATA=*1M 30 0d 0a
ENVI= DATA=*1K 0x00
ENVI$# &DATA=*1K 30
ENVI-swap &XEnvi=&NEnvi //    
SET-def ~ClosehandleX~h=0.As destructing, ClosehandleX &h %&h%
SET-raw	TEnvi=%%Temp%% //   %Temp% (   %Temp%)
SET~-x1-[1:2] B%%d=A%%d 
SET-[1:1000] &A%%d=%%d
SET~-x1-[1:1000:11]  B%%d=A%%d
ENVI ?&A=PEBIT,%WinDir%\system32
TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1 |ENVI-env &&SystemDrive=%SystemDrive%
TEAM ENVI @@DeskTopFresh=0x18;+"%Desktop%\PECMD-ISPE"|MESS %&error% 
ENVI @@DeskTopFresh=16;-"%Desktop%\PECMD-ISPE\"
ENVI @@DeskTopFresh=clearicon;1
ENVI-ret-copy %~1=vMsg //    %vMsg%  %~1
ENVI-addr &AdressName;&LengthName=&HelloV1
ENVI-def TEMPDIR0=%TEMP% // PE   