gowinsvc

package module
v0.0.0-...-acded86 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2016 License: MIT Imports: 6 Imported by: 1

README

gowinsvc

Go 로 Windows Service 를 쉽게 만들게 도와주는 패키지

Demo

Demo Video

Setup

  1. mingw 설치

http://sourceforge.net/projects/mingw-w64/

  1. gowinsvc 패키지 다운로드

go get github.com/kernullist/gowinsvc

Example

1초마다 현재 시간을 출력하는 서비스 예제

package main

import (
	"time"

	"github.com/kernullist/gowinsvc"
)

type MySvc struct {
	service *gowinsvc.ServiceObject
}

func (mysvc MySvc) Serve(serviceExit <-chan bool) {
	for {
		select {
		case <-serviceExit:
			mysvc.service.OutputDebugString("[MYSERVICE] My Service Exit~~~\n")
			return
		case <-time.After(1 * time.Second):
			mysvc.service.OutputDebugString(
				"[MYSERVICE] Now : %d:%d:%d\n",
				time.Now().Hour(),
				time.Now().Minute(),
				time.Now().Second())
		}
	}
}

func main() {
	mysvc := new(MySvc)
	mysvc.service = gowinsvc.NewService("myservice")
	mysvc.service.StartServe(mysvc)
}

Documentation

Overview

gowinsvc project gowinsvc.go

gowinsvc project native.go

gowinsvc project types.go

Index

Constants

View Source
const (
	SERVICE_KERNEL_DRIVER     = 0x00000001
	SERVICE_WIN32_OWN_PROCESS = 0x00000010
)

Service Type

View Source
const (
	SERVICE_STOPPED = iota + 1
	SERVICE_START_PENDING
	SERVICE_STOP_PENDING
	SERVICE_RUNNING
	SERVICE_CONTINUE_PENDING
	SERVICE_PAUSE_PENDING
	SERVICE_PAUSED
)

Service State

View Source
const (
	SERVICE_CONTROL_STOP = iota + 1
	SERVICE_CONTROL_PAUSE
	SERVICE_CONTROL_CONTINUE
	SERVICE_CONTROL_INTERROGATE
	SERVICE_CONTROL_SHUTDOWN
	SERVICE_CONTROL_PARAMCHANGE
	SERVICE_CONTROL_NETBINDADD
	SERVICE_CONTROL_NETBINDREMOVE
	SERVICE_CONTROL_NETBINDENABLE
	SERVICE_CONTROL_NETBINDDISABLE
	SERVICE_CONTROL_DEVICEEVENT
	SERVICE_CONTROL_HARDWAREPROFILECHANGE
	SERVICE_CONTROL_POWEREVENT
	SERVICE_CONTROL_SESSIONCHANGE
	SERVICE_CONTROL_PRESHUTDOWN
	SERVICE_CONTROL_TIMECHANGE
	SERVICE_CONTROL_TRIGGEREVENT = 0x00000020
)

Service Control

View Source
const (
	SERVICE_ACCEPT_STOP                  = 0x00000001
	SERVICE_ACCEPT_PAUSE_CONTINUE        = 0x00000002
	SERVICE_ACCEPT_SHUTDOWN              = 0x00000004
	SERVICE_ACCEPT_PARAMCHANGE           = 0x00000008
	SERVICE_ACCEPT_NETBINDCHANGE         = 0x00000010
	SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020
	SERVICE_ACCEPT_POWEREVENT            = 0x00000040
	SERVICE_ACCEPT_SESSIONCHANGE         = 0x00000080
	SERVICE_ACCEPT_PRESHUTDOWN           = 0x00000100
	SERVICE_ACCEPT_TIMECHANGE            = 0x00000200
	SERVICE_ACCEPT_TRIGGEREVENT          = 0x00000400
)

Controls Accepted

Variables

This section is empty.

Functions

This section is empty.

Types

type SERVICE_STATUS

type SERVICE_STATUS struct {
	// contains filtered or unexported fields
}

SERVICE_STATUS

type SERVICE_STATUS_HANDLE

type SERVICE_STATUS_HANDLE uintptr

SERVICE_STATUS_HANDLE

type SERVICE_TABLE_ENTRY

type SERVICE_TABLE_ENTRY struct {
	// contains filtered or unexported fields
}

SERVICE_TABLE_ENTRY

type Service

type Service interface {
	Serve(serviceExit <-chan bool)
}

type ServiceObject

type ServiceObject struct {
	// contains filtered or unexported fields
}

ServiceObject

func NewService

func NewService(serviceName string) *ServiceObject

Create New ServiceObject Function

func (*ServiceObject) OutputDebugString

func (service *ServiceObject) OutputDebugString(format string, a ...interface{})

OutputDebugString Wrapper Function

func (*ServiceObject) StartServe

func (service *ServiceObject) StartServe(serviceInterface Service) bool

Serve Function

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL