aardio 文档
aardio 范例:反编译 Cmdlet
//反编译 Cmdlet
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="PowerShell Cmdlet 反编译工具";right=491;bottom=311;bgcolor=16777215;max=false)
winform.add(
btnDecompile={cls="plus";text="反编译";left=366;top=11;right=479;bottom=41;align="left";bgcolor=-5197169;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=20}};iconText='\uF121';notify=1;textPadding={left=39};z=2};
cmdlets={cls="combobox";left=19;top=14;right=350;bottom=40;edge=1;items={};mode="dropdown";z=4};
edit={cls="edit";left=15;top=72;right=480;bottom=300;autohscroll=false;edge=1;multiline=1;vscroll=1;z=1};
plusTip={cls="plus";left=18;top=47;right=475;bottom=65;align="right";font=LOGFONT(name='FontAwesome');z=3}
)
/*}}*/
winform.onOk = function(){
if(win.getFocus()!=winform.cmdlets.editBox.hwnd){
winform.cmdlets.setFocus();
return ;
}
winform.btnDecompile.oncommand();
}
winform.cmdlets.onEditChange = function(){
if(winform.cmdlets.data){
var text = winform.cmdlets.text;
var items = table.filter( winform.cmdlets.data, lambda(v) string.startWith(v,text,true) );
if(!#items){
items = table.filter( winform.cmdlets.data, lambda(v) string.find(v,"@@"+text) );
}
winform.cmdlets.autoComplete(items,1)
}
}
winform.btnDecompile.oncommand = function(id,event){
if(!#winform.cmdlets.text){
return winform.cmdlets.editBox.showErrorTip("请输入 PowerShell 命名名称");
}
winform.btnDecompile.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250';text=''};
var result = thread.invokeAndWait(
function(winform){
import process.popen;
var prcs = process.popen.ps(`(Get-Command `+winform.cmdlets.text+`).Dll`);
if(!prcs) return;
var result = prcs.read(-1);
if(#result){
result = string.trim(result);
winform.edit.text = result;
if(..string.endWith(result,".dll",true) && io.exist(result)){
import dotNet.ilSpy;
dotNet.ilSpy(result);
}
return result;
}
},winform
)
if(!#result){
winform.cmdlets.editBox.showErrorTip("反编译 PowerShell 命令 失败!");
}
winform.btnDecompile.disabledText = null;
}
winform.plusTip.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250';text='正在获取所有 Cmdlet 并准备智能提示数据'}
thread.invoke(
function(winform){
import process.popen;
var prcs = process.popen.ps(`Get-Command -CommandType Cmdlet`);
if(!prcs) return;
var result = prcs.read(-1);
if(!result) {
winform.plusTip.disabledText = null;
winform.edit.top = winform.edit.top - winform.plusTip.height;
winform.plusTip.close();
return;
}
var i = 0
var cmdlets = {}
for( item in string.lines(result,,"\s+") ){
if(i<3){
i++;
continue;
}
if(#item<3 || item[1][1]=='-'#) continue;
table.push(cmdlets,item[2]);
}
winform.cmdlets.items = cmdlets;
winform.cmdlets.data = cmdlets;
winform.plusTip.disabledText = null;
winform.edit.top = winform.edit.top - winform.plusTip.height;
winform.plusTip.close();
},winform
)
winform.btnDecompile.skin({
background={
default=0x668FB2B0;
disabled=0xFFCCCCCC;
hover=0xFF928BB3
};
color={
default=0xFF000000;
disabled=0xFF6D6D6D
}
})
winform.cmdlets.editBox.setCueBannerText("请输入 PowerShell 命令");
winform.cmdlets.editBox.disableInputMethod();
winform.show();
win.loopMessage();
Markdown 格式