Idéia
Ei. Sou desenvolvedor iniciante em C # .NET (como iniciante no segundo ano). Eu estava cansado de escrever todo tipo de calculadora, etc., então me perguntei: "O que estou perdendo no Windows?" E a resposta que eu vim me deu a idéia: "Tudo". Havia o Binder, um projeto que me permitiu aprender muito sobre C #, .NET e WPF, e me deu um bom software de que tanto gostava que decidi mostrá-lo a todos.Sobre o próprio programa
O encadernador destina-se, inesperadamente, a vinculações. Essas ligações podem ser configuradas para qualquer combinação de teclas: botão + 2 modificadores (CTRL, Shift, ALt, Win), bem como scripts de stick neles. O script é escrito em um idioma interno, que tentei tornar o mais semelhante possível ao C #.O princípio é o mesmo do AutoHotKey. O programa vem com uma DLL, na qual lentamente adiciono várias funções (agora são 49). Na minha opinião, a linguagem Binder já pode ser considerada uma linguagem de programação interpretada, embora pouco capaz, porque já existe uma construção if-else, loops while e repeat, funções (também assíncronas), instruções break e return, int, double, bool, tipos de dados string.No programa, os fichários funcionam globalmente em todo o PC, e a simulação de teclas tirada do AHK pode simular pressionamentos de tecla em quase todas as aplicações.A primeira tarefa que eu queria resolver com o Binder era mostrar / ocultar ícones da área de trabalho. E assim, o primeiro script que adicionei é ShowHideDesktopIcons (bool show). Mas aqui surge a pergunta: como esconder e mostrar tanto com um botão? Eu decidi adicionando o parâmetro "Bind switch" aos binders, o que permite pendurar 2 scripts em 1 bind de uma só vez, que são executados por sua vez. Já no Binder, você pode fazer uma filtragem automática ou, por exemplo, uma ligação, Ctrl + Shift + C, que adicionará o texto selecionado à área de transferência e não a substituirá, ou uma ligação para desligar / reiniciar o PC. Uma das mais úteis é a ligação "Super Alt + F4", que recebe o processo da janela ativa e o mata. O programa tem suporte para variáveis: você pode salvar qualquer valor usando SetVar () e obtê-lo GetVar (). Hoje, com atributos criados para executar scripts,e o primeiro foi Block, que bloqueia o pressionamento de tecla da ligação até que seu thread principal seja concluído. Em um futuro próximo, está planejado adicionar espaços para nome para transferir variáveis de um script para outro.Uma adição útil, eu acho, é a função Record, que registra todas as ações do teclado e do mouse, transformando-as imediatamente em um script para o Binder.Na janela de ajuda, você pode encontrar todas as funções disponíveis, e em breve aparecerão atributos para scripts.Todas as ligações podem ser salvas em um arquivo para não perder.Nas configurações, você pode ativar o lançamento do programa com o Windows, configure o arquivo de ligação padrão a ser aberto.
Quero observar uma coisa conveniente: ao usar construções aninhadas (por exemplo, se houver algum tempo), depois de clicar no botão "Salvar", o script será formatado de maneira bonita.Sintaxe
No Binder, a sintaxe familiar para todos os programadores foi feita à semelhança do C #.Por exemplo, uma chamada para a função MsgBox (como qualquer outra) fica assim:MsgBox(" ", " ");
Quando essa linha é executada, o resultado será o seguinte:
MsgBox () aceita os parâmetros, você pode vê-los para cada função na janela de ajuda.Para ajudar, todas as funções são classificadas pelo tipo de valor de retorno:
qualquer pessoa que tenha escrito em C ++ / C # entenderá imediatamente como isso funciona, exceto o primeiro tipo: funções do grupo "Valores não retornáveis" retornam os parâmetros passados a eles.Por exemplo:MsgBox(MsgBox("Hello"));
2 vezes exibirá uma mensagem com o texto "Olá".A partir dessa linha, mais um detalhe importante pode ser entendido: algumas funções podem ser transferidas para parâmetros por outras.Além das funções integradas, o programa possui vários designs. Deve-se notar que eu tenho toda uma estrutura considerada como 1 equipe; portanto, no final de cada uma delas, você precisa colocar ;. Vou removê-lo mais tarde.Construção If-else.
Funciona como em qualquer outro idioma:if(<1>)
{
<1>
}
else if(<2>)
{
<2>
}
....
else
{<, false>};
Você pode escrever o máximo que quiser, escrever / não escrever mais, em geral, como quiser. O principal é que entre parênteses <condição> deve ser do tipo Booleano. Por exemplo, você pode escrever true lá, e a condição sempre será satisfeita.Repetir construção
repeat é o loop mais simples do programa, deve haver um valor Int entre parênteses e simplesmente repete a ação o número especificado de vezes, por exemplo:repeat(SumInt(2,3))
{
MsgBox("");
};
5 vezes exibe a mensagem "Olá".Possui 2 modificações:1) async repeat (). Um thread separado será alocado para sua execução, ou seja, imediatamente após seu início, as funções após a sua execução.2) allasync repeat () começará imediatamente a executar o código dentro de si o número especificado de vezes, por exemplo:allasync repeat(5)
{
MsgBox("Hello");
};
Ao mesmo tempo, ele exibirá 5 mensagens:
Enquanto construção
Enquanto - literalmente do inglês. - enquanto a condição for verdadeira. Executa funções dentro de si, desde que a condição seja verdadeira entre parênteses. Essa condição deve ser do tipo booleano.Você pode abortar forçosamente a execução do loop usando a instrução break; Exemplo:SetVar("i", 0);
while(true)
{
SetVar("i", SumInt(GetVar("i"), 1));
MsgBox(GetVar("i"));
if(MoreThan(GetVar("i"), 10))
{
break;
};
};
MsgBox("");
Imprima mensagens com números de 1 a 11 e saia.O While também possui uma modificação do async while, que simplesmente o executa em um encadeamento separado, permitindo que você continue executando o código principal.Funções
No Binder, você pode declarar e usar suas funções e passar parâmetros para elasfunc f1(text)
{
MsgBox(ReplaceString(text, "\", " habr "));
};
f1(GetDesktopPath());
Minha saída: As
funções também podem retornar valores, para isso você precisa usar a instrução de retorno:func f1(text)
{
return MsgBox(ReplaceString(text, "\", " habr "));
};
MsgBox(f1(GetDesktopPath()));
Agora, o mesmo resultado, apenas a mensagem é exibida 2 vezes.Sobre o grupo
Assim, você pode criar qualquer coisa com base no Binder, você só precisa de funções na biblioteca, o que eu posso acrescentar de maneira muito simples, para isso, preciso apenas de idéias. Essa é uma das razões para criar o grupo VKontakte vk.com/public192980751 . O Binder é totalmente gratuito e estou pronto para ajudar com qualquer dúvida sobre o programa. Por favor, apoie-me simplesmente aconselhando o que adicionar, testando o projeto ou simplesmente assinando o grupo.PS O projeto apareceu no GitHub github.com/Electrominch/Binder