Skip to content

Commit a3dd984

Browse files
[Add] service actions
1 parent 0981364 commit a3dd984

1 file changed

Lines changed: 112 additions & 15 deletions

File tree

Framework/Built_In_Automation/Desktop/Windows/BuiltInFunctions.py

Lines changed: 112 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import PIL
3434
from PIL import Image, ImageGrab
3535

36+
import psutil
3637

3738

3839
python_folder = []
@@ -1010,8 +1011,6 @@ def image_search(step_data_set):
10101011
text_screenshot = ''
10111012
easyocr_paragraph = ''
10121013

1013-
1014-
10151014
for left, mid, right in step_data_set:
10161015
left = left.strip().lower()
10171016
mid = mid.strip().lower()
@@ -1061,8 +1060,6 @@ def image_search(step_data_set):
10611060
if language == '':
10621061
language = 'en'
10631062

1064-
1065-
10661063
if parent_dataset:
10671064
parent = Get_Element(parent_dataset)
10681065
if type(parent) == str and parent == "zeuz_failed":
@@ -1267,7 +1264,6 @@ def new_image_text(step_data_set):
12671264

12681265
pytesseract.tesseract_cmd = os.environ["PROGRAMFILES"] + r"\Tesseract-OCR\tesseract.exe"
12691266

1270-
12711267
file_name = ""
12721268
resolution = ""
12731269
idx = 0
@@ -1283,8 +1279,6 @@ def new_image_text(step_data_set):
12831279
text_screenshot = ''
12841280
easyocr_paragraph = ''
12851281

1286-
1287-
12881282
for left, mid, right in step_data_set:
12891283
left = left.strip().lower()
12901284
mid = mid.strip().lower()
@@ -1318,7 +1312,6 @@ def seq(a, b):
13181312
print(c)
13191313
if c > 0.8:
13201314
return c
1321-
13221315
else:
13231316
return .00004
13241317

@@ -1365,8 +1358,6 @@ def seq(a, b):
13651358
return _Element(element)
13661359

13671360

1368-
1369-
13701361
def _scale_image(file_name, size_w, size_h):
13711362
""" This function calculates ratio and scales an image for comparison by _pyautogui() """
13721363

@@ -1513,10 +1504,6 @@ def Get_Element(data_set, wait_time=Shared_Resources.Get_Shared_Variables("eleme
15131504
elif 'easyocr_paragraph' in left:
15141505
easyocr_paragraph = right
15151506

1516-
1517-
1518-
1519-
15201507
_get_main_window(window_name)
15211508
for i in (("name", parent_name), ("class", parent_class), ("automationid", parent_automation), ("control", parent_control), ("path", parent_path), ("window", window_name), ("index", parent_index)):
15221509
if i[1]:
@@ -1535,7 +1522,6 @@ def Get_Element(data_set, wait_time=Shared_Resources.Get_Shared_Variables("eleme
15351522
element_image.append(("t_screenshot", "element parameter", str(text_screenshot)))
15361523
element_image.append(("easyocr_paragraph", "element parameter", str(easyocr_paragraph)))
15371524

1538-
15391525
if 'ntext' in element_image[0][0]:
15401526
result = new_image_text(element_image)
15411527
return result
@@ -2474,3 +2460,114 @@ def save_attribute_values_in_list(data_set):
24742460
return CommonUtil.Exception_Handler(sys.exc_info())
24752461

24762462

2463+
def ListServices():
2464+
import win32con
2465+
import win32service
2466+
import pywin32_system32, pywin32_testutil, pywin32_bootstrap
2467+
import win32serviceutil
2468+
resume = 0
2469+
accessSCM = win32con.GENERIC_READ
2470+
accessSrv = win32service.SC_MANAGER_ALL_ACCESS
2471+
#Open Service Control Manager
2472+
hscm = win32service.OpenSCManager(None, None, accessSCM)
2473+
#Enumerate Service Control Manager DB
2474+
typeFilter = win32service.SERVICE_WIN32
2475+
stateFilter = win32service.SERVICE_STATE_ALL
2476+
statuses = win32service.EnumServicesStatus(hscm, typeFilter, stateFilter)
2477+
x = []
2478+
for (short_name, desc, status) in statuses:
2479+
x.append([short_name, desc, status])
2480+
return x
2481+
# x=ListServices()
2482+
2483+
@logger
2484+
def List_services(data_set):
2485+
try:
2486+
sModuleInfo = inspect.currentframe().f_code.co_name + " : " + MODULE_NAME
2487+
variable_name = ""
2488+
for left, mid, right in data_set:
2489+
left = left.strip().lower()
2490+
right = right.strip()
2491+
if left == "get all services":
2492+
variable_name = right
2493+
2494+
import win32con
2495+
import win32service
2496+
accessSCM = win32con.GENERIC_READ
2497+
# Open Service Control Manager
2498+
hscm = win32service.OpenSCManager(None, None, accessSCM)
2499+
# Enumerate Service Control Manager DB
2500+
typeFilter = win32service.SERVICE_WIN32
2501+
stateFilter = win32service.SERVICE_STATE_ALL
2502+
statuses = win32service.EnumServicesStatus(hscm, typeFilter, stateFilter)
2503+
service_list = [st[0] for st in statuses]
2504+
return Shared_Resources.Set_Shared_Variables(variable_name, service_list)
2505+
except:
2506+
return CommonUtil.Exception_Handler(sys.exc_info())
2507+
2508+
@logger
2509+
def Start_service(data_set):
2510+
try:
2511+
sModuleInfo = inspect.currentframe().f_code.co_name + " : " + MODULE_NAME
2512+
service_name = ""
2513+
for left, mid, right in data_set:
2514+
left = left.strip().lower()
2515+
right = right.strip()
2516+
if left == "start service":
2517+
service_name = right
2518+
import win32serviceutil
2519+
import pywintypes
2520+
win32serviceutil.StartService(service_name)
2521+
CommonUtil.ExecLog(sModuleInfo, f"{service_name} - service started", 1)
2522+
return "passed"
2523+
except pywintypes.error as e:
2524+
if "An instance of the service is already running" in str(sys.exc_info()[1]):
2525+
CommonUtil.ExecLog(sModuleInfo, f"{service_name} - service Already started", 2)
2526+
return "passed"
2527+
return CommonUtil.Exception_Handler(sys.exc_info())
2528+
except:
2529+
return CommonUtil.Exception_Handler(sys.exc_info())
2530+
2531+
@logger
2532+
def Stop_service(data_set):
2533+
try:
2534+
sModuleInfo = inspect.currentframe().f_code.co_name + " : " + MODULE_NAME
2535+
service_name = ""
2536+
for left, mid, right in data_set:
2537+
left = left.strip().lower()
2538+
right = right.strip()
2539+
if left == "stop service":
2540+
service_name = right
2541+
import win32serviceutil
2542+
import pywintypes
2543+
win32serviceutil.StopService(service_name)
2544+
CommonUtil.ExecLog(sModuleInfo, f"{service_name} - service stopped", 1)
2545+
return "passed"
2546+
except pywintypes.error as e:
2547+
if "The service has not been started" in str(sys.exc_info()[1]):
2548+
CommonUtil.ExecLog(sModuleInfo, f"{service_name} - service has not been started", 2)
2549+
return "passed"
2550+
return CommonUtil.Exception_Handler(sys.exc_info())
2551+
except:
2552+
return CommonUtil.Exception_Handler(sys.exc_info())
2553+
2554+
@logger
2555+
def Service_status(data_set):
2556+
try:
2557+
sModuleInfo = inspect.currentframe().f_code.co_name + " : " + MODULE_NAME
2558+
service_name = ""
2559+
var_name = ""
2560+
for left, mid, right in data_set:
2561+
left = left.strip().lower()
2562+
right = right.strip()
2563+
if left == "get service status":
2564+
service_name = right
2565+
elif left == "variable name":
2566+
var_name = right
2567+
if not var_name:
2568+
CommonUtil.ExecLog(sModuleInfo, f"Variable name should be declared", 3)
2569+
return "zeuz_failed"
2570+
return Shared_Resources.Set_Shared_Variables(var_name, psutil.win_service_get(service_name).as_dict())
2571+
except:
2572+
return CommonUtil.Exception_Handler(sys.exc_info())
2573+

0 commit comments

Comments
 (0)