Jump to content

Executar programa


estimado
 Share

Recommended Posts

Boas

Estou com um pequeno problema que não estou a conseguir resolver, estive a pesquisar sobre o assunto mas não encontro nada que me consiga ajudar!

Bem, queria executar um programa mas que por exemplo estive-se dentro da "aplicação"

Ou seja os codigos existentes são assim

System.Diagnostics.Process.Start("c:\Folder\arquivo.exe");

Sendo que este código vai procurar o arquivo fora da aplicação, e eu queria por exemplo que ele executa-se mas dentro, ou seja ao clicar no botão correspondente ele iria abrir o executavel

Obrigado

Visual Studio 2010 C#

Link to comment
Share on other sites

Tens que ler os bytes do executável para os resources, e depois alterar para embedded https://msdn.microsoft.com/library/e2c9s1d7%28v=vs.100%29.aspx

Depois para executares tens que criar um ficheiro com os bytes que guardas-te e executares, assim:

string path = Path.Combine(Path.GetTempPath(), "tempfile.exe"); 
File.WriteAllBytes(path, myProjectName.Properties.Resources.myExecutable);
Process.Start(path);

Onde 'Properties.Resources.myExecutable' é o caminho dos bytes que guardas-te.

Link to comment
Share on other sites

Boas

Fiz de outra forma, mas que estou agora um uma duvida


Só que desta forma ele cria uma cópia para um ambiente de trabalho, o que eu não queria

Edited by estimado

Visual Studio 2010 C#

Link to comment
Share on other sites

Essa forma é igual á minha, claro que ele cria o ficheiro antes de o executar, é isso que estás a dizer para ele fazer, se não queres criar um ficheiro tu vais ter de criar uma RunPE, eu pesquisava mais sobre isso em vez de apenas copiares código.

Isto deve-te ajudar http://stackoverflow.com/a/9233591/2990244 mas visto precisares de ajuda com o código acima eu não te aconselhava copiares apenas, vais ter mais problemas do que consegues resolver, e não dá para fazer o que pretendes fazer ("executar dentro da tua aplicação") , pelo menos facilmente não.

Um aviso, eu não testei o código acima, mas se funcionar, podes ter a certeza que será detectado por AV's.

Link to comment
Share on other sites

seria de muito incomodo seos AV´s detectassem mas vou verificar

Vou ler um pouco sobre o assunto, muito obrigado 🙂

Pois, mas a única razão de fazeres isso é para malware, não há outra razão se teres problema de escrever o ficheiro para o disco e deixares o sistema executálo por ti.

Desculpa mas é verdade, tanto é que se perguntares isso nos fórums da msdn, o tópico será fechado.

Link to comment
Share on other sites

Eu não me importo, código é código, se eu puder ajudar ajudo, estou a falar porque a única razão que faz sentido é mesmo malware, daí provavelmente obteres detecções de AV's, o que, se a aplicação for distribuída, poderás ter problemas no futuro (problemas em relação á aplicação em si)

Link to comment
Share on other sites

Bom dia,

Podes optar por colocar o executável que pretendes correr junto do executável da tua aplicação (dentro da pasta Debug) e depois utilizas o seguinte código:

System.Diagnostics.Process.Start(Application.StartupPath + @"\arquivo.exe");

É uma das formas possíveis, eu nas minhas aplicações tudo o que é documentos/executáveis a executar é feito desta forma. Desta forma, garantes que sabes sempre o diretório do ficheiro que pretendes executar. Eventualmente a fim de evitar a exceção "File Not Found" poderás fazer uma verificação se o ficheiro existe com o comando "File.Exits()".

Edited by mIn3ir0
Link to comment
Share on other sites

Bom dia,

Podes optar por colocar o executável que pretendes correr junto do executável da tua aplicação (dentro da pasta Debug) e depois utilizas o seguinte código:

System.Diagnostics.Process.Start(Application.StartupPath + @"\arquivo.exe");

É uma das formas possíveis, eu nas minhas aplicações tudo o que é documentos/executáveis a executar é feito desta forma. Desta forma, garantes que sabes sempre o diretório do ficheiro que pretendes executar. Eventualmente a fim de evitar a exceção "File Not Found" poderás fazer uma verificação se o ficheiro existe com o comando "File.Exits()".

dessa forma é preciso o .exe sempre na pasta, mesmo depois de estar compilado

Visual Studio 2010 C#

Link to comment
Share on other sites

Boas, podes optar por colocar o executável como ficheiro oculto. Podes também, se tiveres acesso a programação do executável, colocar uma condição no inicio do código se determinado processo estiver a ser executado (a tua aplicação) executa, caso contrário sai.

Há imensas formas de contornar um problema, não fiques bloqueado apenas numa só maneira... programação é isto mesmo!

Link to comment
Share on other sites

No Visual Studio,tem como você simplesmente pegar o executável dele,através da pasta do Projeto,caso quiser,eu posso colocar um exemplo,para você encontrar o executável do seu projeto.

"O que nós sabemos é uma gota; o que ignoramos é um oceano"

"Verba volant,scripta manent"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.