Pergunta

Em um aplicativo C # WinForms (no .NET 3.5, provavelmente 4.0 em breve), como você permitiria que o usuário definisse suas próprias macros?Por exemplo, um usuário pode querer que o pressionamento de tecla CTRL+K signifique clicar em um determinado item no menu e inserir algum texto na caixa de diálogo aberta pelo menu, antes de pressionar "Ok" para fechar a caixa de diálogo.

Idealmente, nosso software poderia fornecer uma funcionalidade de gravação de macro, que permitiria ao usuário apenas iniciar a gravação, executar as tarefas desejadas e interromper a gravação para ter uma macro disponível.Este é um recurso com o qual eles estão acostumados na versão antiga do software, que foi escrita em FoxPro, uma ferramenta que possui esses recursos integrados.

A melhor opção para nós seria claramente adquirir e utilizar algum tipo de biblioteca de terceiros testada e comprovada, mas ideias para lançar nossa própria versão também são apreciadas.

Nenhuma solução correta

Outras dicas

Se eu estivesse trabalhando em algo assim, talvez integrasse um EventHandler de propósito geral para registrar eventos que você deseja ser gravável (talvez como um manipulador individual adicionado aos botões disponíveis ou criando uma classe RecordEventHandler para estender o EventHandler e depois subclassificar todos Seu manuseio de eventos disso-essas são apenas idéias de topo de cabeça, por isso não procurei o que seria mais viável) e apenas use o botão "Record Macro" como um switch para isso. É provável que haja apenas alguns tipos diferentes de evento que precisam ser gravados - cliques de botão, entrada do teclado em qualquer campo de texto, atalhos de teclado e entrada do mouse em qualquer campos de entrada de mouse, por isso não é uma tarefa enormemente tributária, embora, é claro, funcionando Fore como armazenar e vincular macros e como facilitar a importação e a exportação, se você estiver inclinado a fazê -lo, é demorado, mas não é tecnicamente desafiador. Eu não conheço nenhuma biblioteca para esse fim (embora eu espere que alguns existam) e pensando nisso, não tenho certeza de como seria fácil integrar algo assim, porque a maioria das necessidades da maioria das pessoas em termos de macros provavelmente será diferente.

Se você precisava ser capaz de registrar eventos em torno de seu aplicativo, poderá encontrar o Managedwinapi para ser útil.

Tenho boa experiência com "padrão de design de comando" para funcionalidade de gravação de macro.Cada comando dispara algum evento em todo o aplicativo (estático, por exemplo) com informações sobre parâmetros, etc.O gravador escuta este evento e persiste a sequência de chamada do comando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top