none
Executar comando dentro de uma string RRS feed

  • Pergunta

  • Pessoal, tem como executar um linha de comando que esteja dentro de uma string como por exemplo:

    string cm = "Application.Exit()"

    ExecutaLinhaComando(cm);

    A ideia é q eu tenho uma tabela q monta o menu do sistema e dentro dela tenho uma coluna c/ as funções q cada opção do menu tem q fazer.

    A maioria deve chamar um FORM, mas podem haver casos das opções dos menus serem FUNÇÕES ou COMANDOS como o exemplo acima.


    Atenciosamente, Frederico Oliva (foliva@dc-info.com)

    segunda-feira, 25 de novembro de 2013 17:30

Respostas

  • A forma ideal é fazer tradicionalmente, mas,!

    Para Form seria assim:

    Type _type = Type.GetType("WindowsFormsApplication2.Form8");
    Form _form = (Form)Activator.CreateInstance(_type);
    _form1.ShowDialog();

    Ali aonde tá WindowsFormsApplication2.Form8 seria o namespace e o nome do Form igual tá no código abaixo

    namespace WindowsFormsApplication2
    {
        public partial class Form8 : Form
        {
            Form9 frm9;
            public Form8()
            {
                InitializeComponent();
            }


    Fulvio Cezar Canducci Dias

    terça-feira, 26 de novembro de 2013 01:54

Todas as Respostas

  • Frederico,

    você pode utilizar Reflection para fazer isso, dá uma olhada no link abaixo.


    Chamar uma função a partir de uma string

    http://cbsa.com.br/post/chamar-uma-fun%C3%A7%C3%A3o-a-partir-de-uma-string-%28callbyname-em-c%23%29.aspx

    segunda-feira, 25 de novembro de 2013 17:40
  • Cesar, desculpe a insistencia. Eu link o exemplo do link da sua resposta, mas eu sinceramente nao entendi como aplicar no meu caso.

    No meu caso por exemplo eu gostaria de executar um comando, como o APPLICATION.EXIT()

    Como eu poderia fazer algo assim:

    string cm = "Application.Exit()"

    ExecutaLinhaComando(cm);

    Por favor, poderia me ajudar executar o codigo da funcao EXECUTALINHACOMANDO?

    Desde já obrigado e desculpe o incomodo.


    Atenciosamente, Frederico Oliva (foliva@dc-info.com)

    segunda-feira, 25 de novembro de 2013 17:53
  • Frederico se tratando de um método que retorn um tipo string você pode sim utilizar desta maneira:

    string teste = metodoRetornoString(); public string metodoRetornoString() { // Aqui vai seu código, digamos que você tenha uma string nesse trecho. Application.Exit()

    string exit = "fechado"; return exit; }


    Com isso a sua string teste, irá receber o resultado retornado pelo método metodoRetornoString. 

    Mas creio que esse application.exit() não retorna: http://msdn.microsoft.com/pt-br/library/system.windows.forms.application.exit(v=vs.110).aspx

    http://msdn.microsoft.com/en-us/library/ms157894(v=vs.110).aspx

    Espero que ajude.

    Se ajudou marque. 

    Abraço.



    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    segunda-feira, 25 de novembro de 2013 18:37
  • Bom, 

    Se eu fosse você faria um enum e um metodo em uma classe que conferia o valor desse Enum!

    Por texto seria caca ... (desculpe a expressão)!

    Sem mais!



    Fulvio Cezar Canducci Dias

    segunda-feira, 25 de novembro de 2013 18:49
  • Pesquei sei o ENUM e entendi seu funcionamento.

    O problema de usar o ENUM é q eu ficaria na dependencia de fixar as chamadas dos FORMS no fonte e não gostaria disto.

    Eu tenho uma tabela MENUS no meu banco de dados onde consta o texto e hierarquia q deve ser exibido no MENU da tela principal (objeto TREEVIEW) e uma coluna como o nome original do FORM, como por exemplo SOBRE_FORMS.

    Ao clicar em uma das opcoes do menu o TREEVIEW eu capturo a propriedade NAME do SELECTEDNODE e passa para uma função a acessa a tabela MENU, localiza a linha e deveria carregar o FORM q consta na coluna FORM_ORIGINAL.

    Eu usava uso bastante no VFP uma funcao chama EXECSCRIPT q faz exatamente em tempo de execucao ler e executar linhas de comandos passadas.

    Senao existisse uma funcao pronta no C# gostaria de criar minha propria funcao que faca isto.

    Ou senao tambem estou aberto para entender outros conceitos que eu poderia aplicar para solucionar minhas necessidades.

    Desde ja obrigado.


    Atenciosamente, Frederico Oliva (foliva@dc-info.com)

    segunda-feira, 25 de novembro de 2013 19:45
  • Se pode usar reflection mas, se vai degradar seu sistema!

    Fica lento!


    Fulvio Cezar Canducci Dias

    segunda-feira, 25 de novembro de 2013 20:31
  • por favor, poderia me dar um exemplo de como fazer?

    quando diz lento é o sistema todo ou só quando realizar a chamada da tela?

    desde já obrigado.


    Atenciosamente, Frederico Oliva (foliva@dc-info.com)

    terça-feira, 26 de novembro de 2013 01:11
  • Fica dificil !!!

    Porque seu software ta de um jeito que eu não sei o que tem!!!

    Desculpa é muita coisa para pouca coisa!!!


    Fulvio Cezar Canducci Dias

    terça-feira, 26 de novembro de 2013 01:24
  • Sem problemas, eu entendo.

    Desculpe a insistencia e incomodo, mas teria alguma outra sugestao de como fazer?

    Como acha q deveria ser a forma ideal?

    Desde já obrigado.


    Atenciosamente, Frederico Oliva (foliva@dc-info.com)

    terça-feira, 26 de novembro de 2013 01:35
  • A forma ideal é fazer tradicionalmente, mas,!

    Para Form seria assim:

    Type _type = Type.GetType("WindowsFormsApplication2.Form8");
    Form _form = (Form)Activator.CreateInstance(_type);
    _form1.ShowDialog();

    Ali aonde tá WindowsFormsApplication2.Form8 seria o namespace e o nome do Form igual tá no código abaixo

    namespace WindowsFormsApplication2
    {
        public partial class Form8 : Form
        {
            Form9 frm9;
            public Form8()
            {
                InitializeComponent();
            }


    Fulvio Cezar Canducci Dias

    terça-feira, 26 de novembro de 2013 01:54
  • Fúlvio era exatamente o q eu precisava. Mt obrigado mesmo. Veja como ficou o código e as tabelas q estão fornecendos os dados variáveis.

    Se tiver alguns, seus comentários e sugestões são sempre mt bem vindos.



    Atenciosamente, Frederico Oliva (foliva@dc-info.com)

    terça-feira, 26 de novembro de 2013 10:01
  • Feche o post Frederico Oliva !

    Fulvio Cezar Canducci Dias

    terça-feira, 26 de novembro de 2013 11:35
  • como?   :-$

    Frederico Oliva

    terça-feira, 26 de novembro de 2013 11:55
  • como?   :-$

    Frederico Oliva

    Isso aqui é um post então feche e credite para quem teve a melhor resposta!

    Fulvio Cezar Canducci Dias

    terça-feira, 26 de novembro de 2013 12:01
  • bom dia Fúlvio, desculpe te incomodar, mas gostaria de aproveitar da sua vasta experiência e pedir sua ajuda novamente.

    Fazem 3 dias que estou parado no problema do link abaixo e hj resolvi abrir o post, será q qdo tivesse um tempinho, poderia ler e me enviar seus comentários?

    Desde já obrigado.

    http://social.msdn.microsoft.com/Forums/pt-BR/595ac1a9-8d2b-4723-bc7b-f7cfd84dbd3d/classe-limpa-campo-em-uma-classe-hierrquica?forum=vscsharppt


    Frederico Oliva

    sexta-feira, 29 de novembro de 2013 10:01