Comments (5)
Can you provide a reproducible code?
from clipboard.
func WatchClipboard(ctx context.Context) {
err := clipboard.Init()
if err != nil {
logger.Error(ctx, err)
return
}
logger.Print(ctx, "新开始监听")
ch := clipboard.Watch(ctx, clipboard.FmtText)
for data := range ch {
// print out clipboard data whenever it is changed
//println(string(data))
s := string(data)
logger.Print(ctx, s)
if s != "" {
checkTxt(s)
logger.Print(ctx, s)
}
}
}
build exe ,and run in the win service
from clipboard.
run in the win service
github.com/kardianos/service
use the demo
from clipboard.
I dont' know how to run your code, but it looks to me that your desired case is very similar to this application: https://github.com/changkun/midgard, which was tested on window as a service.
from clipboard.
package main
import (
"context"
"flag"
"github.com/gogf/gf/v2/container/garray"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/glog"
"github.com/takama/daemon"
"golang.design/x/clipboard"
"os"
)
var content = garray.New(true)
var (
logger = glog.New()
)
type Service struct {
daemon.Daemon
}
// Manage by daemon commands or run the daemon
func (service *Service) Manage() (string, error) {
ctx := gctx.New()
// If received any kind of command, do it
if len(os.Args) > 1 {
logger.Print(ctx, "参数", os.Args[1])
command := os.Args[1]
switch command {
case "install":
return service.Install()
case "remove":
return service.Remove()
case "start":
return service.Start()
case "stop":
// No need to explicitly stop cron since job will be killed
return service.Stop()
case "status":
return service.Status()
default:
return "", nil
}
}
// Set up channel on which to send signal notifications.
// We must use a buffered channel or risk missing the signal
// if we're not ready to receive when the signal is sent.
p := &program{}
return service.Run(p)
}
type program struct{}
func (p *program) Start() {
// Start should not block. Do the actual work async.
go p.Run()
}
func (p *program) Run() {
ctx := gctx.New()
logger.SetPath(`C:\run\log`)
logger.Print(ctx, "启动")
//interrupt := make(chan os.Signal, 1)
//signal.Notify(interrupt, os.Interrupt, os.Kill, syscall.SIGTERM)
go func() {
WatchClipboard(ctx)
}()
}
func (p *program) Stop() {
// Stop should not block. Return with a few seconds.
}
func main() {
flag.Parse()
//v1, v2, v3 = GetSystemVersion()
//
ctx := gctx.New()
logger.SetPath(`C:\run\log`)
name := "GoDaemonService1"
srv, err := daemon.New(name, name, daemon.SystemDaemon)
if err != nil {
logger.Error(ctx, err)
os.Exit(1)
}
service := &Service{srv}
status, err := service.Manage()
if err != nil {
logger.Error(ctx, err)
os.Exit(1)
}
logger.Print(ctx, status)
}
func WatchClipboard(ctx context.Context) {
err := clipboard.Init()
if err != nil {
logger.Error(ctx, err)
return
}
logger.Print(ctx, "新开始监听")
textCh := clipboard.Watch(ctx, clipboard.FmtText)
for {
select {
case <-ctx.Done():
return
case text, ok := <-textCh:
if !ok {
return
}
logger.Print(ctx, string(text), 123)
}
}
}
this my code ,run in the service ,the clipboard.watch not work
from clipboard.
Related Issues (20)
- Remove Linux Cgo requirement HOT 1
- Segmentation violation using the gclip tool on Fedora HOT 8
- ld: error: duplicate symbol: when using with Fyne Android HOT 2
- Build fails with "error: implicit declaration of function 'nanosleep'" HOT 1
- bug: Image Write Doesn't Seem to Work on Linux and Windows (Ubuntu 20.04) HOT 10
- PNG data overwritten on Windows HOT 4
- How to watch copy file in windows10 HOT 3
- First thanks for your contribution. Maybe it's a stupid question, may i ask why can`t copy jpg image HOT 1
- Feature Request: Support to read and write raw content (without any formatting) from and into clipboards
- Housekeeping: update golang version and library dependencies HOT 2
- Windows 32-bit system will get stuck when executing. HOT 3
- Windows: Write an image encoded to PNG after being loaded as JPEG messes up the image HOT 5
- TestClipboardMultipleWrites only write text,no image. HOT 1
- The shortcut key Ctrl+C cannot be detected when copying images. HOT 4
- Remove cgo requirements on macOS HOT 2
- suggestion: making `Write` blocking instead of returning a channel HOT 30
- Add *BSD support
- Hangs / slow on Linux
- Don't panic when headless HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clipboard.