#c# #desktop
#c# #Для рабочего стола
Вопрос:
я пытаюсь запустить процесс, но хочу, чтобы он был скрыт — так что, наверное, я хочу запустить его на другом рабочем столе.
public static void LaunchCommand2(string strCommand)
{
// Variables
PROCESS_INFORMATION processInfo = new PROCESS_INFORMATION();
STARTUPINFO startInfo = new STARTUPINFO();
Boolean bResult = false;
IntPtr hToken = IntPtr.Zero;
UInt32 uiResultWait = WAIT_FAILED;
IntPtr desktop = CreateDesktop("temp", IntPtr.Zero, IntPtr.Zero, 0, (long)DESKTOP_ACCESS_MASK.GENERIC_ALL, IntPtr.Zero);
startInfo.lpDesktop = "temp";
try
{
startInfo.cb = Marshal.SizeOf(startInfo);
startInfo.dwFlags = STARTF_USESHOWWINDOW;
startInfo.wShowWindow = 0;
unsafe
{
WTSQueryUserToken(WTSGetActiveConsoleSessionId(),out hToken);
}
bResult = Win32.CreateProcessAsUser(
hToken,
null,
strCommand,
IntPtr.Zero,
IntPtr.Zero,
false,
0,
IntPtr.Zero,
null,
ref startInfo,
out processInfo
);
if (!bResult) { throw new Exception("CreateProcessAsUser error #" Marshal.GetLastWin32Error()); }
// Wait for process to end
uiResultWait = WaitForSingleObject(processInfo.hProcess, INFINITE);
if (uiResultWait == WAIT_FAILED) { throw new Exception("WaitForSingleObject error #" Marshal.GetLastWin32Error()); }
}
finally
{
// Close all handles
CloseHandle(hToken);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
}
но это не работает. я не знаю, правильно ли я настраиваю новый рабочий стол на StartInfo. Заранее благодарю.
Комментарии:
1. Почему бы не использовать службу Windows?
2. Кроме того, если вы установите для «ShowInTaskbar» в своей форме значение false, оно не будет отображаться.
3. если вы хотите скрыть процесс, просто используйте the_StartInfo . WindowStyle = ProcessWindowStyle. Скрыто; the_StartInfo.UseShellExecute = false;
4. @Gusman что вы имеете в виду? как установить для него значение true?
5. Каждая форма имеет свойство с именем «ShowInTaskbar», если вы установите для него значение false и после form_load выполните команду Hide(), окно исчезнет и не будет иметь значка на панели задач, поэтому оно будет скрыто.