Avatar billede sejer78 Nybegynder
07. juli 2005 - 12:05 Der er 15 kommentarer og
1 løsning

Kalde en application fra en anden application i samme solution

Er det muligt at kalde en grafisk applikation fra en anden grafisk applikation.
Avatar billede dr_chaos Nybegynder
07. juli 2005 - 12:48 #1
ja hvis du har 2 win forms.
Form1 og Form2.
Så kan du kalde Form2 fra form1 med:

Form2  f2 = new Form2();
f2.show;
Avatar billede sejer78 Nybegynder
07. juli 2005 - 12:56 #2
hej dr_chaos,
Tak for dit svar, men det er ikke lige det, jeg har brug for. Jeg har brug for at en selvstændig applikation kan kalde en anden selvstændig applikation i den samme solution, og helst også kunne overføre variabelværdier.
mvh,
sejer78
Avatar billede lifo Nybegynder
07. juli 2005 - 13:06 #3
altså du mener komunikation mellem to applikationer som du selv har lavet ?
så er der flere muligheder
jeg ville nok vælge Sockets eller Remoting
kommer and på hvad du vil
Avatar billede sejer78 Nybegynder
07. juli 2005 - 13:19 #4
hej lifo, tak for dit svar.

Ja, jeg mener kommunikation imellem to selvstændige applikationer i den samme solution. Jeg ønsker at kunne levere et varierende antal variable fra den ene applikaton til den anden.

Jeg forstår hvor du vil hen med sockets og remoting. Nu skal applikationerne køre lokalt på samme maskine. Er der mulighed for f.eks. at bruge named pipes lige som man gør under Unix?

Det bedste ville være noget mere enkelt. F.eks. kan man med consol applikationer bruge assemblies til et kald fra en app til en anden i samme solution, men jeg kan ikke lige gennemskue, hvordan det gøres med GUI'er.

Hvis du kan sætte mig på rette spor, enten selv eller med nogle gode links, er der points at hente :)

sejer78
Avatar billede lifo Nybegynder
07. juli 2005 - 13:45 #5
ved ikke nogen helt simpel metode

men om du vil have et eksempel på serializing af et objekt over en tcp forbindelse så kan jeg sende dig et eksempel projekt jeg lavede for kort tid siden
Avatar billede sejer78 Nybegynder
07. juli 2005 - 13:49 #6
hej lifo,

det er pænt af dig, men problematikken er ikke så meget serializing, det er selve det at være i en application og derfra kalde den anden, så den åbner, måske samtidig med at den første er åben inde bag ved eller måske lukkes den første, når den anden kaldes.

tak for dit input,
mvh sejer78
Avatar billede dr_chaos Nybegynder
07. juli 2005 - 14:07 #7
for lige at vende tilbage til det jeg skrev tidligere.
Jeg har lavet et project hvor vi åbnede et nyt vindue med en anden applikation når brugeren dobbelt klikkede et bestemt sted.
Menu er en ganske normal windows form.
public class Menu : Form
    {
public Menu()
        {
            InitializeComponent();

        }
}
Classform form er en anden form

konstruktør:
public Classform(Form owner)
        {
       
            this.Owner = owner;

            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            Menus = (Menu)this.Owner;
                }
vi sender this som er menu formen med til classform.
Det betyder at vi kan tilgå de funktioner som ligger i Menu direkte fra classform.
Vi start classform med:
Form Classform = new Classform(this);
                        Classform.Show();
Avatar billede dr_chaos Nybegynder
07. juli 2005 - 14:08 #8
i Classform konstruktøren kan du sende andre objekter med som integers, string eller lignende.
Menus er en private Menu Menus;
Altså en istantiering af Menu.
Avatar billede dr_chaos Nybegynder
07. juli 2005 - 14:10 #9
f.eks. kan vi disable den bagved liggende menu form med:
this.Owner.Enabled = false;
Så er det ikke muligt at opnå focus på Menu formen.
Avatar billede dr_chaos Nybegynder
07. juli 2005 - 14:10 #10
Hvis du vil kan jeg godt sende dig kilde koden.
Avatar billede lifo Nybegynder
07. juli 2005 - 14:17 #11
om du kun vil starte app2 mend nogle parametre fra app1 så kan det let gøres
public void startApp2()
{
Process.Start("app2.exe",var1.ToString());
}
og så main i app2 kan du fange parametrene
static void Main(string[] args)
        {
            // lav et eller andet med dine argumente
            // og send dem måske videre til From1´s konstruktor
            Application.Run(new Form1(args[0]));
        }
Avatar billede sejer78 Nybegynder
07. juli 2005 - 14:24 #12
hej dr_chaos,

tak for dit svar. Som jeg tidligere sagde handler det ikke om at kalde en form fra en anden, men om at kalde en applikation (et program) fra en anden (et andet program).

Forme og overførsel af variable imellem forme har jeg ingen problemer med. Og endnu en gang: Tak for dit svar.

mvh
sejer78
Avatar billede sejer78 Nybegynder
07. juli 2005 - 14:27 #13
hej lifo,

Du har gjort dig fortjent til et storknus :)

Lige nøjagtig hvad jeg har brug for. Bukker og takker. Gider du skrive et svar til mig, så du kan få dine velfortjente point?

mvh sejer78
Avatar billede lifo Nybegynder
07. juli 2005 - 14:29 #14
:-)
Avatar billede sejer78 Nybegynder
07. juli 2005 - 14:34 #15
hej lifo,

jeg har klikket på Accepter, men tilsyneladende sker der ikke noget. Kan du se om svaret er accepteret?

mvh sejer78
Avatar billede sejer78 Nybegynder
07. juli 2005 - 14:35 #16
hej lifo,

jeg har fundet ud af det. tak endnu en gang.

sejer78
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