problem z małym własnym programem

0

Hej. Zrobiłem coś takiego (projekt w załączniku). I mam problem z tym moim programem, mógłby ktoś sprawdzić i powiedzieć co jest nie tak i co trzeba poprawić. Dopóki nie zrobiłem sobie opcji uruchamiania programu przy starcie systemu chodziło wszystko porządku. A od tamtej pory jak zrobiłem tą opcje to nie znajduje grafik, ani dźwięków do tego programu. Mógłby mi ktoś pomóc wyjść z tego problemu. :)

0

a może jakieś źródła też dasz?

0

Kod źródłowy:

[code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.IO;
using System.Net;
using System.Media;
using System.Threading;

namespace RunAtStartup
{
public partial class frmStartup : Form
{
private SoundPlayer Player = new SoundPlayer();

    RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

    public frmStartup()
    {
        InitializeComponent();
        if (rkApp.GetValue("MyApp") == null)
        {
            chkRun.Checked = false;
        }
        else
        {
            chkRun.Checked = true;
        }
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        if (chkRun.Checked)
        {
            rkApp.SetValue("MyApp", Application.ExecutablePath.ToString());
        }
        else
        {
            rkApp.DeleteValue("MyApp", false);
        }
    }

    private void frmStartup_Load(object sender, EventArgs e)
    {
        try
        {
            this.Player.SoundLocation = @"...\MyApp\Start.wav";
            this.Player.PlaySync();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Błąd aplikacji.");
        }
    }

    private void pictureBox1_MouseEnter(object sender, EventArgs e)
    {
        pictureBox1.Image = System.Drawing.Image.FromFile(@"...\MyApp\narzedzia2.png");
    }

    private void pictureBox1_MouseLeave(object sender, EventArgs e)
    {
        pictureBox1.Image = System.Drawing.Image.FromFile(@"...\MyApp\narzedzia.gif");
    }
}

}
[/code]

0

Sprawdź ścieżkę:

************** Exception Text **************
System.IO.FileNotFoundException: ...\MyApp\narzedzia2.png

Czemu tam wszędzie masz 3 kropki?

0

nie lepiej jak załadujesz obrazek i dźwięk do zasobów? no chyba że planujesz to dynamicznie zmieniać.

0

Sarrus sprawdziłem ścieżki są dobre, a te 3 kropki są po to jak by ktoś chciał włożyć program na dowolną partycję.
Loganek to jest dobry pomysł tylko, że nie na tą chwilę. :)

0

Może coś takiego Ci pomoże zakładając, że masz te pliki w katalogu gdzie jest plik exe uruchamiający aplikację.

string fileName = System.IO.Path.Combine(Application.StartupPath, "narzedzia2.png");
            pictureBox1.Image = System.Drawing.Image.FromFile(fileName);
 
0

Taki hint: wiele antywirusów nie lubi gdy program grzebie w Run. Prostym obejściem tego problemu jest zapis do RunOnce, tyle że trzeba to odnawiać przy każdym włączeniu programu, ale z tym antyvirki jakoś problemów nie mają. Jak ostatnio sprawdzałem to Daemon Tools tak robi, co kiedyś sprawiało problem gdyż zapis do rejestru robił przy wyłączaniu zamiast na starcie, co sprawiało pewien problem przy nagłym resecie czy ubicu paskudy.

I zrób jak radzi mój przedmówca. Używanie kropek może i jest "cool" ale uwielbia płatać figle.

0

Nadal jest błąd. Nie rozwiązało to problemu mojego.

0

Eh, wstaw sobie taki kodzik przed wczytaniem a się dowiesz czy w dobrą ścieżkę składasz:

MessageBox.Show(System.IO.FileExists(ta_woja_sciezka)?"O_o":"X_x"+"\n"+ta_woja_sciezka);

http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

0
sky1024 napisał(a)

Sarrus sprawdziłem ścieżki są dobre, a te 3 kropki są po to jak by ktoś chciał włożyć program na dowolną partycję.
wymyśliłeś coś dziwnego. jedna kropka - katalog bieżący, dwie - nadrzędny, backslash - root. nie ma trzech.

O_o napisał(a)

Eh, wstaw sobie taki kodzik przed wczytaniem a się dowiesz czy w dobrą ścieżkę składasz:

MessageBox.Show(System.IO.FileExists(ta_woja_sciezka)?"O_o":"X_x"+"\n"+ta_woja_sciezka);

słyszałem, że visual studio ma debuger, ba, istnieją przekazy, jakoby miało coś zwanego immediate window.

           if (rkApp.GetValue("MyApp") == null)
            {
                chkRun.Checked = false;
            }
            else
            {
                chkRun.Checked = true;
            }

WTF?

chkRun.Checked = rkApp.GetValue("MyApp") != null;

1 użytkowników online, w tym zalogowanych: 0, gości: 1