Otevření souboru v mém programu   zodpovězená otázka

VB.NET, I/O operace

Mám asociovaný soubor s určitou příponou tak, aby se otevíral v mém progrramu. Potřeboval bych poradit jak to udělat v programu. Asi to bude v události load hlavního formuláře, ale nevím jak otestovat, jestli chceme otevřít nějaký soubor a jak se dostanu k jeho názvu. Víte někdo?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obvykle se název souboru předává jako parametr při spuštění aplikace. Tento parametr (případně další parametry) se dá zjistit minimálně dvěma způsoby:

Dim commandLineArgs As String = Command()

nebo

Dim commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = My.Application.CommandLineArgs

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ok, díky. Jsem si s tím trochu hrál a zjistil jsem, že název souboru, pokud nějaký jako parametr je, najdu pod indexem 0 - My.Application.CommandLineArgs(0)

Nevíš jestli to je vždy jako první parametr, nebo když jich bude více, tak tam je třeba jiný?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vlastnost CommandLineArgs vrací kolekci parametrů rozdělených na základě algoritmu, který za určitých podmínek bere mezery jako oddělovače jednotlivých parametrů. Například parametr /A B +123 bude rozdělen na pozice 0, 1 a 2, ale parametr /Soubor:"C:\Program Files\Soubor.txt" bude považován za jeden na pozici 0. Na rozdělování parametrů mají zřejmě vliv i úvozovky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Parametry se rozdělí podle mezer, pokud chcete mít v některém parametru mezeru, musíte jej uzavřít do úvozovek.notepad c:\program files\text.txt je špatně, protože se to chápe jako dva parametry - c:\program a files\text.txt. Cesta se musí dát do úvozovek:notepad "c:\program files\text.txt" už bude fungovat a takhle to také předá Windows, když se soubor pokusíte otevřít poklepáním.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Jj díky, funguje. Ještě by mě zajímalo, zda jde nějakým přikazem asociovat konkrétní příponu k mému programu. Teď ale nemyslím při instalaci. Myslím přímo z programu...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To už tady bylo také řečeno:

http://www.vbnet.cz/forum-tema--343-asoc...

Je jedno jestli to uděláte při instalaci nebo při každém spuštění programu. Všimněte si, že při přidávání hodnot do registrů, si volíte jaké parametry se programu předávají.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to divné, ale mě to nefunguje potřebuji dostat obrázek do pictureboxu a když mám v kódu toto:

PictureBox1.ImageLocation = My.Application.CommandLineArg(0)

nebo

PictureBox2.Image = System.Drawing.Image.FromFile(My.Application.CommandLineArg(0))

Tak to píše Převod řetězce D:\Visual Studio\-=PLUS=-\Images na typ Boolean není platný. (když už je to vybuildlí)

A ve VS

Index je mimo rozsah. Index musí být nezáporný a musí být menší než velikost kolekce. Název parametru: index

Jenže tam nemůžu zadat umístění souboru

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback