Testing for windows service
This commit is contained in:
68
lib/common.py
Normal file
68
lib/common.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# coding=utf-8
|
||||
# pyvncs
|
||||
# Copyright (C) 2017-2018 Matias Fernandez
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import sys
|
||||
from multiprocessing import Process, Value
|
||||
import subprocess
|
||||
import os
|
||||
import time
|
||||
import mmap
|
||||
import psutil
|
||||
|
||||
def isWindows():
|
||||
return sys.platform.startswith("win")
|
||||
|
||||
def isOSX():
|
||||
return sys.platform.startswith("darwin")
|
||||
|
||||
def isLinux():
|
||||
return sys.platform.startswith("linux")
|
||||
|
||||
class proc:
|
||||
def __init__(self):
|
||||
self.pid = Value('i', 0)
|
||||
self._process = None
|
||||
|
||||
def __del__(self):
|
||||
pass
|
||||
|
||||
def _setpid(self, pid):
|
||||
self.pid.value = pid
|
||||
|
||||
def getpid(self):
|
||||
return self.pid.value
|
||||
|
||||
def _newproc(self, cmd):
|
||||
pr = subprocess.Popen(cmd)
|
||||
#print("Launched forkproc Process ID:", str(pr.pid))
|
||||
self._setpid(pr.pid)
|
||||
|
||||
def run(self, *cmd):
|
||||
self._process = Process(target=self._newproc, args=(cmd))
|
||||
self._process.start()
|
||||
self._process.join()
|
||||
return self.pid.value
|
||||
|
||||
def terminate(self):
|
||||
if psutil.pid_exists(self.pid.value):
|
||||
p = psutil.Process(self.pid.value)
|
||||
p.terminate()
|
||||
self._process.terminate()
|
||||
|
||||
def waitproc(self):
|
||||
while psutil.pid_exists(self.pid):
|
||||
time.sleep(.25)
|
||||
29
lib/const.py
Normal file
29
lib/const.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# coding=utf-8
|
||||
# pyvncs
|
||||
# Copyright (C) 2017-2018 Matias Fernandez
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import sys
|
||||
|
||||
# constants workaround
|
||||
class _const:
|
||||
class ConstError(TypeError): pass
|
||||
def __setattr__(self, name, value):
|
||||
if name in self.__dict__.keys():
|
||||
raise (self.ConstError, "Can't rebind const(%s)" % name)
|
||||
self.__dict__[name]=value
|
||||
|
||||
sys.modules[__name__]=_const()
|
||||
|
||||
19
lib/encodings/common.py
Normal file
19
lib/encodings/common.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# coding=utf-8
|
||||
# pyvncs
|
||||
# Copyright (C) 2017-2018 Matias Fernandez
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class ENCODINGS:
|
||||
pass
|
||||
20
lib/encodings/cursor.py
Normal file
20
lib/encodings/cursor.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# coding=utf-8
|
||||
# pyvncs
|
||||
# Copyright (C) 2017-2018 Matias Fernandez
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import common
|
||||
|
||||
common.ENCODINGS.cursor = -239
|
||||
32
lib/encodings/raw.py
Normal file
32
lib/encodings/raw.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# coding=utf-8
|
||||
# pyvncs
|
||||
# Copyright (C) 2017-2018 Matias Fernandez
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import common
|
||||
from struct import *
|
||||
|
||||
def send_image(x, y, w, h, image):
|
||||
_buff = bytearray()
|
||||
rectangles = 1
|
||||
_buff.extend(pack("!BxH", 0, rectangles))
|
||||
_buff.extend(pack("!HHHH", x, y, w, h))
|
||||
_buff.extend(pack(">i", common.ENCODINGS.raw))
|
||||
_buff.extend( image.tobytes() )
|
||||
|
||||
return _buff
|
||||
|
||||
common.ENCODINGS.raw = 0
|
||||
common.ENCODINGS.raw_send_image = send_image
|
||||
28
lib/log.py
Normal file
28
lib/log.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# coding=utf-8
|
||||
# pyvncs
|
||||
# Copyright (C) 2017-2018 Matias Fernandez
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import logging
|
||||
logging.basicConfig(level=logging.DEBUG, format='[%(threadName)s] %(message)s')
|
||||
logger = logging.getLogger('pyvncs')
|
||||
|
||||
|
||||
def debug(*args):
|
||||
str = ""
|
||||
for s in args:
|
||||
str = "%s %s" % (str, s)
|
||||
str = str.strip()
|
||||
logger.debug(str)
|
||||
Reference in New Issue
Block a user