Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Cronicle8

C# para VB.NET

Mensagens Recomendadas

Cronicle8    0
Cronicle8

Bons Dias mais uma vez,

Venho outra vez pedir ajuda a todos que me possam ajudar, o meu problema é o seguinte, eu "traduzi" código C# para VB ( Acho que está tudo bem), mas o código em C# faz o que devia fazer e em VB não, está aqui o código em C# :

void Button4Click(object sender, EventArgs e)
	{
		String wall = "";
		String temp = System.IO.Path.GetTempFileName();
		System.IO.TextWriter tw = new System.IO.StreamWriter(temp);

		tw.WriteLine("HKEY_CURRENT_USER\\Control Panel\\Desktop [10]"); //Full registry key access (for modification)
		tw.WriteLine("HKEY_CURRENT_USER\\Control Panel\\Desktop [7]");

			wall = openFileDialog1.FileName;
			tw.WriteLine("Wallpaper = REG_SZ " + openFileDialog1.FileName);

		if (radioButton1.Checked) //Stretch
		{
			tw.WriteLine("TileWallpaper = REG_SZ 0");
			tw.WriteLine("WallpaperStyle = REG_SZ 2");
		}
		else if (radioButton2.Checked) //Tile
		{
			tw.WriteLine("TileWallpaper = REG_SZ 1");
			tw.WriteLine("WallpaperStyle = REG_SZ 0");
		}
		else if (radioButton3.Checked) //Center
		{
			tw.WriteLine("TileWallpaper = REG_SZ 0");
			tw.WriteLine("WallpaperStyle = REG_SZ 0");
		}
		tw.Close();
		tw.Dispose();

		try { //Execute regini process to change background in registry
			System.Diagnostics.Process proc = new System.Diagnostics.Process();
			proc.StartInfo.FileName = "regini";
			proc.StartInfo.Arguments = "\"" + temp + "\"";
			proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
			proc.StartInfo.UseShellExecute = true;
			proc.StartInfo.Verb = "runas";
			proc.Start();
			proc.WaitForExit();
			if (proc.ExitCode != 0) //If regini failed
			{
				MessageBox.Show("Error setting background: " + proc.ExitCode, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
			}
			System.IO.File.Delete(temp);
		}
		catch(System.ComponentModel.Win32Exception ex) //If UAC prompt canceled/failed
    		{
			System.IO.File.Delete(temp);
        		return;
    		}
		System.IO.File.Delete(temp);

E este é o meu código em VB :

Dim RespostaMess As MsgBoxResult = MsgBox("Tem a certeza que quer mudar a imagem?", MsgBoxStyle.YesNo)
        Dim wall As String = ""
        Dim temp As String = System.IO.Path.GetTempFileName()
        Dim tw As System.IO.TextWriter = New System.IO.StreamWriter(temp)


        tw.WriteLine("HKEY_CURRENT_USER\Control Panel\Desktop [10]") REM Full registry key access (for modification)
        tw.WriteLine("HKEY_CURRENT_USER\Control Panel\Desktop [7]")
        If FundoIComboBox.Text = "Esticar" Then
            tw.WriteLine("TileWallpaper = REG_SZ 0")
            tw.WriteLine("WallpaperStyle = REG_SZ 2")
        End If
        If FundoIComboBox.Text = "Mosaico" Then
            tw.WriteLine("TileWallpaper = REG_SZ 1")
            tw.WriteLine("WallpaperStyle = REG_SZ 0")
        End If
        If FundoIComboBox.Text = "Centrar" Then
            tw.WriteLine("TileWallpaper = REG_SZ 0")
            tw.WriteLine("WallpaperStyle = REG_SZ 0")
        End If
        If RespostaMess = MsgBoxResult.Yes Then
            tw.WriteLine("Wallpaper = REG_SZ " + OpenFileDialog1.FileName)
        End If
        tw.Close()
        tw.Dispose()
        Try
            Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process
            proc.StartInfo.FileName = "regini"
            proc.StartInfo.Arguments = "\" + temp + "\"
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            proc.StartInfo.UseShellExecute = True
            proc.StartInfo.Verb = "runas"
            proc.Start()
            proc.WaitForExit()
            If proc.ExitCode = 0 Then
                MsgBox("Erro ao mudar o fundo de ambiente de trabalho: " + proc.ExitCode, Text, MessageBoxButtons.OK)
            End If
            MsgBox("Alterações feitas com sucesso.")
        Catch ex As Exception
            System.IO.File.Delete(temp)
            Return
        End Try
        System.IO.File.Delete(temp)

Tenho alguma coisa mal?

Qualquer ajuda é agredecida. :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Coloca esta condição

        If RespostaMess = MsgBoxResult.Yes Then
            tw.WriteLine("Wallpaper = REG_SZ " + OpenFileDialog1.FileName)
        End If

antes desta

        If FundoIComboBox.Text = "Esticar" Then
            tw.WriteLine("TileWallpaper = REG_SZ 0")
            tw.WriteLine("WallpaperStyle = REG_SZ 2")
        End If

No entando caso o utilizador diga não na mensagem, da maneira que tens o código, vai ser na mesma executado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Cronicle8    0
Cronicle8

Consegui pôr a funcionar, muda a imagem, mas não altera o seu estilo... (Esticado, centrado, mosaico)

Alguma opinião?

Novo Código :

API

    <DllImport("user32.dll", SetLastError:=True)> _
    Public Shared Function SystemParametersInfo(ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
    End Function

Código

Dim RespostaMess As MsgBoxResult = MsgBox("Tem a certeza que quer mudar a imagem?", MsgBoxStyle.YesNo)
        Dim wall As String = ""
        Dim temp As String = System.IO.Path.GetTempFileName()
        Dim tw As System.IO.TextWriter = New System.IO.StreamWriter(temp)


        tw.WriteLine("HKEY_CURRENT_USER\Control Panel\Desktop [10]") REM Acesso Total ao registo
        tw.WriteLine("HKEY_CURRENT_USER\Control Panel\Desktop [7]")
        If RespostaMess = MsgBoxResult.Yes Then
            wall = OpenFileDialog1.FileName
            tw.WriteLine("Wallpaper = REG_SZ " + FundoITextBox.Text)
            tw.WriteLine("HKEY_CURRENT_USER\Control Panel\Desktop [8]")
            If FundoIComboBox.Text = "Esticar" Then
                tw.WriteLine("TileWallpaper = REG_SZ 0")
                tw.WriteLine("WallpaperStyle = REG_SZ 2")
            End If
            If FundoIComboBox.Text = "Mosaico" Then
                tw.WriteLine("TileWallpaper = REG_SZ 1")
                tw.WriteLine("WallpaperStyle = REG_SZ 0")
            End If
            If FundoIComboBox.Text = "Centrar" Then
                tw.WriteLine("TileWallpaper = REG_SZ 0")
                tw.WriteLine("WallpaperStyle = REG_SZ 0")
            End If
        End If

        tw.Close()
        tw.Dispose()
        Try
            Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process
            proc.StartInfo.FileName = "regini"
            proc.StartInfo.Arguments = "\" + temp + "\"
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            proc.StartInfo.UseShellExecute = True
            proc.StartInfo.Verb = "runas"
            proc.Start()
            proc.WaitForExit()
            If proc.ExitCode = 0 Then
                MsgBox("Erro ao mudar o fundo de ambiente de trabalho: " + proc.ExitCode, Text, MessageBoxButtons.OK)
            End If
            MsgBox("Alterações feitas com sucesso.")
        Catch ex As Exception
            System.IO.File.Delete(temp)
            Return
        End Try
        System.IO.File.Delete(temp)
        SystemParametersInfo(20, 0, wall, 2) REM Refresh desktop background

Partilhar esta mensagem


Link 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 a nossa Política de Privacidade