|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Creating an Interactive Process
The following code fragment shows how a Win32 service process could use the STARTUPINFO structure in a CreateProcess call to create a process that has access to the user's interactive window station and default desktop. A noninteractive Win32 service could use this technique to interact with the logged on user. The new process could then use a named pipe or some other means of interprocess communication to communicate with the Win32 service.
To create an interactive process as shown in this example, a Win32 service must be logged in to the LocalSystem account.
#include STARTUPINFO si; PROCESS_INFORMATION ProcessInformation; si.cb = sizeof(STARTUPINFO); si.lpReserved = NULL; si.lpTitle = NULL; si.lpDesktop = "WinSta0\\Default"; si.dwX = si.dwY = si.dwXSize = si.dwYSize = 0L; si.dwFlags = 0;; si.wShowWindow = SW_SHOW; si.lpReserved2 = NULL; si.cbReserved2 = 0; if (CreateProcess(NULL, lpszCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &ProcessInformation)) { CloseHandle(ProcessInformation.hProcess);
CloseHandle(ProcessInformation.hThread); }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Создание Диалогового Процесса
Кодовый фрагмент следующего показывает как процесс услуги Win32 мог бы использовать структуру STARTUPINFO на вызове CreateProcess, чтобы создавать процесс, который имеет доступ к станции диалогового окна потребителя и встроенной настольной системы. Услуга noninteractive Win32 могла бы использовать эту технику, чтобы взаимодействовать с зарегистрированным на потребителе. Новый процесс мог затем использовать поименованную трубу или некоторые другие средства межпроцессовой связи, чтобы связываться с услугой Win32.
Чтобы создавать диалоговый процесс как показано в этом примере, услуга Win32 должна быть зарегистрирована в на счет LocalSystem.
#include si STARTUPINFO; PROCESS_INFORMATION ProcessInformation; si.cb = sizeof(STARTUPINFO); si.lpReserved = НЕДЕЙСТВИТЕЛЬНЫЙ; si.lpTitle = НЕДЕЙСТВИТЕЛЬНЫЙ; si.lpDesktop = "WinSta0\\Default"; si.dwX = si.dwY = si.dwXSize = si.dwYSize = 0L; si.dwFlags = 0;; si.wShowWindow = SW_SHOW; si.lpReserved2 = НЕДЕЙСТВИТЕЛЬНЫЙ; si.cbReserved2 = 0; если (CreateProcess(НЕДЕЙСТВИТЕЛЬНЫЙ, lpszCmdLine, НЕДЕЙСТВИТЕЛЬНЫЙ, НЕДЕЙСТВИТЕЛЬНЫЙ, ЛОЖНЫЙ, 0, НЕДЕЙСТВИТЕЛЬНЫЙ, НЕДЕЙСТВИТЕЛЬНЫЙ, &si, &ProcessInformation)) { CloseHandle(ProcessInformation.hProcess);
CloseHandle(ProcessInformation.hThread); }
|
|
|
|
| |