- Add wxauto package with WeChat UI automation and message handling capabilities - Implement job_extractor.py for automated job posting extraction from WeChat groups - Add job_extractor_gui.py providing graphical interface for job extraction tool - Create comprehensive documentation in Chinese covering GUI usage, multi-group support, and quick start guides - Add build configuration files (build_exe.py, build_exe.spec) for packaging as standalone executable - Include utility scripts for WeChat interaction (auto_send_msg.py, get_history.py, receive_file_transfer.py) - Add project configuration files (pyproject.toml, setup.cfg, requirements.txt) - Include test files (test_api.py, test_com_fix.py) for API and compatibility validation - Add Apache 2.0 LICENSE and comprehensive README documentation - Configure .gitignore to exclude build artifacts, logs, and temporary files
57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
from wxauto import uiautomation as uia
|
|
from wxauto.param import PROJECT_NAME
|
|
from wxauto.logger import wxlog
|
|
from abc import ABC, abstractmethod
|
|
import win32gui
|
|
from typing import Union
|
|
import time
|
|
|
|
class BaseUIWnd(ABC):
|
|
_ui_cls_name: str = None
|
|
_ui_name: str = None
|
|
control: uia.Control
|
|
|
|
@abstractmethod
|
|
def _lang(self, text: str):pass
|
|
|
|
def __repr__(self):
|
|
return f"<{PROJECT_NAME} - {self.__class__.__name__} at {hex(id(self))}>"
|
|
|
|
def __eq__(self, other):
|
|
return self.control == other.control
|
|
|
|
def __bool__(self):
|
|
return self.exists()
|
|
|
|
def _show(self):
|
|
if hasattr(self, 'HWND'):
|
|
win32gui.ShowWindow(self.HWND, 1)
|
|
win32gui.SetWindowPos(self.HWND, -1, 0, 0, 0, 0, 3)
|
|
win32gui.SetWindowPos(self.HWND, -2, 0, 0, 0, 0, 3)
|
|
self.control.SwitchToThisWindow()
|
|
|
|
def close(self):
|
|
try:
|
|
self.control.SendKeys('{Esc}')
|
|
except:
|
|
pass
|
|
|
|
def exists(self, wait=0):
|
|
try:
|
|
result = self.control.Exists(wait)
|
|
return result
|
|
except:
|
|
return False
|
|
|
|
class BaseUISubWnd(BaseUIWnd):
|
|
root: BaseUIWnd
|
|
parent: None
|
|
|
|
def _lang(self, text: str):
|
|
if getattr(self, 'parent'):
|
|
return self.parent._lang(text)
|
|
else:
|
|
return self.root._lang(text)
|
|
|
|
|