Otevření souboru s parametry – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Otevření souboru s parametry – C / C++ – Fórum – Programujte.comOtevření souboru s parametry – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tomáš
~ Anonymní uživatel
511 příspěvků
30. 11. 2009   #1
-
0
-

Dobrý den, v programování teprv začínám, tak se vám nějak pokusim vysvětlit můj problem, pokouším se v Microsoft Visual Basic vytvořit program, který mi bude spouštět .bat soubor s dvěma určitými parametry. Funguje to tak, že jsem si udělal tři odkazy který spouští můj "start.bat" soubor s parametry:



Public Class Form1
Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
System.Diagnostics.Process.Start("C:\Program Files\SLOZKA\start.bat", "3")
End Sub

Private Sub img1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
System.Diagnostics.Process.Start("C:\Program Files\SLOZKA\start.bat", "1")
End Sub

Private Sub img2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
System.Diagnostics.Process.Start("C:\Program Files\SLOZKA\start.bat", "2")
End Sub
End Class


Takže když kliknu na první odkaz, spustí se start.bat s parametrem 1 (pomocí %1 ho vypíšu)

A já potřebuju, kdyz nejaky soubor spustim v tom mém programu, aby se mi soubor start.bat spustil i s parametrem cesty spuštěného souboru, snad to jeste dovysvetlim prikladem:

1. např. na ploše spustim program AHOJ.exe v programu MUJPROGRAM.exe
2. Otevre se program MUJPROGRAM.exe kde kliknu např na druhý odkaz
3. Spustí se soubor START.bat, kde parametr 1 (%1) == 2 a a parametr 2 (%2) == 'celá cesta k souboru AHOJ.exe'
4. Soubor MUJPROGRAM.exe se zavře a spustí se soubor START.bat, kde parametr %1 == 2 a %2 == cesta k souboru

Prosim všechny kdyby jste mi v tomto poradily, pokousel jsem neco najit, ale nikde sem nic nenasel.
Diky

Nahlásit jako SPAM
IP: 88.100.183.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
1. 12. 2009   #2
-
0
-

U té funkce Process.Start (takto použité) je druhý parametr sada parametrů příkazové řádky. Neboli jednotlivé argumenty oddělené mezerou, takže pokud budeš mít v té úplné cestě mezeru, tak ji musíš uzavřít do uvozovek (tu cestu, ne tu mezeru :smile1: ).

A celou cestou k souboru získáš třeba takto:

http://msdn.microsoft.com/en-us/library/system.diagnostics.processmodule.aspx

Nahlásit jako SPAM
IP: 85.207.166.–
Tomáš
~ Anonymní uživatel
511 příspěvků
1. 12. 2009   #3
-
0
-

Nevim jestli jsi mě pochopil, mozna jsem to nepochopil ja, moc se v tom nevyznám. Ja jen potrebuji vedet jak do:

Process.Start("C:\Program Files\SLOZKA\start.bat", "1") 
vlozit parametry jako jsou v .bat souborech, například takto:
Process.Start("%ProgramFiles%\SLOZKA\start.bat", "1 %1") 

přičemž %ProgramFiles% = 'cela cesta kde je slozka Program Files' a %1 = cesta k souboru, který byl spusten v programu

Jenže když to takto udělám, vypíše se mi nebo spustí přesně ten text co je napsaný; a já potřebuju, aby se mi místo tech parametru vypsaly ty hodnoty jako v .bat souboru :)

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #4
-
0
-

Ale ty %ProgramFiles% a %1 používáš až uvnitř toho BAT souboru, ne?

Jde o to, jak bys spouštěl ten BAT soubor z příkazové řádky. V programu je to pak podobné.


Řekněme takto z CMD:

C:\Program Files\SLOZKA\start.bat parametr1 parametr2 parametr3 parametr4


a v programu by to bylo asi takto:
Process.Start("C:\Program Files\SLOZKA\start.bat", "parametr1 parametr2 parametr3 parametr4")

Nahlásit jako SPAM
IP: 85.207.166.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #5
-
0
-

Právě že ne, ty parametry %ProgramFiles% a %1 potřebuju použít už v programu; BAT soubor se už spustí s těmi vypsanými parametry.

Tedy potřebuju aby se ten strat.bat spoustel takto:

Process.Start("C:\Program Files\SLOZKA\start.bat", "1 C:\Program Files\CESTAKSOUBORU.neco")


A právě ten druhý parametr "C:\Program Files\CESTAKSOUBORU.neco" má být místo toho %1, tedy celá cesta k souboru, který byl otevřený v programu

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #6
-
0
-

Tomáš napsal:
Tedy potřebuju aby se ten strat.bat spoustel takto:

Process.Start("C:Program FilesSLOZKAstart.bat", "1 C:Program FilesCESTAKSOUBORU.neco")



Tak to tak udělej. Možná řešíš problém, který není. Zkus položit přímou konkrétní otázku, dát sem upravený kus kódu, který ti nefunguje .... V tuto chvíli už netuším v čem je problém :smile11: .

Nahlásit jako SPAM
IP: 85.207.166.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #7
-
0
-

No a jeste sem zapomel ze je problem vtom, ze ta cesta misto %1 se nevypise (v bat se proste jen vypise to %1) :),

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #8
-
0
-

Bez vložení toho kusu kódu, kde voláš spuštění BAT souboru, sem na fórum to nepůjde (nejlépe poslední verzi :-)) resp. možná ti někdo jiný poradí i bez něho, ale já ne.

Nahlásit jako SPAM
IP: 91.203.96.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #9
-
0
-

Asi to blbě vysvětluju nebo newim .), určitě to musí nějak jít, tak se to pokusim vysvetlit znovu :)

Potřebuji kod, který mi po kliknutí otevře určitý BAT soubor s parametry.
V programu (na který potřebuju ten kod, říkejme mu PROGRAM.exe) spustím nějaký soubor (ted např: AHOJ.EXE)
Spustí se PROGRAM.exe, v něm bude odkaz a po kliknutí se spustí BAT soubor s parametrem
A ten parametr potrebuju, aby obsahoval celou cestu k souboru AHOJ.exe!, (ktery v BAT souboru vypisu uz jen pomoci: ECHO %1)

V jednoduchem BAT souboru bych celou cestu k otevíraném souboru vypsal pomocí %1, což v tom mém kodu nefunguje

----------------------------------

Snad uz se mi to podařilo vysvětlit, jinak cely kod, přes který jsem si to prvně zkoušel vyrobit mi tu celou cestu nevypise :)

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #10
-
0
-

Jasně ... toto už si napsal nahoře. Asi chápu čeho chceš dosáhnout (smysl mi sice trochu uniká), ale jak jsem psal, hoď sem ten kód, co ti nefungoval, aby se bylo od čeho odpíchnout. Jestli čekáš, že to za tebe celé někdo vymyslí, tak čekej :-).

Nahlásit jako SPAM
IP: 91.203.96.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #11
-
0
-

Ten kod, co sem si původně vyrobil já je ten hned nahoře, nebo jestli to má být jiný kod nevim, jak rikam, sem uplnej zacatecnik



Public Class Form1
Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
Process.Start("C:\Program Files\SLOZKA\start.bat", "3 %1")
End Sub

Private Sub img1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Process.Start("C:\Program Files\SLOZKA\start.bat", "1 %1")
End Sub

Private Sub img2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
Process.Start("C:\Program Files\SLOZKA\start.bat", "2 %1")
End Sub
End Class

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #12
-
0
-

Paráda :-).
Konečně.

Jelikož tam jako parametr předáváš řetězec %1, tak ti to ten BAT soubor vypisuje správně :-).
Musíš tam místo toho %1 dát tu úplnou cestu k souboru (zase jako řetězec). To je celé kouzlo.

Nahlásit jako SPAM
IP: 91.203.96.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #13
-
0
-

No právě, a jak tu celou cestu k souboru získám, když nějaky soubor otevírám přes tento ? :smile1:

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #14
-
0
-

Tak na získání jména souboru jsem ti dával odkaz nahoře.

Jenom se trochu ztrácím v tom, co odkud chceš spouštět a úplnou cestu kterého exe souboru budeš předávat jako parametr.
Pokud máš exe, z něj budeš spouštět bat a jeho úplnou cestu chceš předat, tak viz výše.
Pokud máš exe, z něj spustíš jiné exe, ze kterého voláš bat a chceš mu předat úplnou cestu na ten první exe (uf :-)), tak to si tu cestu budeš muset předat mezi exe (parametr při spouštění :-)).

Nahlásit jako SPAM
IP: 91.203.96.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #15
-
0
-

teď se v tom zase trochu ztrácím já :))
zkusil jsem si teda najít něco ve smyslu parametry při spouštění apod., ale proste jsem to nepochopil :)

Vymyslel jsem ale jiný způsob, jak dosáhnout toho, čeho potřebuju:
jednoduše si otevřu nějaký soubor přes BAT, kde parametr %1 uložím do souboru a následně spustím ten můj program s kodem. Po kliknutí se otevře dalši BAT soubor kde bude parametr 1, 2 nebo 3 a druhy parametr (tedy cestu k souboru) si vytáhne z toho uloženého souboru. Tím dostanu ty všechny parametry co potřebuji. Sice se to načítá dost dlouho, ale když vidím ze mi asi nic jiného nezbývá tak to asi takto použiju

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
2. 12. 2009   #16
-
0
-

Parametry při spouštění - jedny předáváš tomu BAT souboru. Předpokládám, že podobně jako spouštíš BAT, spouštíš i ten druhý EXE. Takže mu můžeš i stejně předat parametry.
Druhá věc je to, jak to řešíš, jestli by to všechno nešlo úplně jinak (ne tak složitě). Ale to bych musel vědět, co je cílem cvičení, a to snad radši ani nechci :-).

Nahlásit jako SPAM
IP: 91.203.96.–
Tomáš
~ Anonymní uživatel
511 příspěvků
2. 12. 2009   #17
-
0
-

Stejně to nechápu, udělám si to cestou co jsem popisoval, můžu alespoň poprosit, jak ten soubor start.bat pomocí:

Process.Start("C:\Program Files\SLOZKA\start.bat", "3") 
spustit minimalizovaný?

Nahlásit jako SPAM
IP: 88.100.183.–
liborb
~ Redaktor
+18
Guru
3. 12. 2009   #18
-
0
-

Pro spuštění minimalizovaného (nebo úplně bez okna) musíš použít "jinou verzi" té metody Start, a to:

http://msdn.microsoft.com/en-us/library/aa326950%28VS.71%29.aspx

neboli vyplnit ProcessStartInfo (např. WindowStyle).


A teď se vrátím k tomu předávání parametrů :smile1: .
BAT soubor spouštíš:

Process.Start("C:\Program Files\SLOZKA\start.bat", "3") 

a předáváš mu tady parametr '3'.

Předpokládám, že podobně spouštíš i ten druhý EXE, nějak takto:
Process.Start("C:\Program Files\SLOZKA\ahoj.exe", "para1 para2 para3") 

jenom s tím, že jsem tam připsal předání 3 parametrů. No a pak v mainu ty parametry dostaneš (CmdArgs):

http://msdn.microsoft.com/en-us/library/3cf7t4xt%28VS.71%29.aspx


Nahlásit jako SPAM
IP: 85.207.166.–
Tomáš
~ Anonymní uživatel
511 příspěvků
3. 12. 2009   #19
-
0
-

Diky, povedlo se mi to tedy spustit v minimalizovaném i neviditelném.

To předávání parametrů, předat parametry EXE souboru se mi teda podařilo použít, ale vlastně to nevyužiju, protože já ten parametr toho otevíraného souboru neznám, muzate to byt uplne cokoli

Nahlásit jako SPAM
IP: 88.100.183.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 81 hostů

Podobná vlákna

Otevření souboru — založil Pavel

Otevření souboru — založil Jakub Vojáček

Otevření souboru — založil Tomass

Otevření souboru v C++ — založil turbo-snek

Otevření souboru — založil dc195

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý