Ir para conteúdo
Fórum Script Brasil
  • 0

Boa Noite!!!


Leandro Lima

Pergunta

Boa noite será quem alguém poderia me ajudar a colocar um script com o nome de um programa nessa linha tipo quero fazer um programa silencioso com o setup e na tela de instalação aparecer o nome tipo assim: começando a instalação do Nero...

quero junto com esse script

#include <stdlib.h>

int main()
{   
   system("start C:\\Users\\Clara\\Desktop\\Programas\\Nero7.exe /S");
   return 0;
   
}

Editado por Leandro Lima
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Note que você esta passando uma string literal para o system.
O símbolo de barra invertida serve para expressar certos valores em decimal, da tabela asc2, hexadecimal, octal, entre muitos outros, por exemplo, o salto de linha(\n). Se o salto de linha não tivesse a barra invertida adiante como você diferenciaria o salto de linha de um 'n' normal? Por isso se coloca barra invertida adiante de certos caracteres, o problema vem quando queremos realmente por uma barra invertida na string, o compilador toma como que a seguinte letra depois da barra invertida é o que o usuário quer expressar, porem como falei a letra que preceder a barra invertida pode representar um mundo de coisas e isso o programador deve dominar a perfeição. Se você quer expressar uma barra invertida, você deve por uma barra invertida antes '\\'.
O mesmo acontece com aspas duplas, se eu quero resaltar um texto dentro de uma string com aspas duplas olha o que acontece:
fd8f9a8e4ed74c619e13b3aac05e4dfd.png

Nesse caso eu tenho "start C:\\Users\\user\\Desktop\\Nero7.exe /S"
mas quero que Nero7.exe fique entre aspas duplas como na imagem. O problema é que o compilador interpreta isso como se fosse 2 strings com uma possível variável no meio que mas bem parece uma variável membro de uma struct... Um bagulho meio doidão! Totalmente impossível do compilador digerir vamos. Que teríamos que fazer para arrumar isso? Simples! pondo uma barra invertida antes das aspas duplas:
0eddeb365336462c81a5318f0475b519.png
Agora você pode ver que o compilador tratou tudo como uma só string. você pode ficar meio doido ao ver coisas como \\\" mas saiba que \\\" é \\ + \" certo? São duas coisas diferentes, você pode dar um espaço para ficar mais legivel, porem o efeito é o mesmo.
\\ significa \
\" significa "
etc
Basicamente se elimina a primeira barra.
A barra se coloca para não confundir certas coisas com letras ou outras coisas.
Outra coisa parecida é o operador modulo, usamos modulo para obter o resto de uma divisão. Mas e se quero imprimir porcentagem tipo 100%? Fácil! colocamos 2 módulos %%, isso quer dizer que quero imprimir o caractere de porcentagem e não fazer uma conta.

Por que falo tudo isso? Porque vamos ver primeiro o comando correto para abrir uma aplicação no prompt. abrimos uma janela de prompt e escrevemos o seguinte:
7727c6f821c749a2a1532a90b233fd7c.png

Com esse comando podemos abrir a calculadora desde qualquer diretório, isso funciona porque calculadora esta declarada no path do sistema, isso faz com que ela funcione em qualquer pasta, mas a rota real dela é C:\Windows\System32:

3d8d57aa18cf40728f9a1504f5b71592.png


Podemos por calc.exe dentro de aspas duplas.
cb11cb7f7b29432ea181180575c0f926.png

por que digo isso? Por que primeiro você deveria provar aqui no cmd como executar seu programa! Alguns programas as vezes tem espaços entre nome, não é seu caso mas imagine que seu programa se chama super programa para calcular.exe. É evidente que no caso do programa ter espaços você tem que por o nome do programa entre aspas duplas, serve para agrupar uma coisa. igualmente vejo que o nome do programa vem acompanhado do flag /s, outro motivo para por o nome do programa entre aspas duplas, ou seja colocando o nome entre aspas duplas você está separando o nome do /S que facilita o entendimento para o programa. No cmd o comando para abrir a calculadora ficaria:
1a0f380c982d4611beb04d1d82cc1188.png

Agora que temos nosso programa se executando corretamente no prompt é só adaptar isso ao programa em c. pegamos "C:\Windows\System32\"calc.exe" /S" e como sabemos que adiante de uma barra invertida deve por outra, e também adiante de aspas duplas deixamos o array tal como: "C:\\Windows\\System32\\ \"calc.exe\" /S"

E colocamos agora o start:
"start C:\\Windows\\System32\\ \"calc.exe\" /S"

tadah!!!
o system deve levar isso para executar a calculadora:
system ("start C:\\Windows\\System32\\ \"calc.exe\" /S");

Agora é só adaptar isso ao seu problema.
Prove no cmd antes de usar um comando, assim você se certifica que ele funciona corretamente, logo depois você aplica ele ao seu programa modificando as barras e aspas como expliquei.
Eu consegui executar exitosamente um programa no escritorio com este comando:

system("start C:\\Users\\%USERNAME%\\Desktop\\\"Mini Doom V1.3.exe\"");

Note que retirei o /S e coloquei a variável do ambiente %USERNAME%. O programa troca a variável %USERNAME% pelo nome do usuário atual do sistema fazendo com que funcione no computador de qualquer pessoa, se você executar isso no computador da clara, o programa trocara %USERNAME% por Clara automaticamente, ele fará isso em qualquer computador com qualquer conta de usuário. Se quiser saber mais procure algum tutorial sobre variáveis de ambiente.

Acho que com isso você pode executar qualquer coisa no seu PC.
Sorte!

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

  • 0

obg pela ajuda funcionou bem !!! Se não for incomodar demais eu gostaria de que add o nome do programa na hora da instalação...

tipo esse do google Chrome que é em bat.

echo Instalando CROME...
start /wait CROME.exe /silent /install
IF %ERRORLEVEL% == 0 GOTO B
echo Instalacao do CROME não teve sucesso...
GOTO PULA1
:B
echo Instalacao do CROME teve sucesso...
:PULA1

Se puder me ajudar vou ficar muito feliz e grato pois estou quebrando a cabeça porque sou iniciante no ramo.

Link para o comentário
Compartilhar em outros sites

  • 0

aqui você tem um exemplo completo na resposta do usuario 1freakday: http://www.clubedohardware.com.br/forums/topic/908485-abrir-site-em-programa-c/

Basicamente trata-se de usar a função sprintf para montar um array e depois enviar ao comando system. Aprenda a usar sprintf que tudo funcionará. O sprintf é como o printf porem a saída vai dirigida para um array em vez de ir para a tela do computador como no caso do printf, essa é a diferença, o resto é praticamente igual.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...