Executando um programa sem mostra-lo?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Executando um programa sem mostra-lo?

Mensagem por Markituh em Qua 28 Abr 2010, 17:56

Olá a todos. Estou a desenvolver uma aplicação no Game Maker. Gostaria de saber se tem um meio de abrir um arquivo externo sem que este seja mostrado na tela. Digamos assim... "Invisível"

Obrigado.
Editado por CyraxX: Topico resolvido.
Trancado.
Se o autor quiser reabrir o tópico envie MP para algum administrador ou moderador.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Cainã em Qua 28 Abr 2010, 18:00

Se você se refere a um arquivo em Batch (DOS) é bem simples, basta gerar um EXE invisível usando o Bat To Exe. Se for algum comando em DOS você pode simplesmente usar o execute_program. Já se for algum outro programa o unico jeito eu acho que seja o programa ja ser invisível.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Markituh em Qua 28 Abr 2010, 18:07

È que tipo. Quero executar códigos no Prompt de Comando através do GM sem que ele apareça na tela,entende? Porque toda vez que uso ele aparece.

Aproveitando o tópico... Tem como eu executar mais de um comando num mesmo argumento? Eu faço assim:
Código:
execute_shell('cmd.exe','cd '+string(global.dir))
execute_shell('cmd.exe','copy /b '+string(global.arquivo)+" "+string(global.arquivo_saida))
Ele abre 2 prompts de comando,só que,o segundo código,em vez de executar o copy,ele mostra a mesma coisa do primeiro(a função "cd").

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Cainã em Qua 28 Abr 2010, 18:31

Tenta usar a função execute_program:

Código:
execute_program('cd '+string(global.dir),0,false);

Ou cria um arquivo de batch que você edita com o Game Maker inserindo a sua string.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por PedroX em Qua 28 Abr 2010, 18:54

tenta isso:
Código:

linha1="cd "+string(global.dir)
linha2="copy /b "+string(global.arquivo)+" "+string(global.arquivo_saida)

file=file_text_open_write("nome.bat")//muda o nome e deixa o .bat
file_text_write_string(file,linha1)//nao muda daqui em diante
file_text_writeln(file)
file_text_write_string(file,linha2)
file_text_close(file)
execute_shell(file,0)

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Markituh em Qua 28 Abr 2010, 23:28

Pedro,seu código não deu muito certo. Ele mostra a pasta da aplicação e não faz mais nada depois disso. E além do mais,o bat estava assim quando fui olhar:
Código:
cd
copy /b C:\Documents and Settings\JOSE\Meus documentos\codshell.txt+ arquivo.ext
Cainã,seu código execute_program não sortiu nenhum efeito...

O que eu quero,é improvisar o uso do DOS para a junção de arquivos num simples programa. Eis um print do programa:


O "Open" abre um diálogo para seleção de arquivos. O "Start" mostra um campo de texto para escolher o arquivo de saída e então começar a junção.

Então para não dar um ar de "peba" ao programinha,não quero que o DOS apareça na cara do usuário.

Obrigado

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Convidad em Qui 29 Abr 2010, 01:12

Há uma dll lá no repositório gmtoolbox, se chama silent_dos, que injeta qualquer comando do shell, porém oculto:

http://www.gmtoolbox.com

Você também poderia usar o Delphi, e criar um pequeno exe (que se oculta) que chama outro processo oculto também.

Isso define que o Form principal ficará oculto (tem que ser posto antes do Application.CreateForm):
Código:
Application.ShowMainForm := False;

Essa função chama um programa sem mostrá-lo:
Código:
WinExec('c:\command.com /c COLOQUE_O_COMANDO', sw_Hide);

Mas isso seria mais uma "gambiarra" porque serão três processos abertos ao invés de dois (usando a dll).

Convidad
Convidado


Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Markituh em Qui 29 Abr 2010, 08:24

Não tenho o Delphi... Da última vez que usei ele aqui no pc apareceu vários erros sinistros... Depois que desinstalei,ficou beleza. Acho que vou ter que usar a DLL mesmo. Vou testá-la...

Depois de testar...
Rapaz,não funcionou... Não deu nenhum erro,mas ele não cria o arquivo de saída.

Edit
Voltei com o bat. Dei um jeito que deixou tudo em ordem. Só que ele mostra o diretório da aplicação. Mas o bat tá funcionando,cliquei nele e apareceu o arquivo de saída. Só queria achar uma maneira de não aparecer o maldito diretório da aplicação >.<

Obrigado a todos.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Convidad em Qui 29 Abr 2010, 23:23

Rapaz,não funcionou... Não deu nenhum erro,mas ele não cria o arquivo de saída.

Bom... então nós temos que ver se o erro foi na chamada da dll ou na elaboração do comando. Faça um teste aí, chame a dll e peça-a pra executar essa linha:

Código:
echo.>teste.txt

Se o arquivo teste.txt for criado na pasta do seu jogo, então a dll está conseguindo executar o comando.

Tem como eu executar mais de um comando num mesmo argumento? Eu faço assim:

Tem sim, basta concatenar as linhas de comando com ""&&" (sem aspas). Por exemplo:

Código:
cd\&&cd%HOMEDRIVE%&&dir/b/on/s>>listadearquivos.txt

Uso do DOS para a junção de arquivos num simples programa.

Você pode fazê-lo pelo Game Maker mesmo abrindo o primeiro arquivo (em modo binário), lendo o conteúdo e reescrevendo no segundo arquivo. Mas acho que a linda de comando será mais rápido...

Voltei com o bat. Dei um jeito que deixou tudo em ordem. Só que ele mostra o diretório da aplicação.

Se você estiver se referindo ao título da janela do prompt, basta trocá-lo com o comando title. Por exemplo:

Código:
title Mesclando arquivos...

Boa sorte.

Convidad
Convidado


Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Markituh em Qui 29 Abr 2010, 23:40

Capitão Commando escreveu:
Voltei com o bat. Dei um jeito que deixou tudo em ordem. Só que ele mostra o diretório da aplicação.

Se você estiver se referindo ao título da janela do prompt, basta trocá-lo com o comando title.
Estou me referindo a: Quando o arquivo bat é executado no execute_shell,o diretório do projeto aparece na tela e o arquivo de saída não é gerado...

O método bat está bom pra mim,o único problema é a questão do diretório e de não gerar o arquivo de saida.

Obrigado.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Convidad em Qui 29 Abr 2010, 23:45

Estou me referindo a: Quando o arquivo bat é executado no execute_shell,o diretório do projeto aparece na tela e o arquivo de saída não é gerado...

Usa esse comando e olha se resolve:

Código:
prompt $S

Ele deixa a linha do prompt com um espaço em branco. Só que isso é válido para apenas a janela que executa, então, para cada execute_shell(), você tem que usá-lo antes.

O método bat está bom pra mim,o único problema é a questão do diretório e de não gerar o arquivo de saida.

Você fez o teste que eu falei? Diz como você tá gerando esse arquivo. É pela cópia ou por criação de um novo? Me explica o que você quer fazer pra eu tentar te ajudar.

Convidad
Convidado


Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Markituh em Qui 29 Abr 2010, 23:59

Eu to usando o comando copy para juntar vários arquivos num arquivo de saída com tal nome e tal extensão. Mas toda vez que o GM vai executar o bat,ele abre a pasta do projeto e não gera o arquivo de saída.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Convidad em Sex 30 Abr 2010, 00:28

ele abre a pasta do projeto

Você tá usando a função get_directory() ?

----- Editado -----

Cara, acho que vai ser mais fácil eu te mandar um exemplo. Não dá pra saber se você tá usando o get_directory() pra mesclar os arquivos dentro da pasta ou se tá mesclando um à um...

Vou fazer um exemplo aqui e te mando.

----- Editado -----

Amigo, fiz upload do exemplo:

http://www.4shared.com/file/LrqbVB33/Mesclar_arquivos.html

Teclas:
A - Adiciona um arquivo novo pra lista
R - Remove um arquivo da lista
S - Salva todos os arquivos, mesclando

Convidad
Convidado


Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Markituh em Sab 15 Maio 2010, 09:37

Obrigado Capitão,seu exemplo está perfeitíssimo. Não vou esquecer de colocar agradecimentos a você ;)

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Convidad em Dom 16 Maio 2010, 19:29

Markituh escreveu:Obrigado Capitão,seu exemplo está perfeitíssimo. Não vou esquecer de colocar agradecimentos a você ;)

Se quiser um pra separar os arquivos é só dar um toque. Very Happy

Convidad
Convidado


Voltar ao Topo Ir em baixo

Resolvido Re: Executando um programa sem mostra-lo?

Mensagem por Conteúdo patrocinado Hoje à(s) 13:43


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum