problem z małym własnym programem

problem z małym własnym programem
S1
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
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. :)


ŁF
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.
Loganek
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 8 lat
  • Postów:268
0

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


S1
Wszystko jest w załączniku, a ta opcja uruchamiania programu przy starcie była na jakiejś stronie, której nie mogę teraz znaleźć. :)
Loganek
nie, w załączniku nie widzę kodu źródłowego
S1
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
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]


Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:7 dni
  • Postów:2512
0

Sprawdź ścieżkę:

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

Czemu tam wszędzie masz 3 kropki?

edytowany 1x, ostatnio: Sarrus
Loganek
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 8 lat
  • Postów:268
0

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


S1
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
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ę. :)


gawronlukasz
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 13 lat
  • Postów:51
0

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

Kopiuj
string fileName = System.IO.Path.Combine(Application.StartupPath, "narzedzia2.png");
            pictureBox1.Image = System.Drawing.Image.FromFile(fileName);
 
OO
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
  • Postów:98
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
S1
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
0

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


OO
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
  • Postów:98
0

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

Kopiuj
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


O̾..͠o
edytowany 2x, ostatnio: O_o
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 4 godziny
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:

Kopiuj
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.

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

WTF?

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

edytowany 2x, ostatnio: ŁF

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.