Avatar billede genvej Nybegynder
05. marts 2009 - 11:29 Der er 9 kommentarer

Overføre parametre fra en applikation til en anden

Hej...

Jeg har lavet et program som skal starte et andet program og samtidigt overføre en lang tekststreng som jeg kan bruge i det nyåbnede program.

Jeg har prøvet

System.Diagnostics.Process.Start("c:\min.exe","\"min virkeligt lange tekststreng\""); som giver en fejl fordi jeg ikke kan overføre særligt mange data på denne måde. Hvad skal jeg så gøre? kan jeg ikke aflevere et objekt som kan indeholde min lange streng??
Avatar billede windcape Praktikant
05. marts 2009 - 11:37 #1
Process p = new Process();
p.StartInfo.WorkingDirectory = @"C:\";
p.StartInfo.FileName        = "min.exe";

p.StartInfo.Arguments = @"virkelig lang tekststreng";
p.StartInfo.CreateNoWindow = false;
p.Start();
Avatar billede windcape Praktikant
05. marts 2009 - 11:39 #2
Og process er en del af System.Diagnostics.
Avatar billede mireigi Novice
05. marts 2009 - 11:48 #3
Du kan desværre ikke overføre objekter fra ét program til et andet via en kommandolinje. Hvis du har behov for at anvende meget lange tekststrenge, kan du omgå det ved at gemme tekststrengen i en .txt fil som du så indlæser i det andet program.


/// Denne kode gemmer filen med indhold ///

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

namespace Skriv_til_inputfil
{
    class Program
    {
        static void Main(string[] args)
        {
            string output = "Dette er en tekst til test af inputfil.";
            StreamWriter sw = new StreamWriter(@"C:\input.txt");
            sw.AutoFlush = true;
            sw.Write(output);
            sw.Close();
            Process.Start(@"C:\laes_fra_inputfil");
        }
    }
}



/// Denne code indlæser filen med indhold ///

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

namespace Skriv_til_inputfil
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "";
            StreamReader sr = new StreamReader(@"C:\input.txt");
            try
            {
                input = sr.ReadToEnd();
                FileInfo file = new FileInfo(@"C:\input.txt");
                file.Delete();
            }
            catch { }
            finally
            {
                sr.Close();
            }
        }
    }
}


Håber det kan hjælpe dig lidt.
Avatar billede windcape Praktikant
05. marts 2009 - 11:55 #4
I så fald kunne han jo ligeså godt skrive en form for serviceprovider der kan tage imod serializerede objekter (xml eller w/e).

Jeg tog udgangspunkt i at det var en 3rd parts program der skulle sendes kommandoer til.

Der er sådan ikke rigtig nogen begrænsning i længen af en commando, ihvertfald kan mine javac compiles (Java) blive rent lange :)
Avatar billede genvej Nybegynder
05. marts 2009 - 13:33 #5
windscape.... Du har ikke uanede mængder plads til rådighed i dit parameter (arguments) 255 eller lignende...

At skrive i en fil er for grimt da jeg sidder og laver til et citrix miljø.

Jeg kigger nu efter noget named pipes
Avatar billede windcape Praktikant
05. marts 2009 - 15:58 #6
Virkelig?

Jeg har lige testet med 1500 characters, det virkede uden problemer.
Avatar billede arne_v Ekspert
05. marts 2009 - 21:28 #7
Avatar billede arne_v Ekspert
05. marts 2009 - 21:40 #8
Hvis command line ikke duer saa er der:
A) fil
B) IPC
  1)  named pipes
  2)  raa sockets
  3)  remoting

Hvis du ved at:
  - apps altid vil koere paa samme maskine
  - maskinen vil altid have .NET 3.5
  - data kan vaere saa store at data skal streames
saa er named pipes et glimrende valg.
Avatar billede sph1nx Nybegynder
06. marts 2009 - 10:41 #9
Tag et kig på NAMED PIPES og WCF, det er hurtigt lige at få op og køre..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester