Mam aplikację konsoli w języku C# i chcę, aby użytkownik nie mógł go zobaczyć.Jak ukryć aplikację konsoli w języku C#
Jak mogę to zrobić?
Mam aplikację konsoli w języku C# i chcę, aby użytkownik nie mógł go zobaczyć.Jak ukryć aplikację konsoli w języku C#
Jak mogę to zrobić?
przełożony jako aplikacja Windows Forms. Wtedy nie wyświetli żadnego interfejsu użytkownika, jeśli nie otworzysz jawnie żadnego systemu Windows.
Można pinvoke wezwanie do FindWindow(), aby uzyskać dojście do okna, a następnie zadzwonić ShowWindow(), aby ukryć okno LUB Uruchom aplikację z innego używając ProcessStartInfo.CreateNoWindow
Nie mam pojęcia, czy to działa, ale z pewnością brzmi śmiesznie! :) Zadzwoń ShowWindow(), aby ukryć ...;) – noocyte
To jednak działa. –
Zamiast hackowanego rozwiązania 'FindWindow()' wolałbym raczej [pobieranie uchwytu konsoli poprawnie] (http://stackoverflow.com/questions/3571627) ... – Timwi
Wygląda na to, że nie chcesz aplikacji konsoli, ale aplikacji GUI dla systemu Windows, która nie otwiera okna (widocznego).
Tworzenie aplikacji konsoli „MyAppProxy” z następującego kodu i umieścić MyAppProxy w rozruchu dir,
public static void main(string[] args)
{
Process p = new Process("MyApp");
ProcessStartUpInfo pinfo = new ProcessStartUpInfo();
p.StartupInfo = pinfo;
pinfo.CreateNoWindow = true;
pinfo.ShellExecute = false;
p.RaiseEvents = true;
AutoResetEvent wait = new AutoResetEvent(false);
p.ProcessExit += (s,e)=>{ wait.Set(); };
p.Start();
wait.WaitOne();
}
może trzeba naprawić pewne rzeczy tutaj nie zrobił sprawdzić poprawność kodu, nie może kompilacja, ponieważ niektóre nazwy właściwości mogą być różne, ale mam nadzieję, że otrzymasz pomysł.
To jest sposób, aby to zrobić. Sekretem jest właściwość CreateNoWindow. –
Utwórz usługę wcf i hostuj ją zgodnie ze swoimi potrzebami.
Myślę, że to jest mylące i całkowicie w złym kierunku. Zastosowania ukrytej aplikacji mogą być zupełnie inne niż usługi wcf. – ericosg
Najlepszym sposobem jest rozpoczęcie procesu bez okna.
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "echo Hello!";
//either..
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//or..
p.StartInfo.CreateNoWindow = true;
p.Start();
Zobacz inne prawdopodobnych rozwiązań -
Toggle Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden at runtime
i
Bring another processes Window to foreground when it has ShowInTaskbar = false
Na ProjectProperties określonych Typ wyjścia jak Windows Application.
Aby ukryć applicatin konsoli w C#, kiedy nic nie działa else użyć tego kodu:
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
Place FreeConsole() gdziekolwiek w kodzie, umieściłem go w init(), a linia poleceń jest ukryta.
Wygląda na to, że jest trochę bardziej trywialnie niż tylko to. Po odłączeniu procesu od konsoli za pomocą funkcji FreeConsole() konsola jest przerywana. Musisz pamiętać, aby przerwać proces po zakończeniu pracy, ponieważ nie ma dla ciebie konsoli, chyba że coś mi brakuje (daj mi znać, jeśli to zrobię). Mimo to bardzo schludna metoda. –
czy to usługa, którą chcesz uruchomić w tle? –
Tak, ale nie chcę uruchamiać go jako usługi, chcę go uruchomić jako .exe – menacheb
Jak uruchomi się aplikacja? – noocyte