Kezdőoldal » Számítástechnika » Programozás » Hogy lehet megcsinálni c#-be,...

Hogy lehet megcsinálni c#-be, hogy beolvasson egy fájlt, u. h. a fájlt inditom el es nem a programot?

Figyelt kérdés
Irtam egy szövegszerkesztt és beállitottam, hogy a windows a txt fájlokat azzal a programmal nyissa meg amit én irtam. Azt szeretnem megcsinalni, hogy mikor elinditom a txt fájlt és elindul a programom olvassa be.
2009. dec. 8. 02:03
 1/3 anonim ***** válasza:

Ilyenkor a windows a programodnak argumentumgént adja át a megnyitandó file elérési útját. Hogy ezt megkapd, winforms esetén azt kell tenned, hogy megkeresed a program.cs filet, es megadod a main fuggveny parameterenek, hoyg string tombot vár: "static void Main(string[] args)"


Ennek a string tombnek az elso eleme tartalmazza a tarsitott és megnyitott file eleresi utjat. Ajanlatos azert ellenorizni a length értékt, hogy nem-e 0.


Utána gondolom mennifog, de azért leírom, hogy pl add át ezt az args[0] értéket a fo formodnak (vagy az egész args tombot):


Application.Run(new Form1(args));


És persze a form konstruktorat is ird at, hogy várjon ilyen parametert.


public Form1(string[] args)


File betöltés legegyszerubben pedig igy megy:

string txt = File.ReadAllText(args[0]);


WPF esetén a Environment.GetCommandLineArgs(); hivassal kapod meg az elobbi args tombot.

2009. dec. 8. 04:27
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Ennyire azért nem egyszerű.


Két lépésben: először is rögzítened kell a Registry-ben, hogy melyik fájlt szeretnéd automatikusan megnyittatni a programoddal.


Utána pedig a programon belül le kell kezelned a kapott paramétert.


A következő példa egy képzeletbeli fájl társítását rejti:

A *.file kiterjesztésű állományokat a fileopener.exe programmal fogjuk megnyitni. A szoftvert a c:\mytools könyvtárban találjuk, és a --open paraméterrel lehet rávenni, hogy megnyisson egy átadott fájlt.


Na lássuk: A HKCR hive-ban létrehozol egy .file nevű kulcsot, alapértelmezett értéke "mytools.file" legyen.


A HKCR-ben létrehozol egy mytools.file kulcsot, a következő struktúrával:


mytools.file

DefaultIcon

Shell

open

command


mytools.file: Alapértelmezett értéke mondjuk "Eszközeim fájlja"

DefaultIcon: Alapértelmezett érték a fájl ikonját tartalmazó .ico állományra mutat.

command: Az alapértelmezett értéke a futtatni kívánt parancsot rejti. Ez esetünkben: "c:\mytools\fileopener.exe --open %1"


A "%1" a windows Shellnek adott első paramétert, tehát a fájl nevét jelenti.


A programban innétől fogva nincs más dolgod, mint elkezded nézegetni a kapott paramétereket sorban. Ha az aktuális paraméter "--open", akkor veszed a következőt, és megnyitod.


Van ehhez két osztályom is. Az egyik be tudja reggelni a fájltársítást, a másik a paraméterek felsorolásában segít. pl.:


AppParams.FirstParam();

while (!AppParams.EndOfParams()) {

...

if (AppParam.CurrentParam == "...


AppParams.NextParam();

}

2009. dec. 28. 15:36
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
Az első válaszoló vagyok. Az rendben van, hogy társítani kell az adott kiterjesztését a proggihoz, de a kérdés egyrészről nem erről szólt, hanem hogy a programot hogy kell megírni. Másrászről nemtudom honnan szedted ezt az AppParams osztalyt, ill. például az EndOfParams metódust, mert ilyen egyszerűen nincs. Ha meg akarsz győzni, hogy mégis létezik, légyszi rakj be egy msdn linket. EndOfParams-ra igy semmit nem talál a google. Az én válaszom akor is áll kb, ha a paramérerezés ilyen: "proggi.exe --open filepath", ezeket a paramétereket a main függvény kapja meg (ahogy ez volt anno C-ben, C++-ban), legfeljebb az a kérdés, hogy hanyadik ekemét kell nézni a tömbnek.
2009. dec. 29. 21:52
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!