2012-07-13 3 views
0

Je suis en cours d'exécution EXE d'une application en utilisant une bibliothèque de classes à partir d'un service. Mais ce que je tente de faire est de cacher la fenêtre EXE de l'application. Voici mon code:Comment cacher la fenêtre d'application quand son EXE a été appelé d'un processus?

Dans ma fonction de bibliothèque de classes: -

public class MyClassLibrary 
{ 
    public void MyFunction() 
    { 
     Process process = new Process(); 
     process.StartInfo.FileName = "C:\Program Files (x86)\MyFolder\MyApp.exe"; 
     process.StartInfo.CreateNoWindow = true; 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     process.Start(); 
    } 
} 

Et c'est là que je vous appelle à partir de:

class MyClass : ServiceBase 
{ 
    ... 
    ... 
    ... 
    protected override void OnStart() 
    { 
     MyClassLibrary obj = new MyClassLibrary(); 
     obj.MyFunction(); 
    } 
} 

Malgré tout ce qui précède, la fenêtre est encore vu. Quelqu'un peut-il suggérer une solution?

Merci et salutations, Siddhant

+0

étrange, cela ne devrait pas se produire. Aussi; est l'interaction avec le paramètre de bureau pour votre service on ou off? Vérifiez vos propriétés de service –

+0

En fait, je pense que je vais modifier ma question un peu plus .. – Siddhant

+1

Peut être (C# - Lancer le processus Invisible [CreateNoWindow & WindowStyle ne fonctionne pas?)] (Http://stackoverflow.com/questions/3011209/ c-sharp-lancement-invisible-processus-createnowindow-windowstyle-non-travail) aide – Arne

Répondre

0

J'ai essayé votre code ne fonctionne pas, mais

Mais quand je l'essaye cette façon, il fonctionne très bien

string filePath = @"C:\Program Files (x86)\Internet Explorer\iexplore.exe";  
ProcessStartInfo pStartInfo = new ProcessStartInfo(filePath); 
pStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 

Process.Start(startInfo); 

Raison ça marche avec Process.Start (ProcessStartInfo) parce que associe les informations données avec un nouveau composant comme expliqué sur MSDN

0

J'ai les gars de réponse, grâce à this commentaire, que je suis arrivé de commentaire de Arne en haut de cette question .. Apparemment, il semble que le Process.StartInfo.UseShellExecute était censé à définir sur true.

Merci à tous pour votre aide! À votre santé!

0
string filePath = @"C:\Windows\System32\notepad.exe"; 
ProcessStartInfo pStartInfo = new ProcessStartInfo(filePath); 

**pStartInfo.UseShellExecute = true;** 

pStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
Process.Start(pStartInfo); 

Note: Set pStartInfo.UseShellExecute à true sinon vous obtenez une erreur

Questions connexes