# WebsysServer
**Repository Path**: wanghc123/WebsysServer
## Basic Information
- **Project Name**: WebsysServer
- **Description**: 医为插件管理程序,使用net开发,用于管理客户端程序,提供http服务。
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-05-26
- **Last Updated**: 2025-05-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# WebsysServer #
医为客户端管理,提供HTTP服务接口来调用本地服务,在现代浏览器上通过js调用本地服务功能。
操作系统环境Win7, Win10,Win11,关闭操作系统的UAC体验更佳
依赖开发环境:
1. 开发环境Framework4.0
2. 分三个工程,分别为服务功能,保护功能,安装功能
# 使用介绍
## 下载与更新
#### 1.下载[WebsysServerSetup.zip](//bsp.hisui.cn/static/WebsysServerSetup.zip)放到web\addins\plugin\WebsysServerSetup\目录下,最终文件路径为web\addins\plugin\WebsysServerSetup\WebsysServerSetup.zip
#### 2.把下载的zip包解压出的msi文件放到web\addins\plugin\目录下,最终文件路径为web\addins\plugin\WebsysServerSetup.msi
#### 3. iMedical8.4项目发送web\scripts\dhc.logon.js文件给基础平台组修改, 9.0不用修改
#### 4. 为了客户端能自动更新,需要进入demo - 头菜单 - 开发工具 - 插件管理界面找到CMgr记录并选中
- 4.1、修改版本号,最后一位增加1即可,如:当前是1.1.3.6,则修改成1.1.3.7(此版本号与msi文件版本号无关)
- 4.2、DLL文件路径框内容写入WebsysServerSetup/WebsysServerSetup.zip
- 4.3、点击保存
## 客户端支持静默安装(可选)
- 如果项目要求静默安装到固定目录,可以使用以下方式默认安装
- 编写bat文件,内容如下,放到msi同一层目录内,双击bat即可安装到指定目录
```bash
msiexec /i "d:\xx\WebsysServerSetup.msi" TARGETDIR="D:/Program Files\MediWay" /qb
```
或
```bash
"d:\xx\WebsysServerSetup.msi" /qb TARGETDIR="D:/Program Files\MediWay"
```
## 开发使用
### 1. 在`CSP`中引用中间件环境
```html
```
### 2.在`组件`中引用中间件环境(基础平台已处理)
```vb
d ##class(websys.AddInsTmpl).WriteInvokerJsCode()
```
### 3. Javascripts中调用
```js
function Fun(){
if ("undefined"====typeof EnableLocalWeb || 0====EnableLocalWeb || IsIE){
//未开启使用中间件 或 老项目,IE然仍用老的方式运行
}else{
//中间件运行,此处的DoctorSheet为配置界面的调用ID
DoctorSheet.showDoctorOrderSheetWindow("1","2","3","4","5");
}
}
```
[详细开发说明及示例](https://hisui.cn/wp-content/uploads/2022/06/Chrome中间件相关开发.pdf)
### 常见问题处理
- 调用对象都有notReturn属性,`DoctorSheet.notReturn=0`即有返回值调用,同步调用。默认为1异步调用
- 调用客户端方法报错,检查桌面快捷方法-插件管理-右键属性-兼容性以管理员身份运行此程序是否勾选
- 在只安装了WPS的客户端,使用Excel导出或打印时报错,可以把`CmdShell.EvalJs(mycode)`修改成`CmdShell.CurrentUserEvalJs(mycode)`再测试
- 安装成功后,HTTP管理界面可用但HTTPS管理界面不可用,可手动安装证书
1. private.pfx安装---本地计算机---到【个人】中,密码为12345678
2. private.crt安装---本地计算机---到【受信任的根证书颁发机构】中
3. netsh http add sslcert ipport=0.0.0.0:21996 certhash=dd8652db5c07076d154827273642604ca8405332 appid={9e977cef-28ef-4d4f-968a-bff2514384c4}
4. netsh http add sslcert ipport=0.0.0.0:21996 certhash=b1eb8df9b91cf3080fb30f41e959def25952376a appid={9e977cef-28ef-4d4f-968a-bff2514384c4}
- 不能自动下载插件包,console.log日志中提示`The requested security protocol is not supported` 或 `请求被中止:未能创建SSL/TLS安全通道`, 请检查本地客户端是否安装framework4.5或修改注册表 [查看原因与解决1](https://www.cnblogs.com/Charltsing/p/Net4TLS12.html),[查看原因与解决2](//hisui.cn/?p=332)。
- 安装时提示安装无效,检查是否被杀毒软件隔离,或被操作系统防火墙隔离
## 更新日志 ##
### 2025-01-10
#### 版本1.4.5
- 解决调用jar包时入参中包含dll字符时提示`处理请求异常:未将对象引用设置到对象的实例`问题
- 去除addins.port.exe文件,windows防火墙误以软件为病毒
#### 版本1.4.4
- 医为客户端服务只允许本机访问
### 2024-08-28
#### 版本1.4.3
- 支持国际化
- - 在英文操作系统显示英文
- - 在中文操作系统显示中文
#### 版本1.4.1
- 解决弹出form置顶问题
```js
// xx是任意的调用DLL插件的对象
xx.clear();
xx.notReturn = 0;
xx.focusLazyTime = 1500; /*延迟多长时间focus窗口。没有此行代码时默认:1000毫秒*/
xx.focusWindowName = "串码输入框"; /*使用窗口标题定位,例:串码输入框*/
// xx.focusClassName = "#32770 (对话框)"; /*使用类名定位,例:微信窗口WeChatMainWndForPC*/
xx.ReadPatCardNo(); /*具体方法*/
```
### 2024-08-14
#### 版本1.3.9
- 解决dll内存冲突,实现调用exe程序且拿到返回值 [4788656]
```javascript
// 所有插件管理界面的调用ID都用cmd方法
DomId.clear()
DomId.notReturn = 1
DomId.cmd("mytest.exe arg1 arg2",function(rtn){
// rtn //JSON返回值
})
```
### 2024-07-27
#### 版本1.3.8
- 读mispos失败问题 [4805120]
### 2024-07-08
#### 版本1.3.7
- 去除停止/启动菜单 [4748462]
### 2024-06-20
#### 版本1.3.6
- 安装exe安装时写入监听权限 [4681909]
### 2024-06-06
#### 版本1.3.5
- 获取客户端信息方法修改成获取当前使用的`IP`,`MacAddr`
### 2024-05-15
#### 版本1.3.4
- :bug: 调用jar文件时只返回一行结果问题处理,修改成:返回值多行
- 支持指定某版java来运行jar包 [4572996]
```js
helloTestObj.clear();
helloTestObj.cmd('"C:\\Program Files\\Java\\jre-1.8\\bin\\java.exe" -jar HelloTest.jar arg1 arg2',function(rtn){
console.log(rtn);
//{msg:"success",rtn:"第0个入参myArg1,第1个入参myArg2,~.~Hello Addins !",status:200}
});
```
#### 版本1.3.3
- 修改CurrentUserEvalJs方法,在非管理员权限下运行时,也可以运行 [4567511]
- 解决:当前操作系统为`非管理员`,运行中间件后,在仅安装WPS的电脑上导出excel问题 [4567511]
### 2024-04-30
#### 版本1.3.2
- :sparkles: 增加调用jar包中main方法功能
1. 编写java代码,并有main方法
```java
package com.imediway.his;
public class HelloTest {
public static void main(String[] args) {
for (int i=0;i
192
```
- 增加异步focus窗口功能,可以解决线程弹出窗口不置顶问题
- - 增加*focusWindowName*,*focusClassName*,*focusLazyTime*三个配置项解决focus窗口问题
调用示例代码:
```js
trakWebEdit3.clear(); /*清除上次调用数据*/
trakWebEdit3.notReturn = 1;
// trakWebEdit3.focusLazyTime = 1000; /*延迟多长时间focus窗口。没有此行代码时默认:1000毫秒*/
// trakWebEdit3.focusWindowName = "lpWindowName"; /*使用窗口标题定位*/
trakWebEdit3.focusClassName = "lpClassName"; /*使用类名定位,例:微信窗口WeChatMainWndForPC*/
trakWebEdit3.ShowLayout("1^1^^1","54429","","cn_iptcp:127.0.0.1[1972]:DHC-APP",function(rtn){});
/*注:ShowLayout方法配置时不勾【调用清除】*/
```
#### 2021-06-22
#### 版本1.0.32
- 提供获得扩展屏方法 :sparkles:
- 提供移动窗口方法 :sparkles:
- 去除"保护程序已经在运行"提示,去除"监听程序已经在运行"提示(河北中石油中心)
#### 2021-04-24
#### 版本1.0.31
- 默认安装exe,报无效安装程序问题。修改成使用cmd运行
- 关于修改
- 修改说明css
- 优化升级步骤
#### 2021-04-09
#### 版本1.0.30
+ 为解决某些电脑调用WPS时报Automation不能创建错误,提供CurrentUserEvalJs方法(九江中医,北京积水潭)
#### 2021-04-07
#### 版本1.0.29
+ CmdShell.EvalJs降低安全且设定在当前窗口弹出的界面 :sparkles:
#### 2021-02-21
#### 版本1.0.0.28
+ 增加mime管理 :sparkles:
+ 支持静态文件浏览 :sparkles:
+ 响应状态码支持`404`,`500` :bug:
#### 2021-02-07
#### 版本1.0.0.27
+ 中间件保护程序与医保客户端冲突问题处理
### 2019-06-16 ###
#### 版本1.0.0.0 ####
* http协议下POST请求本地服务
* 自动下载配置的文件
* 自动安装exe,msi
* 自动注册ocx,dll
* 反射调用本地程序及cmd