problem z małym własnym programem

Odpowiedz Nowy wątek
2011-07-10 21:52
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. :)


popraw temat. wiemy, że masz problem, bo stworzyłeś temat, i wiemy, że z programem, bo to forum programistyczne. Twój temat nie mówi nic. - ŁF 2011-07-13 13:41

Pozostało 580 znaków

2011-07-10 21:58
0

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


Wszystko jest w załączniku, a ta opcja uruchamiania programu przy starcie była na jakiejś stronie, której nie mogę teraz znaleźć. :) - sky1024 2011-07-10 22:02
nie, w załączniku nie widzę kodu źródłowego - Loganek 2011-07-10 22:16

Pozostało 580 znaków

2011-07-10 22:24
0

Kod źródłowy:


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");
    }
}

}


Pozostało 580 znaków

2011-07-10 22:31
0

Sprawdź ścieżkę:

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

Czemu tam wszędzie masz 3 kropki?

edytowany 1x, ostatnio: Sarrus, 2011-07-10 22:31

Pozostało 580 znaków

2011-07-10 22:31
0

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


Pozostało 580 znaków

2011-07-11 08:54
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ę. :)


Pozostało 580 znaków

2011-07-11 18:25
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);
 

Pozostało 580 znaków

2011-07-11 18:42
O_o
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.


O̾..͠o
edytowany 1x, ostatnio: O_o, 2011-07-11 18:44

Pozostało 580 znaków

2011-07-11 19:12
0

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


Pozostało 580 znaków

2011-07-11 20:10
O_o
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-[...]ry/system.io.file.exists.aspx


O̾..͠o
edytowany 2x, ostatnio: O_o, 2011-07-11 20:11

Pozostało 580 znaków

2011-07-13 13:31
ŁF
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;

edytowany 2x, ostatnio: ŁF, 2011-07-13 13:34

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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