/JxCode.Windows

基于Win32API的C#类库。窗体控制、对话框、键鼠模拟、任务栏进度条、托盘等工具,可以使用在控制台、链接库、以及Unity3d等windows平台的框架下。

Primary LanguageC#MIT LicenseMIT

JxCode.Windows

基于Win32API编写的C#windows操作类库。拥有窗体控制、鼠标键盘的模拟、任务栏进度条、托盘等工具,可以使用在控制台、链接库、以及Unity等windows平台的框架下。

Contents

如何使用

两种方法:

  • 直接将Shared.JxCode.Windows共享项目添加至解决方案并引用。
  • JxCode.Windows项目编译成dll后,在项目中引用。

Win32API

封装了一些常用的API以及Enum。API来源于:

  • Kernel32
  • Shell32
  • User32
  • Winmm
  • comdlg32

可以在Native文件夹中找到,命名空间为JxCode.Windows.Native

WindowsForm

封装了窗体为WindowsForm对象,实现了一些Windows窗体控制与模拟的函数

  • 获取窗体句柄
  • 设置获取窗体标题
  • 设置获取窗体类名
  • 设置获取窗体大小与位置
  • 设置获取窗体父对象
  • 获取所有子窗体
  • 设置窗体小图标
  • 设置窗体置顶与还原
  • 最小化、最大化、还原操作
  • 设置窗体为焦点
  • 发送粘贴消息到窗体
  • 设置窗体激活状态(是否可用)
  • 设置获取窗体外观

可以通过多种工厂函数创建WindowsForm对象:

  • 从一个句柄创建
  • 搜寻一个窗口标题创建
  • 使用一个坐标来创建
  • 从当前鼠标位置指向的窗体创建
  • 从PID创建
  • 从当前程序的PID创建
  • 从调用线程的活动窗口创建

App

可以获取一个程序运行时的一些基础状态。

  • Path : 程序运行的工作路径
  • BasePath : 程序所在路径
  • FullPath : Exe的完整路径
  • EXEName : Exe的名字(不含扩展名)
  • PrevInstance : 是否有程序实例在运行

FileDialog

打开文件与保存文件对话框,使用comdlg32导入api,封装后只对外暴露两个方法:

public static string OpenFileDialog(
    string dirPath, 
    string filter,
    string title = "OpenFileDialog",
    string defaultFilename = "");
public static string SaveFileDialog(
    string dirPath,
    string filter = "All(*.*)|*.*",
    string title = "SaveFileDialog",
    string defaultFilename = "")

它们都返回一个string,如果打开/保存成功,返回文件完整路径,否则为null。

INI配置文件读写

IniHelper文件中有两个类,分别是:

  • INIFile
  • INISection

JxCode.Windows.Native导入了API,并封装了Kernel32.WritePrivateProfileStringKernel32.GetPrivateProfileString

使用构造public INIFile(string filepath)创建INI对象。

INIFile inifile = new INIFile("a.ini");
INISection section = inifile["section"];
section.SetValue("k","v");
string v = section.GetValue("k");

KeyboardUtil

键盘模拟

KeyboardUtil.Click(JxCode.Windows.Native.User32.VK_Keys.VK_W);

模拟W键按下

MCIPlayer

使用MCI来播放音频或者视频

MessageBox

使用User32中导出的函数,还原了MessageBox, MessageBoxButtons, DialogResult

DialogResult r = MessageBox.Show("text", "caption", MessageBoxButtons.OkCancel);

TaskbarProgress

设置windows任务栏进度条的状态的进度。
可以使用WindowsForm类中函数,从当前进程中获取窗体对象。

var wf = WindowsForm.CreateFromCurrentPid();
TaskbarProgress.SetState(wf, TaskbarProgress.TaskbarStates.Normal);
TaskbarProgress.SetValue(wf, 50, 100);

MouseUtil

  • 获取与设置鼠标位置
  • 模拟点击

NotifyIcon

托盘按钮

ProcessHandle

运行程序的一个句柄,可以方便的重定向输入输出流,设置程序响应与结束的回调,或终结程序。

RegeditConfiguration

快速简洁的注册表配置工具类
注册表的位置在HKCU/Software/当前执行的程序集名字

static string GetSetting(
    string key, 
    string appName = null);
static void SetSetting(
    string key, 
    string value, 
    string appName = null)

当appName为null时,则默认使用当前运行程序集的名字作为配置名。

拓展工具

Java信息获取(获取本机安装的所有Java信息)