Conectar-se
Quem está conectado
34 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 33 Visitantes

gart30

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Executando um programa sem mostra-lo?

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.
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Executando um programa sem mostra-lo?

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.
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

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").
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Executando um programa sem mostra-lo?

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.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

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)
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

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
Convidad
Convidado

Re: Executando um programa sem mostra-lo?

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).
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

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.
Convidad
Convidado

Re: Executando um programa sem mostra-lo?

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.
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

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.
Convidad
Convidado

Re: Executando um programa sem mostra-lo?

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.
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

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.
Convidad
Convidado

Re: Executando um programa sem mostra-lo?

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:

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
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Executando um programa sem mostra-lo?

em Sab 15 Maio 2010, 09:37
Obrigado Capitão,seu exemplo está perfeitíssimo. Não vou esquecer de colocar agradecimentos a você ;)
Convidad
Convidado

Re: Executando um programa sem mostra-lo?

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
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum