Службы Windows с окнами формируются в том же процессе

Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:

$keys = ['category_id', 'location_id', 'status_id'];

$operationAllowed = true;
foreach ($keys as $key) {
    if (!empty(

Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:

[110]REQUEST[$key])) { $operationAllowed = $operationAllowed && isInTaxonomy($recordId,

Я предполагаю, что вы можете использовать следующий подход - определить доступные ключи и перебрать их, а перебрать - собрать некоторые данные, например, так:

[110]REQUEST[$key]); } }
6
задан andrecarlucci 1 October 2008 в 19:01
поделиться

8 ответов

Два отдельных процесса, которые передают использование Вашей предпочтительной технологии. Сервисы с UI являются плохой идеей. Не идите по этой дороге - Вы будете сожалеть о нем.

У меня была очень хорошая сервисная коммуникация наличия результатов посредством простого сокетного соединения - документируют Ваш сервисный протокол хорошо, сохраняют его максимально простым, и это будет легче, чем Вы думаете.

18
ответ дан 8 December 2019 в 05:24
поделиться

Основные проблемы с интерактивными сервисами:

  • Безопасность - другой процесс мог отправить, это обменивается сообщениями через его насос сообщения, таким образом, получая доступ к СИСТЕМНОМУ процессу / ЛОКАЛЬНОМУ процессу.

  • Неполнота - интерактивный сервис никогда не видит сообщения оболочки, следовательно он не может взаимодействовать со значками области уведомлений.

Мы регулярно используем соединения TCP и соединения UDP для передачи информации от сервисов до другого exes, и, в некоторых случаях, MSMQ.

0
ответ дан 8 December 2019 в 05:24
поделиться

Я соглашаюсь с Greg. Возможно, Вы могли исследовать другой механизм IPC. Возможно, используйте сокеты и Ваш собственный протокол. Или, если Ваше сервисное приложение управления может только управлять сервисом на локальную машину, можно использовать именованные каналы (еще быстрее).

1
ответ дан 8 December 2019 в 05:24
поделиться

Это очень просто - Ваша потребность создать один поток для выполняет события приложения. Как это (исходный код для C++ с CLR, но Вашим может сделать это в C#):

ref class RunWindow{
public:
    static void MakeWindow(Object^ data)
    {
        Application::EnableVisualStyles();
        Application::SetCompatibleTextRenderingDefault(false); 

        Application::Run(gcnew TMainForm());
    };
};

И создайте поток в основном

int main(array<System::String ^> ^args)
{
    bool bService = RunAsService(L"SimpleServiceWithIconInTrayAndWindow");

    if (bService)
    {

        System::Threading::Thread ^thread = gcnew System::Threading::Thread(gcnew ParameterizedThreadStart(RunWindow::MakeWindow));
        thread->Start();

        ServiceBase::Run(gcnew simpleWinService());
        Application::Exit();
    }
    else
    {
        Application::EnableVisualStyles();
        Application::SetCompatibleTextRenderingDefault(false); 

        // Create the main window and run it
        Application::Run(gcnew TMainForm());
    }

    return 0;
}
0
ответ дан 8 December 2019 в 05:24
поделиться

На практике Вы не должны связывать свой сервис с управлением UI.

1
ответ дан 8 December 2019 в 05:24
поделиться

Вот способ смешивания Сервисов и Форм

http://www.codeproject.com/KB/system/SystemTrayIconInSvc.aspx

1
ответ дан 8 December 2019 в 05:24
поделиться

Я выяснил, как это сделать, из этой статьи (щелкните по ссылку «Изменить» в таблице методов).

string wmiPath = "Win32_Service.Name='" + SERVICE_NAME + "'";
using (ManagementObject service = new ManagementObject(wmiPath))
{
    object[] parameters = new object[11];
    parameters[5] = true;  // Enable desktop interaction
    service.InvokeMethod("Change", parameters);
}
1
ответ дан 8 December 2019 в 05:24
поделиться

У меня есть решение в несколько шагов, вот план

  1. мы не будем создавать проект службы с формой windows, вместо этого мы создадим решение visual studio, которое содержит проект службы windows, проект формы windows и проект настройки.

  2. Идея заключается в том, чтобы иметь базу данных или файл, или все, что вам удобно для хранения данных, в которой вы будете хранить параметры, которые ваша служба windows будет всегда использовать для запуска. Таким образом, ваша служба windows и ваше приложение windows form должны иметь возможность изменять и извлекать данные из нее.

  3. В главной форме вашего приложения Windows перетащите NotifyIcon на форму, во вкладке свойств найдите и выберите изображение .ico (вы можете создать его в visual studio, но это другая тема, которую вы можете найти в google или связаться со мной), которое будет отображаться в системном трее, когда вы запускаете приложение и главная форма активна или показана, попробуйте, запустите приложение.

  4. Добавьте их оба в качестве выходов в установочный проект решения. Чтобы добавить проект в установочный проект, они должны находиться в одном решении. Щелкните правой кнопкой мыши проект установки в проводнике решений, выделите add и затем выберите project output, добавьте выходы службы windows и формы windows, и вы увидите их в проводнике решений под проектом установки.

  5. Добавление службы windows идет дальше, но это другая тема, погуглите

  6. Создание ярлыка для приложения windows и добавление его в папку запуска - это тоже другая тема, погуглите или свяжитесь со мной.

    ПРИМЕЧАНИЕ Запрограммируйте вашу форму таким образом, чтобы кнопка закрытия не отображалась, а форма продолжала работать Me.visible = false и двойной щелчок по иконке в системном трее - единственный способ установить me.visible=true. Таким образом, при каждом запуске компьютера запускается и ваше приложение windows form, и visible сразу устанавливается в false, но так как у него есть notifyicon с изображением иконки, он будет отображаться в системном трее и двойной щелчок делает форму видимой для редактирования настроек, которые вы храните для службы, служба также запускается автоматически, так как вы установили это при настройке службы в проекте setup. моя почта iamjavademon@gmail.com для лучшей иллюстрации с помощью снимков экрана И объяснить полностью

1
ответ дан 8 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: