Ir para o conteúdo
Ascensao

[Resolvido] Self Remove App

Mensagens Recomendadas

Ascensao

Boas

Tou a tentar criar uma app que se auto destrói mas tou a ter um problema estranho quando uso o seguinte código ele fecha mas não se destroi:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;


namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
auto_remove();
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " +
Application.ExecutablePath;
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
}

private void auto_remove()
{
this.Show();
this.Close();
}
}
}

mas quando adiciono um botão e executo a app e carrego no botão ele fecha-se e auto se destrói... (mas não quero que a app tenha botões)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;


namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
//auto_remove();
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " +
Application.ExecutablePath;
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
}

private void auto_remove()
{
this.show();
this.Close();
}

private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
}

tentei usar o evento button1.performclick() e a app fecha-se mas não se destrói...

alguém pode de dizer que raio de problema se passa neste código?

Editado por apocsantos

Agradeço conselhos e opiniões:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Will_dvp

@Gonka: acho que ele quer que o executavel se "auto-delete" do sistema de arquivos

Acho que nesse caso ele não está se auto-deletando pois o processo do executavel ainda está rodando quando voce cria o processo "cmd.exe" com todos aqueles argumentos, e o sistema não deixa ele deletar pois alega que o arquivo está sendo usado por outro processo

Mas pode ser que eu esteja errado e só falei besteira :B

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ascensao

Sim quero que o programa se auto delete após fechar-se... o problema no código acima só funciona quando é o utilizador a carregar nos botões (button1 ou botão fechar do border) pois quando eu programo para chamar o evento clicar botão com o código performclick() a aplicação não obedece ao código do auto deletar.

Editado por Ascensao

Agradeço conselhos e opiniões:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

Como assim "auto delete"?? queres apagar o .exe??

o problema no código acima só funciona quando é o utilizador a carregar nos botões (button1 ou botão fechar do border) pois quando eu programo para chamar o evento clicar botão com o código performclick() a aplicação não obedece ao código do auto deletar.

Estas a chamar a funcao auto_delete no constructor da form, se passares para fora ele funciona sem botoes!


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ascensao

sim quero apagar o .exe

tou a fazer uma aplicação inutil suicida, o unico objectivo desta aplicação é apos imediatamente ser executado ele fecha-se e apaga o seu proprio .exe ...

como assim por fora do construtor da form? então como é que ele vai executar a função this.close automaticamente?


Agradeço conselhos e opiniões:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

podes usar o evento Load da form e fazer um close e ai apagas o exe.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ascensao

já consegui resolver o problema, faltavam um Environment.Exit(0); no evento form_closed...

pois o que estava a acontecer é que ele corria o comando do cmd.exe mas o processo ficava a correr na mesma o que impedia o comando do cmd.exe funcionar !


Agradeço conselhos e opiniões:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.