Как я делаю Windows, знающий о сервисе, который я записал в Python?

Есть несколько вариантов:

  • Устанавливает класс AsyncTask в вашем классе Activity. Предполагая, что вы не используете одну и ту же задачу в нескольких действиях, это самый простой способ. Весь ваш код остается прежним, вы просто перемещаете существующий класс задач в вложенный класс внутри класса вашей деятельности.
    public class MyActivity extends Activity {
        // existing Activity code
        ...
    
        private class MyAsyncTask extends AsyncTask<String, Void, String> {
            // existing AsyncTask code
            ...
        }
    }
    
  • Создайте собственный конструктор для вашего AsyncTask, который ссылается на ваш Activity. Вы должны создать экземпляр задачи с чем-то вроде new MyAsyncTask(this).execute(param1, param2).
    public class MyAsyncTask extends AsyncTask<String, Void, String> {
        private Activity activity;
    
        public MyAsyncTask(Activity activity) {
            this.activity = activity;
        }
    
        // existing AsyncTask code
        ...
    }
    
10
задан Community 23 May 2017 в 11:47
поделиться

4 ответа

Как с большинством "осведомленных" вещей в Windows, ответом является "Реестр".

Смотрите на эту статью Microsoft Knowledge Base: http://support.microsoft.com/kb/103000

Поиск "Программы Win32, которая может быть запущена Сервисным Контроллером и это повинуется сервисному управляющему протоколу". Это - вид сервиса, которым Вы интересуетесь.

Сервисная регистрация (содержание KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice) содержит информацию о сервисе, включая вещи как его исполняемое местоположение, что сделать, когда это перестало работать (остановите ОС?), какие сервисы должны быть запущены перед этим, какого пользователя это выполняет как.

Относительно сервисного управляющего протокола, основного () Вашей программы, как предполагается, вызывает Windows API call, настраивая обратные вызовы для запуска, остановки, паузы для Вашего сервиса. То, что Вы делаете в тех обратных вызовах, является всем до Вас.

3
ответ дан 3 December 2019 в 20:44
поделиться

Вот код для установки сценария Python как услуга, записанный в Python :)

http://code.activestate.com/recipes/551780/

Это сообщение могло также выручить Вас:

http://essiene.blogspot.com/2005/04/python-windows-services.html

7
ответ дан 3 December 2019 в 20:44
поделиться

Не унавоживайте с реестром непосредственно. Пользователь инструмент командной строки SC. А именно, SC СОЗДАЮТ

    DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.
    USAGE:
        sc  [command] [service name]  ...

        The option  has the form "\\ServerName"
        Further help on commands can be obtained by typing: "sc [command]"
        Commands:
          query-----------Queries the status for a service, or
                          enumerates the status for types of services.
          queryex---------Queries the extended status for a service, or
                          enumerates the status for types of services.
          start-----------Starts a service.
          pause-----------Sends a PAUSE control request to a service.
          interrogate-----Sends an INTERROGATE control request to a service.
          continue--------Sends a CONTINUE control request to a service.
          stop------------Sends a STOP request to a service.
          config----------Changes the configuration of a service (persistant).
          description-----Changes the description of a service.
          failure---------Changes the actions taken by a service upon failure.
          qc--------------Queries the configuration information for a service.
          qdescription----Queries the description for a service.
          qfailure--------Queries the actions taken by a service upon failure.
          delete----------Deletes a service (from the registry).
          create----------Creates a service. (adds it to the registry).
          control---------Sends a control to a service.
          sdshow----------Displays a service's security descriptor.
          sdset-----------Sets a service's security descriptor.
          GetDisplayName--Gets the DisplayName for a service.
          GetKeyName------Gets the ServiceKeyName for a service.
          EnumDepend------Enumerates Service Dependencies.

        The following commands don't require a service name:
        sc   
          boot------------(ok | bad) Indicates whether the last boot should
                          be saved as the last-known-good boot configuration
          Lock------------Locks the Service Database
          QueryLock-------Queries the LockStatus for the SCManager Database
    EXAMPLE:
        sc start MyService
8
ответ дан 3 December 2019 в 20:44
поделиться

Можно использовать srvany.exe от Набора Ресурса Windows NT для создания определяемого пользователем сервиса, который обнаружится в административных средствах...

http://support.microsoft.com/kb/137890

Я использую этот метод для выполнения tracd (сценарий Python / сервер) для trac.

Вот некоторые очень четкие указания: http://www.tacktech.com/display.cfm?ttid=197

Это действительно требует некоторого редактирования реестра (очень минимальный и легкий), но позволит, Вы для создания любой командной строки / пишете сценарий сервиса окон.

0
ответ дан 3 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

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