理念
嘿。我是C#.NET开发人员的初学者(作为第二年的初学者)。我已经厌倦了编写各种计算器等,所以我问自己:“ Windows中缺少什么?” 我得到的答案让我有了主意:“一切。” 因此,有一个Binder项目,该项目使我可以学习很多有关C#、. NET和WPF的知识,并且为我提供了一些我非常喜欢的优秀软件,因此我决定向所有人展示。关于程序本身
活页夹旨在用于绑定。可以为任何组合键配置这些绑定:按钮+ 2个修饰符(CTRL,Shift,ALt,Win)以及它们上的粘贴脚本。该脚本以内部语言编写,我尝试使其与C#尽可能相似。其原理与AutoHotKey中的相同。该程序带有一个DLL,在其中我慢慢添加了各种功能(现在有49个)。在我看来,Binder语言已经可以被认为是一种解释型编程语言,尽管能力不强,因为已经有一个if-else构造,while和repeat循环,函数(也是异步的),break和return语句,int,double,bool和字符串数据类型。在该程序中,绑定程序可在整个PC上全局运行,并且从AHK进行的键模拟可以在几乎所有应用程序中模拟键击。我想用Binder解决的第一个任务是显示/隐藏桌面图标。因此,我添加的第一个脚本是ShowHideDesktopIcons(布尔显示)。但是这里出现一个问题,如何用一个按钮同时隐藏和显示?我通过将“ Bind switch”参数添加到活页夹中来决定它,它允许您一次将2个脚本挂在1个绑定上,然后依次执行。现在,已经可以在Binder上创建一个自动单击器,或者例如一个绑定,Ctrl + Shift + C,它将选择的文本添加到剪贴板,而不是替换它,或者使用绑定关闭/重新启动PC。最有用的方法之一是“ Super Alt + F4”绑定,它接收活动的窗口进程并杀死它。该程序支持变量:您可以使用SetVar()保存任何值,并获取它的GetVar()。今天,有了执行脚本的属性,第一个是Block,它阻止绑定的击键,直到其主线程完成。在不久的将来,计划添加名称空间以将变量从一个脚本传输到另一个脚本。我认为,“记录”功能是一个有用的附加功能,它记录了键盘和鼠标的所有动作,并立即将它们转换为Binder的脚本。在帮助窗口中,您可以找到所有可用的功能,很快就会出现脚本的属性。可以将所有绑定保存到文件中,以免丢失。在设置中,您可以启用Windows启动程序,配置要打开的默认绑定文件。
我想指出一个方便的事情:当使用嵌套结构时(例如,如果在while内),单击“保存”按钮后,脚本的格式会很漂亮。句法
在Binder中,所有程序员都熟悉的语法类似于C#。例如,对MsgBox函数(如其他任何函数)的调用如下所示:MsgBox(" ", " ");
执行此行后,结果将如下所示:
MsgBox()接受参数,您可以在帮助窗口中看到每个函数的参数。为了帮助您,所有函数均按返回值的类型进行排序:
用C ++ / C#编写的任何人都将立即了解其工作原理,但第一种类型除外:“非返回值”组中的函数将返回传递给它们的参数。例如:MsgBox(MsgBox("Hello"));
2次将显示一条带有文本“ Hello”的消息。从这一行,可以了解一个更重要的细节:某些功能可以由其他功能转换为参数。除了内置功能之外,该程序还具有多种设计。应该注意的是,我的整体结构属于1个团队,因此在每个团队的末尾都需要放置;。稍后再删除。If-else构造。
它的工作方式与其他任何语言一样:if(<1>)
{
<1>
}
else if(<2>)
{
<2>
}
....
else
{<, false>};
通常,您可以根据需要编写其他内容,也可以编写/不编写其他内容。最主要的是,括号中的<condition>应该为Boolean类型。例如,您可以在此处写入true,并且条件将始终得到满足。重复构造
repeat是程序中最简单的循环,括号中必须有一个Int值,它只是将操作重复指定的次数,例如:repeat(SumInt(2,3))
{
MsgBox("");
};
5次显示消息“ Hello”。它有2处修改:1)异步重复()。将为其执行分配一个单独的线程,即 刚开始之后,将立即执行之后的功能。2)allasync repeat()将立即开始在其内部执行指定次数的代码,例如:allasync repeat(5)
{
MsgBox("Hello");
};
同时它将显示5条消息:
虽然构造
虽然-字面意思是英语。-条件为真时。只要括号中的条件为真,就在自身内部执行功能。此条件必须为布尔类型。您可以使用break语句强制中止循环执行;例:SetVar("i", 0);
while(true)
{
SetVar("i", SumInt(GetVar("i"), 1));
MsgBox(GetVar("i"));
if(MoreThan(GetVar("i"), 10))
{
break;
};
};
MsgBox("");
打印数字从1到11的消息,然后退出。While还对async while进行了修改,它仅在单独的线程中执行它,从而使您可以继续执行主代码。功能
在Binder中,您可以声明和使用函数并将参数传递给它们func f1(text)
{
MsgBox(ReplaceString(text, "\", " habr "));
};
f1(GetDesktopPath());
我的输出:
函数也可以返回值,为此,您需要使用return语句:func f1(text)
{
return MsgBox(ReplaceString(text, "\", " habr "));
};
MsgBox(f1(GetDesktopPath()));
现在,结果相同,仅显示该消息2次。关于小组
因此,您可以在Binder的基础上创建任何东西,只需要库中的函数,我可以非常简单地添加它,为此,我只需要思路。这是创建VKontakte组vk.com/public192980751的原因之一。活页夹是完全免费的,对于有关该程序的任何问题,我都愿意提供帮助。请通过简单地建议要添加的内容,测试项目或订阅小组来支持我。PS该项目出现在GitHub github.com/Electrominch/Binder