Gå til innhold

C#: Får ikke Process.Startinfo.WindowStyle til å fungere!


Anbefalte innlegg

Hei

 

Her har dere en liten del av koden min som skal starte ett program, la oss si notepad.

 

            Process proc = new Process();

           proc.StartInfo.FileName = appTarget;
           proc.StartInfo.Arguments = appArgument;
           proc.StartInfo.WorkingDirectory = appWorkingdir;
           proc.StartInfo.UserName = userName;
           proc.StartInfo.Domain = domain;
           proc.StartInfo.Password = password;
           proc.StartInfo.UseShellExecute = false;

           if (windowStyle == "Maksimert")
           {
               proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
           }
           else if (windowStyle == "Minimert")
           {
               proc.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
               Console.WriteLine("test");
           }
           else if (windowStyle == "Skjult")
           {
               proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
           }
           else
           {
               proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
           }

           proc.Start();

 

Om variabeln windowStyle er satt til f.eks "Minimert" kommer "test" i consollet, men notepad starter uansett ikke minimert. Om jeg prøver å starte som noen av de andre vil den heller ikke gjøre annet enn å starte som normal.

 

Noen som kan forstå hvorfor?

Endret av JV
Lenke til kommentar
Videoannonse
Annonse

Hvor er variabelen windowStyle deklarert og satt?

 

Jeg foreslår at du skriver ut windowStyle før proc.Start() med f.eks

System.Console.WriteLine(windowStyle);

Dette er for å sjekke at windowStyle inneholder det du faktisk forventer at den skal inneholde.

Endret av BlueEAGLE
Lenke til kommentar

Den er satt. Som du ser står det i konden at hvis windowStyle er satt til "Minimert" skal den sette riktig windowstyle PLUSS skrive "test" til consollet. Dette gjør den og da vil det også si at ProcessWindowStyle skal være satt til Minimized, men programmet åpnes ALLTID som Normal. Blir litt smårar av dette :)

 

La til dette i koden nå for å se at alt så bra ut (for sikkerthet skyld).

 

Console.WriteLine("windowStyle: " + windowStyle);
Console.WriteLine("proc.StartInfo.WindowStyle: " + proc.StartInfo.WindowStyle.ToString());
Console.ReadLine();

 

Og det jeg fikk ut var følgende:

 

windowStyle: Maksimert

proc.StartInfo.WindowStyle: Maximized

 

Altså, det BØR fungere, men notepad startet ikke opp maksimert.

Endret av JV
Lenke til kommentar
Den er satt. Som du ser står det i konden at hvis windowStyle er satt til "Minimert" skal den sette riktig windowstyle PLUSS skrive "test" til consollet. Dette gjør den og da vil det også si at ProcessWindowStyle skal være satt til Minimized, men programmet åpnes ALLTID som Normal. Blir litt smårar av dette :)

 

La til dette i koden nå for å se at alt så bra ut (for sikkerthet skyld).

 

Console.WriteLine("windowStyle: " + windowStyle);
Console.WriteLine("proc.StartInfo.WindowStyle: " + proc.StartInfo.WindowStyle.ToString());
Console.ReadLine();

 

Og det jeg fikk ut var følgende:

 

windowStyle: Maksimert

proc.StartInfo.WindowStyle: Maximized

 

Altså, det BØR fungere, men notepad startet ikke opp maksimert.

 

Hei

Sikkert en årsak til at du har satt UseShellExecute = false men er den satt til true eller fjernes så fungerer det.

Nå er ikke jeg veldig kjent med dette men etter min tankegang så betyr UseShellExecute = false det samme som at den ikke skal motta noe argument men mulig jeg tar feil her.

 

Knut

Lenke til kommentar
*borte*

 

Hei

Sikkert en årsak til at du har satt UseShellExecute = false men er den satt til true eller fjernes så fungerer det.

Nå er ikke jeg veldig kjent med dette men etter min tankegang så betyr UseShellExecute = false det samme som at den ikke skal motta noe argument men mulig jeg tar feil her.

 

Knut

 

Hei

 

Mulig det fungerer om jeg fjerner eller setter den til true ja, men jeg kan ikke gjøre det, for da vil jeg ikke få kjørt kommandoen som en annen bruker, noe som fjerner hele poenget med applikasjonen :)

 

Spørs om jeg bare nå legge fra meg å ha med mulighet for å velge windowstyle da, om ingen har noe gode forslag. Rart om det ikke fungerer pga UseShellExecute da jeg ikke klare å finne noe om dette når jeg søker litt rundt...

Endret av JV
Lenke til kommentar
Hvor er variabelen windowStyle deklarert og satt?

I .NET frameworket :p

Jeg tror du tar feil av string windowStyle og System.Diagnostics.Process.StartInfo.WindowStyle.

 

Kan se at den kan missforstås ja. Bør endre her.. fyfy å kun skille noe på stor eller liten bokstav... men det løser desverre ikke problemet mitt :(

 

Edit:

 

Nå har jeg egentlig skrellet bort alt av koden som har med WindowStyle å gjøre, dette pga at jeg ikke helt ser at jeg får løst det.

 

Men for all del, om noen kan fortelle meg hvorfor det ikke funker og hvordan jeg evt. kan løse det skrivere jeg gjerne koden på nytt :p

Endret av JV
Lenke til kommentar

Kan du ikke bare jukse litt og bruke ShowWindow for å minimere vinduet rett etter oppstart?

 

Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer

 

Dim Proc As New Process

Proc.StartInfo.UseShellExecute = False

 

Proc.StartInfo.WindowStyle = ProcessWindowStyle.Minimized

 

Proc.StartInfo.FileName = "notepad"

Proc.Start()

ShowWindow(Proc.MainWindowHandle, 6)

 

 

--- Er vbkode ja men satt akkurat å jobba med vb og gadd ikke skifte over :p

 

Edit: Det der fungerte heller dårlig. MainWindowHandle returnerer 0 uten at jeg skjønner hvorfor. Det skal uansett la seg gjøre viss en slik løsning er aktuell for deg.

Endret av The_Viper@EFNET
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...