Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Pozivanje prg. i slanje fajlova kao ulazni argumenti

  • 11 odgovora
  • 2.965 pregleda

Najnovija ↓

Pozivanje prg. i slanje fajlova kao ulazni argumenti 08.08.2008. u 14:40 · pre 222 meseca
izmenjeno 1 put, poslednji put dava 08.08.2008. u 16:01
  1. dava08.08.2008. u 16:01zapis iz teksta poruke
#1
Predpostavljam da se to izvodi na sledeci nacin:
Napravim .exe (Console Application) koji u Main metodi ima (string[] args) i dalje u toj metodi napisem sta da radi sa fajlovima (args[n]). Uzeo sm prost primjer da sve fajlove (argumente) upise u novi .txt.

Code:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream fl = File.Create("D:\\aaa.txt");
            StreamWriter sw = new StreamWriter(fl);

            StringBuilder sb = new StringBuilder();

            foreach (string arg in args)
            {
                sb.Append(arg);
            }

            sw.WriteLine(sb);
            sw.Flush();
            sw.Close();
        }
    }
}


Ali to mi radi samo za jedan fajl. Gdje sam pogrijesio. Znam da je bila jedna tema vezana za ovo ali mi nije pomogla.

Nisam rekao da program pozivam tako sto sam njegov poziv smjestio u pop-up menu windows-a pa kad idem desni click na fajl ili vise fajlova zatim pozovem prg.
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 11.08.2008. u 11:29 · pre 221 mesec #2
Pa ti ovde i otvaras samo jedan fajl. Meni se cini da je tvoj kod u redu, ali da ti nisi dobro definisao sta bi hteo da uradis.
Potpis
Nije važno stići prvi. Važno je prvo da stigneš.
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 11.08.2008. u 13:36 · pre 221 mesec #3
Ne, ne, ovako. Hocu da markiram (selektujem) vise fajlova - idem desni klik - pa iz pop-up menu-ja pozovem svoj program. Tada bi trebalo da windows proslijedi te selektovane fajlove mom programu. Moj program ih zapisuje u novootvoreni fajl "D:\\aaa.txt".

Onaj kod gore, radi samo kad je u pitanju jedan fajl. Znaci desni klik na jedan fajl pa pozovem program, a program uredno kreira aaa.txt fajl koji sadrzi putanju i ime fajla koji sam mom programu poslao kao ulazni argument.
Ako mu posaljem vise fajlova, odnosno selektujem vise fajlova pa pozovem program, aaa.txt fajl ostane prazan.
Negdje je greska.
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 16.08.2008. u 19:49 · pre 221 mesec #4
Ne znam da li sam jasno objasnio stvar pa cu probati ovako:
kad u windows explorer-u selektujemo vise fajlova pa idemo desni klik pa recimo pozivamo winrar. Tada se starta winrar a kao argumente dobije te fajlove koje smo selektovali. Isto tako ja pozovem svoj program ali on ne radi ako selektujem vise fajlova. Kako da ovo izvedem?
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 04.09.2008. u 23:07 · pre 221 mesec #5
@dava Mozda ovo moze da ti pomogne ... Probao sam ovo o cemu pitas, napisao sam i iskompajlovao mali Console program u VB 2008 koji ispisuje CommandLine koji dobije od windowsa. Napravio sam 2 fajla sa ekstenzijom tst i podesio explorer da je default aplikacija kojom se otvaraju ovi fajlovi ova moja aplikacija.
Rezultat
Selektujem oba i odaberem (desno pa) Open i explorer mi pokrene dve instance moje aplikacije (svaka je dobila po jedan fajl kao ulazni parametar)
Selektujem oba pa desno pa Open With pa moj program. Explorer otvara jednu instancu programa sa putanjem fajla koji je ispod strelice.
OS je WinXP
poz
Potpis
HomePage http://www.eurora3d.com
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 06.09.2008. u 13:58 · pre 221 mesec #6
Bojim se da mi to nije od pomoci.
Citat:
Eurora3D Team
Selektujem oba i odaberem (desno pa) Open i explorer mi pokrene dve instance moje aplikacije (svaka je dobila po jedan fajl kao ulazni parametar)
Selektujem oba pa desno pa Open With pa moj program. Explorer otvara jednu instancu programa sa putanjem fajla koji je ispod strelice.
OS je WinXP
poz


Ovo je na neki nacin suprotno od mog zahtjeva, jer ti ovdje otvaras N broj instanci i za N broj parametara, a meni treba jedna istanca programa koja ce dobiti sve parametre.

Onaj prg. iz prvog posta fino radi kada se pozove iz komandne linije i iza njegovog poziva nanizemo argumente:
Code:

test.exe file1.txt file2.txt file34.txt


... ali kada ga pozovem na nacin koji ja hocu on ne odradi posao.

Ovo je mozda vise pitanje o windows-u kako radi u tim slucajevima.
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 06.09.2008. u 14:59 · pre 221 mesec #7
Citat:
dava: Ne znam da li sam jasno objasnio stvar pa cu probati ovako:
kad u windows explorer-u selektujemo vise fajlova pa idemo desni klik pa recimo pozivamo winrar. Tada se starta winrar a kao argumente dobije te fajlove koje smo selektovali. Isto tako ja pozovem svoj program ali on ne radi ako selektujem vise fajlova. Kako da ovo izvedem?


Moras da napravis shell-extenziju (COM objekat) koja ce da radi pod Windows explorer-om kao zasebni dll
i koja ce da poziva tvoj program sa prosledjenim fajlovima.











Potpis
Viva lollapalooza
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 08.09.2008. u 14:14 · pre 220 meseci #9
Tacno, ne postoji shell class za selekciju vise fajlova, "shell/command" registry tweak da pokrenes svoj executable kroz context meni moze da sa nakaci na class "*" (za bilo koju ekstenziju) ili u klasu odgovarajuce ekstenzije. Medjutim, command i open prepoznaje samo %1 parametar (sto je ime jednog fajla). Za selekciju vise fajlova mora da se napravi context menu handler COM i da se registruje u * klasi, a onda taj tvoj COM da pozove exe fajl sa naredjanim imenima fajlova koje dobije od shell-a. Ne postoji drugi nacin.

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 09.09.2008. u 14:58 · pre 220 meseci #10
Uobičajeno rešenje za ovo je:

- Napraviš tvoj program tako da detektuje kada je pokrenut više puta
- Svaka instanca koja se pokrene, a detektuje da je "glavni" već pokrenut, prosledi mu parametre preko NativeWin32Code.WM_COPYDATA poruke i ugasi se

Tako će glavna instanca dobiti sve parametre za više markiranih fajlova.

Primer za procesiranje poruke (slanje) je recimo ovde: http://bytes.com/forum/thread497679.html



Potpis
http://www.vesic.org | Blog: http://www.vesic.org/blog | Programming:
http://www.vesic.org/english/blog
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 09.09.2008. u 20:59 · pre 220 meseci #11
Hvala a odgovorima, a i za link. Proucicu pa kad dodjem do rjesenja postavicu ovdje. Samo nesto mi to ne izgleda kao najelegantnije rjesenje, pa zar na taj nacin rade recimo winamp, WMP, Winrar i svi ostali programi koji se mogu startati na taj nacin?
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Re: Pozivanje prg. i slanje fajlova kao ulazni argumenti 09.09.2008. u 21:18 · pre 220 meseci #12
Rade upravo preko COM context handlera, evo ti npr iz mog registry-a registracija za 7-Zip arhiver, koja registruje GUID {23170F69-40C1-278A-1000-000100020000} kao context handler:




A taj GUID je u stvari InProc COM objekat:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{23170F69-40C1-278A-1000-000100020000}]
@="7-Zip Shell Extension"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{23170F69-40C1-278A-1000-000100020000}\InprocServer32]
@="D:\\Program Files (x86)\\7-Zip\\7-zip.dll"
"ThreadingModel"="Apartment"


Tako da svi oni funkcionisu na taj nacin, i nije preterano tesko napraviti taj shell extension (mada ima dosta mesta u registriju na koja moras da se uselis), ali ne moze se zaobici.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme