全局广播,键盘操作
20
cmonitor.sln
@@ -17,6 +17,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cmonitor.win", "cmonitor.wi
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmonitor.volume", "cmonitor.volume\cmonitor.volume.vcxproj", "{EDA47DD6-82DC-415C-A3CC-35A564FF0D0F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "notify.win", "notify.win\notify.win.csproj", "{CED6A505-AD7E-4F61-AB40-8D3973F431AB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -156,6 +158,24 @@ Global
|
||||
{EDA47DD6-82DC-415C-A3CC-35A564FF0D0F}.ReleaseLinux|x64.Build.0 = Release|x64
|
||||
{EDA47DD6-82DC-415C-A3CC-35A564FF0D0F}.ReleaseLinux|x86.ActiveCfg = Release|Win32
|
||||
{EDA47DD6-82DC-415C-A3CC-35A564FF0D0F}.ReleaseLinux|x86.Build.0 = Release|Win32
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Release|x64.Build.0 = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.ReleaseLinux|x64.Build.0 = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.ReleaseLinux|x86.ActiveCfg = Release|Any CPU
|
||||
{CED6A505-AD7E-4F61-AB40-8D3973F431AB}.ReleaseLinux|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -5,3 +5,8 @@ export const exec = (names, commands) => {
|
||||
names, commands
|
||||
});
|
||||
}
|
||||
export const keyboard = (names, key, type) => {
|
||||
return sendWebsocketMsg('command/Keyboard', {
|
||||
names, input: { key, type }
|
||||
});
|
||||
}
|
||||
8
cmonitor.web/src/apis/notify.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import { sendWebsocketMsg } from './request'
|
||||
|
||||
|
||||
export const notifyUpdate = (speed, msg) => {
|
||||
return sendWebsocketMsg('notify/update', {
|
||||
speed, msg
|
||||
});
|
||||
}
|
||||
|
Before Width: | Height: | Size: 77 KiB |
BIN
cmonitor.web/src/assets/bg3.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
1
cmonitor.web/src/assets/keyboard.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1695713240314" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14947" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400"><path d="M937.51 195.12h-852a80.09 80.09 0 0 0-80 80v473a80.09 80.09 0 0 0 80 80h852a80.09 80.09 0 0 0 80-80v-473a80.09 80.09 0 0 0-80-80z m20 553a20 20 0 0 1-20 20h-852a20 20 0 0 1-20-20v-473a20 20 0 0 1 20-20h852a20 20 0 0 1 20 20z" fill="#3e5a6e" p-id="14948"></path><path d="M197.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14949"></path><path d="M197.51 570.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14950"></path><path d="M373.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14951"></path><path d="M373.51 570.12l276 0 0 80-276 0 0-80Z" fill="#3e5a6e" p-id="14952"></path><path d="M550.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14953"></path><path d="M726.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14954"></path><path d="M726.51 570.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14955"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -112,13 +112,24 @@ span.split-pad10 {
|
||||
}
|
||||
|
||||
.scrollbar,
|
||||
.scrollbar-1,
|
||||
.scrollbar-4,
|
||||
.scrollbar-10 {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.scrollbar-1::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.scrollbar-1::-webkit-scrollbar-thumb {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.scrollbar::-webkit-scrollbar {
|
||||
width: 4px;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
@@ -147,6 +158,17 @@ span.split-pad10 {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
:root {
|
||||
--el-color-primary: var(--el-color-success) !important;
|
||||
--el-color-primary-light-3: var(--el-color-success-light-3) !important;
|
||||
--el-color-primary-light-5: var(--el-color-success-light-5) !important;
|
||||
--el-color-primary-light-7: var(--el-color-success-light-7) !important;
|
||||
--el-color-primary-light-8: var(--el-color-success-light-8) !important;
|
||||
--el-color-primary-light-9: var(--el-color-success-light-9) !important;
|
||||
--el-color-primary-dark-2: var(--el-color-success-dark-2) !important;
|
||||
}
|
||||
|
||||
|
||||
.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar {
|
||||
background: #f5f5f5
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import 'element-plus/theme-chalk/dark/css-vars.css'
|
||||
import {
|
||||
ChromeFilled, Promotion, Grid, ArrowDown, Upload, Download, EditPen, Delete, Refresh, BellFilled, Microphone
|
||||
, Position, Message, Bell, Mute, SwitchButton, Lock, DataLine, CirclePlus, QuestionFilled, Monitor, Sunny, Warning, Umbrella
|
||||
, ScaleToOriginal, Close
|
||||
} from '@element-plus/icons-vue'
|
||||
app.component(ChromeFilled.name, ChromeFilled);
|
||||
app.component(Promotion.name, Promotion);
|
||||
@@ -40,6 +41,8 @@ app.component(Monitor.name, Monitor);
|
||||
app.component(Sunny.name, Sunny);
|
||||
app.component(Warning.name, Warning);
|
||||
app.component(Umbrella.name, Umbrella);
|
||||
app.component(ScaleToOriginal.name, ScaleToOriginal);
|
||||
app.component(Close.name, Close);
|
||||
|
||||
|
||||
app.use(ElementPlus, { size: 'default' }).use(router).mount('#app');
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</el-select>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button type="primary" @click="handleUsername">确 定</el-button>
|
||||
<el-button type="success" @click="handleUsername" plain>确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dialog title="管理端口" destroy-on-close v-model="showPort" center :show-close="false" :close-on-click-modal="false" align-center width="70%">
|
||||
@@ -15,7 +15,7 @@
|
||||
<el-input v-model="state.port" style="width:auto"></el-input>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button type="primary" @click="handleConnect">确 定</el-button>
|
||||
<el-button type="success" @click="handleConnect" plain>确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -50,10 +50,14 @@ export default {
|
||||
transform: translateX(-50%) translateY(-50%);
|
||||
background-color: #fff;
|
||||
height: 100%;
|
||||
background-color: #333;
|
||||
background-image: url('../assets/bg3.webp');
|
||||
background-size: cover;
|
||||
background-position: center top;
|
||||
|
||||
.body {
|
||||
position: relative;
|
||||
background-color: #fafafa;
|
||||
// background-color: #fafafa;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="device-list-wrap absolute flex flex-column" id="device-list-wrap">
|
||||
<div class="items flex-1 relative scrollbar">
|
||||
<div class="items flex-1 relative scrollbar-1">
|
||||
<Items></Items>
|
||||
</div>
|
||||
<div class="foot">
|
||||
@@ -49,7 +49,7 @@ export default {
|
||||
<style lang="stylus" scoped>
|
||||
.device-list-wrap {
|
||||
.head {
|
||||
padding: 2rem 1rem 1rem 1rem;
|
||||
padding: 1rem 1rem 1rem 1rem;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f0f0f0;
|
||||
z-index: 999;
|
||||
@@ -57,14 +57,22 @@ export default {
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.items {
|
||||
padding: 0.6rem;
|
||||
transform-style: preserve-3d;
|
||||
perspective: 600px;
|
||||
padding-bottom: 11rem;
|
||||
}
|
||||
|
||||
.foot {
|
||||
position: absolute;
|
||||
z-index: 999;
|
||||
left: 1rem;
|
||||
right: 1rem;
|
||||
bottom: 1rem;
|
||||
left: 0.6rem;
|
||||
right: 0.6rem;
|
||||
bottom: 0.6rem;
|
||||
border-radius: 4px;
|
||||
|
||||
// background-color: rgba(255, 255, 255, 0.8);
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
@@ -73,21 +81,13 @@ export default {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
border: 1px solid rgba(255, 255, 255, 0.4);
|
||||
border: 1px solid rgba(18, 63, 76, 0.8);
|
||||
border-radius: 4px;
|
||||
background-color: rgba(186, 217, 255, 0.5);
|
||||
background-color: rgba(19, 67, 89, 0.5);
|
||||
// background-color: rgba(219, 234, 255, 0.5);
|
||||
// border: 1px solid rgba(18, 63, 76, 0.8);
|
||||
backdrop-filter: blur(2px);
|
||||
}
|
||||
}
|
||||
|
||||
.items {
|
||||
padding: 1rem 0.6rem;
|
||||
transform-style: preserve-3d;
|
||||
perspective: 600px;
|
||||
background-color: #333;
|
||||
background-image: url('../../assets/bg.webp');
|
||||
background-size: cover;
|
||||
padding-bottom: 13rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" @click="handleCancel">确 定</el-button>
|
||||
<el-button type="success" @click="handleCancel" plain>确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dialog class="options" title="详细标题" destroy-on-close v-model="state.showTitles" center align-center width="94%">
|
||||
@@ -42,7 +42,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" @click="handleCancel">确 定</el-button>
|
||||
<el-button type="success" @click="handleCancel" plain>确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<template>
|
||||
<a href="javascript:;" @click="handleWindows">
|
||||
<span>
|
||||
<el-icon>
|
||||
<Monitor />
|
||||
</el-icon>窗口
|
||||
</span>
|
||||
</el-icon>
|
||||
<span>窗口</span>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
@@ -29,6 +28,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.el-icon {
|
||||
vertical-align: middle;
|
||||
margin-top: -3px;
|
||||
}
|
||||
|
||||
span {
|
||||
display: inline-flex;
|
||||
line-height: 1;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</a>
|
||||
@@ -58,12 +58,14 @@ export default {
|
||||
}),
|
||||
})
|
||||
const handleCloseActive = () => {
|
||||
ElMessageBox.confirm('是否确定关闭焦点窗口?', '提示', {
|
||||
const title = props.data.ActiveWindow.Title;
|
||||
const pid = props.data.ActiveWindow.Pid;
|
||||
ElMessageBox.confirm(`是否确定关闭焦点窗口?【${title}】`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
exec([props.data.MachineName], [`taskkill /f /pid ${props.data.ActiveWindow.Pid}`]).then((res) => {
|
||||
exec([props.data.MachineName], [`taskkill /f /pid ${pid}`]).then((res) => {
|
||||
if (res) {
|
||||
ElMessage.success('操作成功');
|
||||
} else {
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -78,8 +78,9 @@ export default {
|
||||
});
|
||||
|
||||
const handleAdd = (item) => {
|
||||
item = item || { Name: '', ID: 0, Name: '' };
|
||||
item = item || { Name: '', ID: 0, Desc: '' };
|
||||
state.currentItem.Name = item.Name;
|
||||
state.currentItem.Desc = item.Desc;
|
||||
state.currentItem.ID = item.ID;
|
||||
state.showEdit = true;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
<template>
|
||||
<div>
|
||||
<a href="javascript:;" @click="handleRebotSystem">
|
||||
<el-icon>
|
||||
<Refresh />
|
||||
</el-icon>
|
||||
</a>
|
||||
<a href="javascript:;" @click="handleCloseSystem">
|
||||
<el-icon>
|
||||
<SwitchButton />
|
||||
</el-icon>
|
||||
</a>
|
||||
<a href="javascript:;" @click="handleKeyBoard">
|
||||
<img src="../../../../assets/keyboard.svg" width="20">
|
||||
</a>
|
||||
<a href="javascript:;" @click="handleCommand">
|
||||
<el-icon>
|
||||
<Position />
|
||||
<ScaleToOriginal />
|
||||
</el-icon>
|
||||
</a>
|
||||
</div>
|
||||
@@ -20,8 +18,6 @@
|
||||
|
||||
<script>
|
||||
import { injectPluginState } from '../../provide'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { exec } from '@/apis/command';
|
||||
export default {
|
||||
props: ['data'],
|
||||
setup(props) {
|
||||
@@ -32,34 +28,17 @@ export default {
|
||||
pluginState.value.command.showCommand = true;
|
||||
}
|
||||
|
||||
const handleRebotSystem = () => {
|
||||
handleSendCommand('确定重启系统吗?', `shutdown -r -f -t 00`);
|
||||
}
|
||||
const handleCloseSystem = () => {
|
||||
handleSendCommand('确定关闭系统吗?', `shutdown -s -f -t 00`);
|
||||
pluginState.value.command.items = [props.data];
|
||||
pluginState.value.command.showCloseSystem = true;
|
||||
}
|
||||
|
||||
const handleSendCommand = (desc, command, value) => {
|
||||
ElMessageBox.confirm(desc, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
exec([props.data.MachineName], [command]).then((res) => {
|
||||
if (res) {
|
||||
ElMessage.success('操作成功');
|
||||
} else {
|
||||
ElMessage.error('操作失败');
|
||||
}
|
||||
}).catch(() => {
|
||||
ElMessage.error('操作失败');
|
||||
});
|
||||
|
||||
}).catch(() => { });
|
||||
const handleKeyBoard = () => {
|
||||
pluginState.value.command.items = [props.data];
|
||||
pluginState.value.command.showKeyBoard = true;
|
||||
}
|
||||
|
||||
return {
|
||||
handleCommand, handleRebotSystem, handleCloseSystem
|
||||
handleCommand, handleCloseSystem, handleKeyBoard
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog class="options" title="执行命令" destroy-on-close v-model="state.show" center align-center width="94%">
|
||||
<div class="command-wrap flex">
|
||||
<div class="command-wrap common-command-wrap flex">
|
||||
<div class="items">
|
||||
<CheckBoxWrap ref="items" :data="globalData.devices" :items="state.items" label="MachineName" title="选择设备"></CheckBoxWrap>
|
||||
</div>
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" @click="handleCancel">确 定</el-button>
|
||||
<el-button type="success" plain @click="handleCancel">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -57,6 +57,8 @@ export default {
|
||||
{ label: '强制重启', value: 'shutdown -r -f -t 00' },
|
||||
{ label: '打开锁屏', func: llockUpdate, value: true },
|
||||
{ label: '关闭锁屏', func: llockUpdate, value: false },
|
||||
{ label: '开资源管理器', value: 'start explorer.exe' },
|
||||
{ label: '关资源管理器', value: 'taskkill /f /t /im "explorer.exe"' },
|
||||
{ label: '打开壁纸', func: wallpaperFunc, value: true },
|
||||
{ label: '关闭壁纸', func: wallpaperFunc, value: false },
|
||||
{ label: '禁用U盘', func: usbUpdate, value: true },
|
||||
@@ -113,6 +115,15 @@ export default {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="stylus">
|
||||
.common-command-wrap {
|
||||
.checkbox-wrap {
|
||||
li:nth-child(2n) {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="stylus" scoped>
|
||||
.command-wrap {
|
||||
height: 60vh;
|
||||
@@ -131,7 +142,7 @@ export default {
|
||||
|
||||
.btn {
|
||||
text-align: center;
|
||||
padding: 0.6rem 0;
|
||||
padding: 0.2rem 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-button size="small" plain dark @click="handleCommand">命令<el-icon>
|
||||
<Position />
|
||||
<ScaleToOriginal />
|
||||
</el-icon></el-button>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,17 +1,57 @@
|
||||
<template>
|
||||
<div>
|
||||
<ChooseDig v-if="pluginState.command.showCommand" v-model="pluginState.command.showCommand"></ChooseDig>
|
||||
<KeyBoard v-if="pluginState.command.showKeyBoard" v-model="pluginState.command.showKeyBoard"></KeyBoard>
|
||||
<el-dialog title="执行命令" destroy-on-close v-model="pluginState.command.showCloseSystem" center align-center width="94%">
|
||||
<div class="t-c">
|
||||
<el-button size="large" type="warning" plain @click="handleCloseSystem">强制关机</el-button>
|
||||
<el-button size="large" type="danger" plain @click="handleRebotSystem">强制重启</el-button>
|
||||
</div>
|
||||
<template #footer></template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { injectPluginState } from '../../provide'
|
||||
import ChooseDig from './ChooseDig.vue'
|
||||
import KeyBoard from './KeyBoard.vue'
|
||||
import { exec } from '@/apis/command';
|
||||
export default {
|
||||
components: { ChooseDig },
|
||||
components: { ChooseDig, KeyBoard },
|
||||
setup() {
|
||||
const pluginState = injectPluginState();
|
||||
return { pluginState }
|
||||
|
||||
|
||||
const handleRebotSystem = () => {
|
||||
handleSendCommand('确定重启系统吗?', `shutdown -r -f -t 00`);
|
||||
}
|
||||
const handleCloseSystem = () => {
|
||||
handleSendCommand('确定关闭系统吗?', `shutdown -s -f -t 00`);
|
||||
}
|
||||
|
||||
const handleSendCommand = (desc, command, value) => {
|
||||
ElMessageBox.confirm(desc, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
pluginState.value.command.showCloseSystem = false;
|
||||
const names = pluginState.value.command.items.map(c => c.MachineName);
|
||||
exec(names, [command]).then((res) => {
|
||||
if (res) {
|
||||
ElMessage.success('操作成功');
|
||||
} else {
|
||||
ElMessage.error('操作失败');
|
||||
}
|
||||
}).catch(() => {
|
||||
ElMessage.error('操作失败');
|
||||
});
|
||||
}).catch(() => { });
|
||||
}
|
||||
|
||||
return { pluginState, handleRebotSystem, handleCloseSystem }
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
139
cmonitor.web/src/views/device/plugins/command/KeyBoard.vue
Normal file
@@ -0,0 +1,139 @@
|
||||
<template>
|
||||
<div class="keyboard-wrap">
|
||||
<a href="javascript:;" class="close"><el-icon>
|
||||
<Close />
|
||||
</el-icon></a>
|
||||
<h3>{{state.name}}</h3>
|
||||
<ul>
|
||||
<template v-for="(item,index) in state.list" :key="index">
|
||||
<li class="flex">
|
||||
<template v-for="(item1,index1) in item" :key="index1">
|
||||
<div class="flex-1 key" :style="item1.style">
|
||||
<div class="inner" @mousedown="handleKeyDown(item1)" @mouseup="handleKeyUp(item1)">
|
||||
{{item1.text}}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</li>
|
||||
</template>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { computed, reactive } from 'vue'
|
||||
import { injectPluginState } from '../../provide';
|
||||
import { keyboard } from '@/apis/command';
|
||||
export default {
|
||||
setup() {
|
||||
|
||||
const pluginState = injectPluginState();
|
||||
const state = reactive({
|
||||
name: computed(() => pluginState.value.command.items.length > 0 ? pluginState.value.command.items[0].MachineName : 'unknow'),
|
||||
names: computed(() => pluginState.value.command.items.map(c => c.MachineName)),
|
||||
list: [
|
||||
|
||||
[
|
||||
{ text: 'Esc', style: 'flex:0.8', key: 0x1B }, { text: 'F1', key: 0x70 }, { text: 'F4', key: 0x73 }, { text: 'F5', key: 0x74 }, { text: 'F12', key: 0x7B }, { text: '-', key: 0x6D }, { text: '+', key: 0x6B }
|
||||
],
|
||||
[
|
||||
{ text: 'Tab', key: 0x9 }, { text: 'Q', key: 0x51 }, { text: 'W', key: 0x57 }, { text: 'E', key: 0x45 }, { text: 'Y', key: 0x59 }, { text: 'Ins', key: 0x2D }, { text: 'Back', key: 0x8 }
|
||||
],
|
||||
[
|
||||
{ text: 'Cap', key: 0x14 }, { text: 'A', key: 0x41 }, { text: 'S', key: 0x53 }, { text: 'D', key: 0x44 }, { text: 'L', key: 0x4C }, { text: 'Enter', key: 0xD }
|
||||
],
|
||||
[
|
||||
{ text: 'Shift', style: 'flex:1.5', key: 0xA0 }, { text: 'Z', key: 0x5A }, { text: 'X', key: 0x58 }, { text: 'C', key: 0x43 }, { text: 'V', key: 0x56 }, { text: 'Num', key: 0x90 }
|
||||
],
|
||||
[
|
||||
{ text: 'Ctrl', key: 0xA2 }, { text: 'Win', key: 0x5B }, { text: 'Alt', key: 18 }, { text: 'Space', key: 0x20 }
|
||||
]
|
||||
]
|
||||
});
|
||||
|
||||
const handleKeyDown = (item1) => {
|
||||
keyboard(state.names, item1.key, 0);
|
||||
}
|
||||
const handleKeyUp = (item1) => {
|
||||
keyboard(state.names, item1.key, 2);
|
||||
}
|
||||
|
||||
return { state, handleKeyDown, handleKeyUp }
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.keyboard-wrap {
|
||||
position: absolute;
|
||||
left: 0.6rem;
|
||||
right: 0.6rem;
|
||||
bottom: 0.6rem;
|
||||
border-radius: 4px;
|
||||
z-index: 99999;
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
border-radius: 4px;
|
||||
background-color: rgba(219, 234, 255, 0.5);
|
||||
border: 1px solid rgba(18, 63, 76, 0.8);
|
||||
backdrop-filter: blur(2px);
|
||||
}
|
||||
|
||||
a.close {
|
||||
position: absolute;
|
||||
right: -0.4rem;
|
||||
top: -0.8rem;
|
||||
color: #fff;
|
||||
background-color: rgba(255, 255, 255, 0.2);
|
||||
display: block;
|
||||
border-radius: 50%;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
width: 1.6rem;
|
||||
height: 1.6rem;
|
||||
text-align: center;
|
||||
line-height: 1.6rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
text-align: center;
|
||||
padding-top: 0.6rem;
|
||||
color: #164e51;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0.6rem;
|
||||
|
||||
.key {
|
||||
padding: 0.2rem;
|
||||
text-align: center;
|
||||
|
||||
.inner {
|
||||
border: 1px solid rgba(46, 90, 95, 0.8);
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
padding: 0.6rem 0;
|
||||
border-radius: 4px;
|
||||
color: #164e51;
|
||||
transition: 0.1s;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
&:active {
|
||||
background-color: rgba(46, 90, 95, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,5 +1,3 @@
|
||||
import { commandPing } from '../../../../apis/command'
|
||||
import { injectGlobalData } from '@/views/provide';
|
||||
export default {
|
||||
field() {
|
||||
return {}
|
||||
@@ -7,6 +5,8 @@ export default {
|
||||
state: {
|
||||
command: {
|
||||
showCommand: false,
|
||||
showCloseSystem: false,
|
||||
showKeyBoard: false,
|
||||
items: []
|
||||
}
|
||||
},
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<template>
|
||||
<a href="javascript:;" @click="handleDevices">
|
||||
<span><el-icon>
|
||||
<el-icon>
|
||||
<Grid />
|
||||
</el-icon>设备</span>
|
||||
</el-icon>
|
||||
<span>设备</span>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
@@ -25,6 +26,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.el-icon {
|
||||
vertical-align: middle;
|
||||
margin-top: -3px;
|
||||
}
|
||||
|
||||
span {
|
||||
display: inline-flex;
|
||||
line-height: 1;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
<span class="el-dropdown-link">
|
||||
<el-icon>
|
||||
<Umbrella />
|
||||
</el-icon>网络
|
||||
</el-icon>
|
||||
<span>网络</span>
|
||||
<el-icon class="el-icon--right">
|
||||
<arrow-down />
|
||||
</el-icon>
|
||||
@@ -42,15 +43,15 @@ export default {
|
||||
<style lang="stylus" scoped>
|
||||
.el-icon {
|
||||
font-size: 1.6rem;
|
||||
vertical-align: middle;
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.el-dropdown {
|
||||
color: #ebffef;
|
||||
color: #f5f5f5;
|
||||
font-size: 1.6rem;
|
||||
|
||||
.el-dropdown-link {
|
||||
display: inline-flex;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -31,7 +31,7 @@ export default {
|
||||
.speed {
|
||||
font-size: 1.3rem;
|
||||
padding-top: 0.1rem;
|
||||
color: #333;
|
||||
color: #666;
|
||||
|
||||
span:nth-child(1) {
|
||||
margin-right: 1rem;
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleEditSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<div class="slider-wrap flex flex-column">
|
||||
<div class="silder flex flex-1">
|
||||
<div class="flex-1">
|
||||
<el-slider @change="handleChangeLight" v-model="state.light" vertical height="100%" />
|
||||
<el-slider type="success" @change="handleChangeLight" v-model="state.light" vertical height="100%" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" @click="handleCancel">确 定</el-button>
|
||||
<el-button type="success" plain @click="handleCancel">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-col :span="4">
|
||||
<el-switch size="small" @click="handleLock" :model-value="data.LLock.Value" inline-prompt active-text="锁屏" inactive-text="锁屏" />
|
||||
<el-switch class="llock" size="small" @click="handleLock" :model-value="data.LLock.Value" inline-prompt active-text="锁屏" inactive-text="锁屏" />
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
@@ -41,4 +41,9 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped></style>
|
||||
<style lang="stylus" scoped>
|
||||
.el-switch.llock {
|
||||
// --el-switch-off-color: rgba(255, 255, 255, 0.1);
|
||||
--el-switch-on-color: rgba(33, 153, 33, 0.8);
|
||||
}
|
||||
</style>
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
<el-button type="success" plain :loading="state.loading" @click="handleSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -59,7 +59,7 @@ export default {
|
||||
loading: false
|
||||
});
|
||||
try {
|
||||
if (pluginState.value.message.items.length == 1 && pluginState.value.message.items[0].Share.UserName) {
|
||||
if (pluginState.value.message.items.length == 1 && pluginState.value.message.items[0].Share.UserName.Value) {
|
||||
state.prevs.push(`【${pluginState.value.message.items[0].Share.UserName.Value}】请注意上课纪律!`);
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
<template>
|
||||
<div class="share-lock-wrap" v-if="data.Share.Lock.Value.val == 'ask'">
|
||||
<div class="inner">
|
||||
<h3>请求解锁</h3>
|
||||
<h5>
|
||||
<span>【{{data.Share.Lock.TypeText}}】</span>
|
||||
<span v-if="data.Share.Lock.Value.type == 'remark-block'">【{{data.Share.Lock.Value.star}}】星</span>
|
||||
<span v-if="data.Share.Lock.Value.type == 'remark-cpp'">【{{data.Share.Lock.Value.star}}】星</span>
|
||||
<template v-if="data.Share.Lock.Value.type == 'remark-block' || data.Share.Lock.Value.type == 'remark-cpp'">
|
||||
<el-checkbox v-model="data.Share.Lock.Value.notify" size="small">广播</el-checkbox>
|
||||
</template>
|
||||
</h5>
|
||||
<div>
|
||||
<template v-if="data.Share.Lock.Value.type == 'remark-block' || data.Share.Lock.Value.type == 'remark-cpp'">
|
||||
<el-rate @change="handleStarChange" v-model="data.Share.Lock.Value.star" size="large" />
|
||||
</template>
|
||||
</div>
|
||||
<div>
|
||||
<el-popconfirm confirm-button-text="确认" cancel-button-text="取消" title="确认驳回请求吗?" @confirm="handleReject">
|
||||
<template #reference>
|
||||
@@ -26,6 +31,7 @@
|
||||
<script>
|
||||
import { reactive } from 'vue'
|
||||
import { shareUpdate } from '@/apis/share'
|
||||
import { notifyUpdate } from '@/apis/notify'
|
||||
import { ElMessage } from 'element-plus';
|
||||
export default {
|
||||
props: ['data'],
|
||||
@@ -57,6 +63,7 @@ export default {
|
||||
state.loading = true;
|
||||
let value = JSON.parse(JSON.stringify(props.data.Share.Lock.Value));
|
||||
value.val = 'confirm';
|
||||
props.data.Share.Lock.Value.notify = false;
|
||||
shareUpdate(props.data.MachineName, {
|
||||
index: props.data.Share.Lock.Index,
|
||||
value: JSON.stringify(value)
|
||||
@@ -64,6 +71,9 @@ export default {
|
||||
state.loading = false;
|
||||
if (res) {
|
||||
ElMessage.success('操作成功!');
|
||||
if (value.notify) {
|
||||
notifyUpdate(2, `恭喜[${props.data.Share.UserName.Value}]获得【${value.star}星】点评`);
|
||||
}
|
||||
} else {
|
||||
ElMessage.error('操作失败!');
|
||||
}
|
||||
@@ -73,8 +83,22 @@ export default {
|
||||
});
|
||||
}
|
||||
|
||||
const handleStarChange = () => {
|
||||
state.loading = true;
|
||||
let value = JSON.parse(JSON.stringify(props.data.Share.Lock.Value));
|
||||
shareUpdate(props.data.MachineName, {
|
||||
index: props.data.Share.Lock.Index,
|
||||
value: JSON.stringify(value)
|
||||
}).then((res) => {
|
||||
state.loading = false;
|
||||
}).catch(() => {
|
||||
state.loading = false;
|
||||
ElMessage.error('操作失败!');
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
data: props.data, state, handleReject, handleConfirm
|
||||
data: props.data, state, handleReject, handleConfirm, handleStarChange
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -88,7 +112,6 @@ export default {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
|
||||
// background-color: rgba(0, 0, 0, 0.2);
|
||||
.inner {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
@@ -101,16 +124,21 @@ export default {
|
||||
z-index: 2;
|
||||
border-radius: 0.4rem;
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.3rem;
|
||||
padding-bottom: 1rem;
|
||||
color: #fff;
|
||||
line-height: 1.6rem;
|
||||
|
||||
.el-checkbox {
|
||||
height: 1.6rem;
|
||||
vertical-align: bottom;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.el-rate.el-rate--large {
|
||||
height: inherit;
|
||||
padding: 0.6rem 0 1.6rem 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ export default {
|
||||
Share: {
|
||||
KeyBoard: { Index: 0, Value: '' },
|
||||
UserName: { Index: 1, Value: '' },
|
||||
Lock: { Index: 2, Value: { type: 'list', val: 'none', star: 0 }, TypeText: '' },
|
||||
Lock: { Index: 2, Value: { type: 'list', val: 'none', star: 0, notify: false }, TypeText: '' },
|
||||
|
||||
draw(canvas, ctx) {
|
||||
if (this.KeyBoard.Value) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-col :span="4">
|
||||
<el-switch size="small" @click="handleUSB" :model-value="data.Usb.Value" inline-prompt active-color="#ff0000" active-text="U盘" inactive-text="U盘" />
|
||||
<el-switch class="usb" size="small" @click="handleUSB" :model-value="data.Usb.Value" inline-prompt active-text="U盘" inactive-text="U盘" />
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
@@ -41,4 +41,10 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped></style>
|
||||
<style lang="stylus" scoped>
|
||||
// var (--el-switch-off-color)
|
||||
.el-switch.usb {
|
||||
// --el-switch-off-color: rgba(255, 255, 255, 0.1);
|
||||
--el-switch-on-color: rgba(255, 0, 0, 0.8) !important;
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-col :span="4">
|
||||
<el-switch size="small" @click="handleVolumeMute" :model-value="data.Volume.Mute" inline-prompt active-text="静音" inactive-text="静音" />
|
||||
<el-switch class="volume" size="small" @click="handleVolumeMute" :model-value="data.Volume.Mute" inline-prompt active-text="静音" inactive-text="静音" />
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
@@ -42,4 +42,9 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped></style>
|
||||
<style lang="stylus" scoped>
|
||||
.el-switch.volume {
|
||||
// --el-switch-off-color: rgba(255, 255, 255, 0.1);
|
||||
--el-switch-on-color: rgba(33, 153, 33, 0.8);
|
||||
}
|
||||
</style>
|
||||
@@ -41,7 +41,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn">
|
||||
<el-button @click="handleMute(true)">静音</el-button>
|
||||
<el-button @click="handleMute(true)">设置静音</el-button>
|
||||
</div>
|
||||
<div class="btn">
|
||||
<el-button @click="handleMute(false)">取消静音</el-button>
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="handleCancel">取 消</el-button>
|
||||
<el-button type="primary" @click="handleCancel">确 定</el-button>
|
||||
<el-button type="success" plain @click="handleCancel">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-col :span="4">
|
||||
<el-switch size="small" @click="handleWallpaper" :model-value="data.Wallpaper.Value" inline-prompt active-text="壁纸" inactive-text="壁纸" />
|
||||
<el-switch class="wallpaper" size="small" @click="handleWallpaper" :model-value="data.Wallpaper.Value" inline-prompt active-text="壁纸" inactive-text="壁纸" />
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@ export default {
|
||||
|
||||
<style lang="stylus">
|
||||
.el-dialog.is-align-center.options {
|
||||
margin-top: 3vh;
|
||||
margin-top: 1vh;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.foot-wrap {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.2);
|
||||
border-top: 1px solid rgba(18, 63, 76, 0.8);
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
}
|
||||
@@ -39,10 +39,10 @@ ul li {
|
||||
text-align: center;
|
||||
|
||||
a {
|
||||
padding: 1.7rem 0;
|
||||
padding: 1.2rem 0;
|
||||
font-size: 1.6rem;
|
||||
display: block;
|
||||
color: #ebffef;
|
||||
color: #f5f5f5;
|
||||
line-height: 1;
|
||||
|
||||
&:hover {
|
||||
|
||||
@@ -65,8 +65,8 @@ export default {
|
||||
padding: 0.6rem;
|
||||
|
||||
.el-button {
|
||||
background-color: rgba(58, 74, 102, 0.5);
|
||||
border-color: rgba(58, 74, 102, 0.2);
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
border-color: rgba(18, 63, 76, 0.8);
|
||||
color: #f5f5f5;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,15 +86,16 @@ export default {
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.device-item {
|
||||
border: 1px solid #ddd;
|
||||
// border: 1px solid #ddd;
|
||||
font-size: 1.6rem;
|
||||
background-color: #fff;
|
||||
// background-color: #fff;
|
||||
box-shadow: 0 0 4px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 4px;
|
||||
width: 98%;
|
||||
width: 100%;
|
||||
margin: 0 auto 1rem auto;
|
||||
position: relative;
|
||||
transition: 0.3s;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
border-radius: 4px;
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
@@ -104,6 +105,10 @@ export default {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
border: 1px solid rgba(251, 241, 242, 0.4);
|
||||
// background-color: rgba(255, 255, 255, 0.5);
|
||||
border-radius: 4px;
|
||||
// backdrop-filter: blur(2px);
|
||||
}
|
||||
|
||||
dt {
|
||||
@@ -115,7 +120,7 @@ export default {
|
||||
line-height: 2rem;
|
||||
|
||||
&.connected {
|
||||
color: green;
|
||||
color: var(--el-color-primary);
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
@@ -142,9 +147,9 @@ export default {
|
||||
right: 0.6rem;
|
||||
bottom: 0.6rem;
|
||||
overflow: hidden;
|
||||
background-color: #000;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 4px;
|
||||
border: 1px solid #ddd;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
box-sizing: border-box;
|
||||
|
||||
canvas {
|
||||
|
||||
@@ -95,7 +95,7 @@ export default {
|
||||
//哪个是在最中间的
|
||||
const middleItem = doms.sort((a, b) => a.offset - b.offset)[0];
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
let style = 'z-index:9;background-color:#fff;';
|
||||
let style = 'z-index:9;background-color:rgba(255,255,255,1);';
|
||||
const dist = Math.abs((middleItem.index - i));
|
||||
const opacity = 1 - Math.abs((middleItem.index - i)) / 10 * 2;
|
||||
const translateZ = 100 + (dist * 100);
|
||||
|
||||
@@ -30,6 +30,9 @@ using System.Reflection;
|
||||
using cmonitor.server.client.reports.share;
|
||||
using cmonitor.server.service.messengers.share;
|
||||
using cmonitor.server.client.reports.system;
|
||||
using cmonitor.server.service.messengers.notify;
|
||||
using cmonitor.server.client.reports.notify;
|
||||
using cmonitor.server.client.reports.command;
|
||||
|
||||
namespace cmonitor
|
||||
{
|
||||
@@ -140,6 +143,9 @@ namespace cmonitor
|
||||
serviceCollection.AddSingleton<LightReport>();
|
||||
serviceCollection.AddSingleton<ShareReport>();
|
||||
serviceCollection.AddSingleton<SystemReport>();
|
||||
serviceCollection.AddSingleton<NotifyReport>();
|
||||
serviceCollection.AddSingleton<CommandReport>();
|
||||
|
||||
|
||||
//服务
|
||||
serviceCollection.AddSingleton<TcpServer>();
|
||||
@@ -159,6 +165,7 @@ namespace cmonitor
|
||||
serviceCollection.AddSingleton<WallpaperMessenger>();
|
||||
serviceCollection.AddSingleton<LightMessenger>();
|
||||
serviceCollection.AddSingleton<ShareMessenger>();
|
||||
serviceCollection.AddSingleton<NotifyMessenger>();
|
||||
|
||||
//api
|
||||
serviceCollection.AddSingleton<RuleConfig>();
|
||||
@@ -175,6 +182,8 @@ namespace cmonitor
|
||||
serviceCollection.AddSingleton<WallpaperClientService>();
|
||||
serviceCollection.AddSingleton<LightClientService>();
|
||||
serviceCollection.AddSingleton<ShareClientService>();
|
||||
serviceCollection.AddSingleton<NotifyClientService>();
|
||||
|
||||
|
||||
//web
|
||||
serviceCollection.AddSingleton<IWebServer, WebServer>();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using cmonitor.server.service;
|
||||
using cmonitor.server.client.reports.command;
|
||||
using cmonitor.server.service;
|
||||
using cmonitor.server.service.messengers.command;
|
||||
using cmonitor.server.service.messengers.sign;
|
||||
using common.libs;
|
||||
using common.libs.extends;
|
||||
using MemoryPack;
|
||||
|
||||
@@ -11,16 +11,15 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
private readonly MessengerSender messengerSender;
|
||||
private readonly SignCaching signCaching;
|
||||
private readonly IClientServer clientServer;
|
||||
public CommandClientService(MessengerSender messengerSender, SignCaching signCaching, IClientServer clientServer)
|
||||
public CommandClientService(MessengerSender messengerSender, SignCaching signCaching)
|
||||
{
|
||||
this.messengerSender = messengerSender;
|
||||
this.signCaching = signCaching;
|
||||
this.clientServer = clientServer;
|
||||
}
|
||||
public async Task<bool> Exec(ClientServiceParamsInfo param)
|
||||
{
|
||||
ExecInfo info = param.Content.DeJson<ExecInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Commands);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -29,7 +28,27 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)CommandMessengerIds.Exec,
|
||||
Payload = MemoryPackSerializer.Serialize(info.Commands)
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task<bool> KeyBoard(ClientServiceParamsInfo param)
|
||||
{
|
||||
KeyBoardInfo info = param.Content.DeJson<KeyBoardInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Input);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
{
|
||||
await messengerSender.SendOnly(new MessageRequestWrap
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)CommandMessengerIds.KeyBoard,
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -44,4 +63,10 @@ namespace cmonitor.server.api.services
|
||||
public string[] Names { get; set; }
|
||||
public string[] Commands { get; set; }
|
||||
}
|
||||
|
||||
public sealed class KeyBoardInfo
|
||||
{
|
||||
public string[] Names { get; set; }
|
||||
public KeyBoardInputInfo Input { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ namespace cmonitor.server.api.services
|
||||
public async Task<bool> Update(ClientServiceParamsInfo param)
|
||||
{
|
||||
LLockUpdateInfo info = param.Content.DeJson<LLockUpdateInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Value);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -26,7 +27,7 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)LLockMessengerIds.Update,
|
||||
Payload = MemoryPackSerializer.Serialize(info.Value)
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace cmonitor.server.api.services
|
||||
public async Task<bool> Update(ClientServiceParamsInfo param)
|
||||
{
|
||||
LightInfo info = param.Content.DeJson<LightInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Value);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -28,8 +29,8 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)LightMessengerIds.Update,
|
||||
Payload = MemoryPackSerializer.Serialize(info.Value)
|
||||
});
|
||||
Payload = bytes
|
||||
}); ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
38
cmonitor/server/api/services/NotifyClientService.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using cmonitor.server.client.reports.notify;
|
||||
using cmonitor.server.service;
|
||||
using cmonitor.server.service.messengers.notify;
|
||||
using cmonitor.server.service.messengers.sign;
|
||||
using common.libs.extends;
|
||||
using MemoryPack;
|
||||
|
||||
namespace cmonitor.server.api.services
|
||||
{
|
||||
public sealed class NotifyClientService : IClientService
|
||||
{
|
||||
private readonly MessengerSender messengerSender;
|
||||
private readonly SignCaching signCaching;
|
||||
public NotifyClientService(MessengerSender messengerSender, SignCaching signCaching)
|
||||
{
|
||||
this.messengerSender = messengerSender;
|
||||
this.signCaching = signCaching;
|
||||
}
|
||||
public async Task<bool> Update(ClientServiceParamsInfo param)
|
||||
{
|
||||
NotifyInfo info = param.Content.DeJson<NotifyInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info);
|
||||
foreach (SignCacheInfo cache in signCaching.Get())
|
||||
{
|
||||
if (cache.Connected)
|
||||
{
|
||||
await messengerSender.SendOnly(new MessageRequestWrap
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)NotifyMessengerIds.Update,
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ namespace cmonitor.server.api.services
|
||||
public async Task<bool> Update(ClientServiceParamsInfo param)
|
||||
{
|
||||
UsbLockInfo info = param.Content.DeJson<UsbLockInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Value);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -26,7 +27,7 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)UsbMessengerIds.Update,
|
||||
Payload = MemoryPackSerializer.Serialize(info.Value)
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace cmonitor.server.api.services
|
||||
public async Task<bool> Update(ClientServiceParamsInfo param)
|
||||
{
|
||||
VolumeInfo info = param.Content.DeJson<VolumeInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Value);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -28,7 +29,7 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)VolumeMessengerIds.Update,
|
||||
Payload = MemoryPackSerializer.Serialize(info.Value)
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -39,6 +40,7 @@ namespace cmonitor.server.api.services
|
||||
public async Task<bool> Mute(ClientServiceParamsInfo param)
|
||||
{
|
||||
VolumeMuteInfo info = param.Content.DeJson<VolumeMuteInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(info.Value);
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -47,7 +49,7 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)VolumeMessengerIds.Mute,
|
||||
Payload = MemoryPackSerializer.Serialize(info.Value)
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,11 @@ namespace cmonitor.server.api.services
|
||||
public async Task<bool> Update(ClientServiceParamsInfo param)
|
||||
{
|
||||
WallpaperLockInfo info = param.Content.DeJson<WallpaperLockInfo>();
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(new WallpaperUpdateInfo
|
||||
{
|
||||
Value = info.Value,
|
||||
Url = info.Url
|
||||
});
|
||||
for (int i = 0; i < info.Names.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(info.Names[i], out SignCacheInfo cache) && cache.Connected)
|
||||
@@ -26,11 +31,7 @@ namespace cmonitor.server.api.services
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)WallpaperMessengerIds.Update,
|
||||
Payload = MemoryPackSerializer.Serialize(new WallpaperUpdateInfo
|
||||
{
|
||||
Value = info.Value,
|
||||
Url = info.Url
|
||||
})
|
||||
Payload = bytes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,6 @@ namespace cmonitor.server.client.reports.active
|
||||
|
||||
private readonly ActiveWindowTimeManager activeWindowTimeManager = new ActiveWindowTimeManager();
|
||||
private ActiveReportInfo report = new ActiveReportInfo();
|
||||
|
||||
private List<string> disallowTitles = new List<string>();
|
||||
public ActiveWindowReport(Config config)
|
||||
{
|
||||
if (config.IsCLient)
|
||||
@@ -43,22 +41,6 @@ namespace cmonitor.server.client.reports.active
|
||||
activeWindowTimeManager.Clear();
|
||||
}
|
||||
|
||||
public void DisallowRun(string[] names)
|
||||
{
|
||||
DisallowRun(false);
|
||||
DisallowRunClear();
|
||||
report.Count = names.Length;
|
||||
disallowTitles = names.Where(c => c.EndsWith(".exe") == false).ToList();
|
||||
if (names.Length > 0)
|
||||
{
|
||||
DisallowRun(true);
|
||||
DisallowRunFileNames(names);
|
||||
}
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] { "gpupdate /force" });
|
||||
});
|
||||
}
|
||||
|
||||
private void Timers()
|
||||
{
|
||||
@@ -69,15 +51,7 @@ namespace cmonitor.server.client.reports.active
|
||||
try
|
||||
{
|
||||
GetActiveWindow();
|
||||
if (disallowTitles.Count > 0 && disallowTitles.Contains(report.Title))
|
||||
{
|
||||
uint pid = report.Pid;
|
||||
_ = Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] { $"taskkill /f /pid {pid}" });
|
||||
});
|
||||
}
|
||||
else
|
||||
if (Disallow() == false)
|
||||
{
|
||||
activeWindowTimeManager.Update(report);
|
||||
}
|
||||
@@ -93,17 +67,9 @@ namespace cmonitor.server.client.reports.active
|
||||
}
|
||||
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
static extern IntPtr GetForegroundWindow();
|
||||
[DllImport("user32.dll")]
|
||||
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
|
||||
[DllImport("user32.dll")]
|
||||
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
|
||||
[DllImport("psapi.dll")]
|
||||
static extern int GetProcessImageFileName(IntPtr hProcess, StringBuilder lpImageFileName, int nSize);
|
||||
|
||||
const int nChars = 256;
|
||||
static StringBuilder buff = new StringBuilder(nChars);
|
||||
private StringBuilder buff = new StringBuilder(nChars);
|
||||
private void GetActiveWindow()
|
||||
{
|
||||
IntPtr handle = GetForegroundWindow();
|
||||
@@ -140,6 +106,53 @@ namespace cmonitor.server.client.reports.active
|
||||
report.Pid = 0;
|
||||
}
|
||||
|
||||
|
||||
private string[] disallowNames = Array.Empty<string>();
|
||||
public void DisallowRun(string[] names)
|
||||
{
|
||||
DisallowRun(false);
|
||||
DisallowRunClear();
|
||||
report.Count = names.Length;
|
||||
disallowNames = names;
|
||||
if (names.Length > 0)
|
||||
{
|
||||
DisallowRun(true);
|
||||
DisallowRunFileNames(names);
|
||||
}
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] { "gpupdate /force" });
|
||||
});
|
||||
}
|
||||
private bool Disallow()
|
||||
{
|
||||
if (disallowNames.Length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
ReadOnlySpan<char> filenameSpan = report.FileName.AsSpan();
|
||||
uint pid = report.Pid;
|
||||
foreach (string item in disallowNames)
|
||||
{
|
||||
ReadOnlySpan<char> nameSpan = item.AsSpan();
|
||||
bool result = item == report.Title
|
||||
|| (filenameSpan.Length >= nameSpan.Length && filenameSpan.Slice(filenameSpan.Length - nameSpan.Length, nameSpan.Length).SequenceEqual(nameSpan));
|
||||
if (result)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] { $"taskkill /f /pid {pid}" });
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private void DisallowInit()
|
||||
{
|
||||
CreateKey();
|
||||
@@ -243,6 +256,16 @@ namespace cmonitor.server.client.reports.active
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
static extern IntPtr GetForegroundWindow();
|
||||
[DllImport("user32.dll")]
|
||||
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
|
||||
[DllImport("user32.dll")]
|
||||
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
|
||||
[DllImport("psapi.dll")]
|
||||
static extern int GetProcessImageFileName(IntPtr hProcess, StringBuilder lpImageFileName, int nSize);
|
||||
|
||||
}
|
||||
|
||||
public sealed class ActiveReportInfo
|
||||
@@ -330,7 +353,6 @@ namespace cmonitor.server.client.reports.active
|
||||
}
|
||||
|
||||
|
||||
|
||||
[MemoryPackable]
|
||||
public sealed partial class ActiveWindowTimeReportInfo
|
||||
{
|
||||
|
||||
42
cmonitor/server/client/reports/command/CommandReport.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using MemoryPack;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace cmonitor.server.client.reports.command
|
||||
{
|
||||
public sealed class CommandReport : IReport
|
||||
{
|
||||
public string Name => "Command";
|
||||
|
||||
public object GetReports()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 键盘输入
|
||||
/// </summary>
|
||||
/// <param name="inputInfo"></param>
|
||||
public void KeyBoard(KeyBoardInputInfo inputInfo)
|
||||
{
|
||||
keybd_event(inputInfo.Key, 0, inputInfo.Type, 0);
|
||||
}
|
||||
|
||||
public const int KEYEVENTF_KEYDOWN = 0x0000;
|
||||
public const int KEYEVENTF_KEYUP = 0x0002;
|
||||
[DllImport("user32.dll")]
|
||||
public static extern void keybd_event(byte key, byte bscan, int dwFlags,int dwExtraInfo);
|
||||
}
|
||||
|
||||
[MemoryPackable]
|
||||
public partial struct KeyBoardInputInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// System.Windows.Forms.Keys
|
||||
/// </summary>
|
||||
public byte Key { get; set; }
|
||||
/// <summary>
|
||||
/// 0 down,2 up
|
||||
/// </summary>
|
||||
public int Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ namespace cmonitor.server.client.reports.light
|
||||
|
||||
public class BrightnessChangedEventArgs : EventArgs
|
||||
{
|
||||
public object newBrightness { get; set; } // new screen brightness value
|
||||
public object newBrightness { get; set; }
|
||||
|
||||
public BrightnessChangedEventArgs(object b)
|
||||
{
|
||||
|
||||
@@ -27,17 +27,17 @@ namespace cmonitor.server.client.reports.llock
|
||||
}
|
||||
|
||||
public void Update(bool open)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] { "taskkill /f /t /im \"llock.win.exe\"" });
|
||||
if (open)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] {
|
||||
$"start llock.win.exe {config.ShareMemoryKey} {config.ShareMemoryLength} {Config.ShareMemoryLLockIndex}"
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
37
cmonitor/server/client/reports/notify/NotifyReport.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using common.libs;
|
||||
using MemoryPack;
|
||||
|
||||
namespace cmonitor.server.client.reports.notify
|
||||
{
|
||||
public sealed class NotifyReport : IReport
|
||||
{
|
||||
public string Name => "Notify";
|
||||
|
||||
public NotifyReport()
|
||||
{
|
||||
}
|
||||
|
||||
public object GetReports()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public void Update(NotifyInfo notify)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] {
|
||||
$"start notify.win.exe {notify.Speed} \"{notify.Msg}\""
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
[MemoryPackable]
|
||||
public sealed partial class NotifyInfo
|
||||
{
|
||||
public byte Speed { get; set; }
|
||||
public string Msg { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace cmonitor.server.client.reports.screen
|
||||
{
|
||||
public sealed class ScreenReport : IReport
|
||||
{
|
||||
|
||||
public string Name => "Screen";
|
||||
private readonly ClientSignInState clientSignInState;
|
||||
private readonly MessengerSender messengerSender;
|
||||
@@ -92,7 +93,19 @@ namespace cmonitor.server.client.reports.screen
|
||||
IntPtr hdc = GetDC(IntPtr.Zero);
|
||||
if (hdc != IntPtr.Zero)
|
||||
{
|
||||
using Bitmap source = new Bitmap(GetDeviceCaps(hdc, DESKTOPHORZRES), GetDeviceCaps(hdc, DESKTOPVERTRES));
|
||||
int sourceWidth = GetDeviceCaps(hdc, DESKTOPHORZRES);
|
||||
int sourceHeight = GetDeviceCaps(hdc, DESKTOPVERTRES);
|
||||
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
|
||||
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
int scaleX = (int)(sourceWidth * 1.0 / screenWidth);
|
||||
int scaleY = (int)(sourceHeight * 1.0 / screenHeight);
|
||||
|
||||
int newWidth = (int)(sourceWidth * 1.0 / scaleX * config.ScreenScale);
|
||||
int newHeight = (int)(sourceHeight * 1.0 / scaleY * config.ScreenScale);
|
||||
int curWidth = (int)(sourceWidth * config.ScreenScale * config.ScreenScale);
|
||||
|
||||
using Bitmap source = new Bitmap(sourceWidth, sourceHeight);
|
||||
using (Graphics g = Graphics.FromImage(source))
|
||||
{
|
||||
g.CopyFromScreen(0, 0, 0, 0, source.Size, CopyPixelOperation.SourceCopy);
|
||||
@@ -104,7 +117,7 @@ namespace cmonitor.server.client.reports.screen
|
||||
if (pci.flags == CURSOR_SHOWING)
|
||||
{
|
||||
var hdc1 = g.GetHdc();
|
||||
DrawIconEx(hdc1, pci.ptScreenPos.x - 0, pci.ptScreenPos.y - 0, pci.hCursor, 0, 0, 0, IntPtr.Zero, DI_NORMAL);
|
||||
DrawIconEx(hdc1, pci.ptScreenPos.x * scaleX, pci.ptScreenPos.y * scaleY, pci.hCursor, curWidth, curWidth, 0, IntPtr.Zero, DI_NORMAL);
|
||||
g.ReleaseHdc();
|
||||
}
|
||||
}
|
||||
@@ -114,8 +127,7 @@ namespace cmonitor.server.client.reports.screen
|
||||
ReleaseDC(IntPtr.Zero, hdc);
|
||||
|
||||
|
||||
int newWidth = (int)(source.Width * config.ScreenScale);
|
||||
int newHeight = (int)(source.Height * config.ScreenScale);
|
||||
|
||||
Bitmap bmp = new Bitmap(newWidth, newHeight);
|
||||
bmp.SetResolution(source.HorizontalResolution, source.VerticalResolution);
|
||||
using Graphics graphic = Graphics.FromImage(bmp);
|
||||
@@ -270,8 +282,12 @@ namespace cmonitor.server.client.reports.screen
|
||||
}
|
||||
|
||||
|
||||
const int DESKTOPVERTRES = 117;
|
||||
const int DESKTOPHORZRES = 118;
|
||||
private const int DESKTOPVERTRES = 117;
|
||||
private const int DESKTOPHORZRES = 118;
|
||||
private const int LOGPIXELSX = 88;
|
||||
private const int LOGPIXELSY = 90;
|
||||
private const int SM_CXSCREEN = 0;
|
||||
private const int SM_CYSCREEN = 1;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
static extern IntPtr GetDC(IntPtr ptr);
|
||||
|
||||
@@ -27,17 +27,18 @@ namespace cmonitor.server.client.reports.llock
|
||||
}
|
||||
|
||||
public void Update(bool open, string url)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] { "taskkill /f /t /im \"wallpaper.win.exe\"" });
|
||||
if (open)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
CommandHelper.Windows(string.Empty, new string[] {
|
||||
$"start wallpaper.win.exe \"{url}\" {config.ShareMemoryKey} {config.ShareMemoryLength} {Config.ShareMemoryKeyBoardIndex} {Config.ShareMemoryWallpaperIndex}"
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using cmonitor.server.service.messengers.command;
|
||||
using cmonitor.server.client.reports.command;
|
||||
using cmonitor.server.service.messengers.command;
|
||||
using common.libs;
|
||||
using MemoryPack;
|
||||
|
||||
@@ -6,8 +7,11 @@ namespace cmonitor.server.service.messengers.report
|
||||
{
|
||||
public sealed class CommandMessenger : IMessenger
|
||||
{
|
||||
public CommandMessenger()
|
||||
|
||||
private readonly CommandReport commandReport;
|
||||
public CommandMessenger(CommandReport commandReport)
|
||||
{
|
||||
this.commandReport = commandReport;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +27,12 @@ namespace cmonitor.server.service.messengers.report
|
||||
connection.Write(Helper.TrueArray);
|
||||
}
|
||||
|
||||
|
||||
[MessengerId((ushort)CommandMessengerIds.KeyBoard)]
|
||||
public void KeyBoard(IConnection connection)
|
||||
{
|
||||
KeyBoardInputInfo command = MemoryPackSerializer.Deserialize<KeyBoardInputInfo>(connection.ReceiveRequestWrap.Payload.Span);
|
||||
commandReport.KeyBoard(command);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
public enum CommandMessengerIds : ushort
|
||||
{
|
||||
Exec = 200,
|
||||
KeyBoard = 201,
|
||||
|
||||
None = 299,
|
||||
}
|
||||
|
||||
22
cmonitor/server/service/messengers/notify/NotifyMessenger.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using cmonitor.server.client.reports.notify;
|
||||
using MemoryPack;
|
||||
|
||||
namespace cmonitor.server.service.messengers.notify
|
||||
{
|
||||
public sealed class NotifyMessenger : IMessenger
|
||||
{
|
||||
private readonly NotifyReport notifyReport;
|
||||
|
||||
public NotifyMessenger(NotifyReport notifyReport)
|
||||
{
|
||||
this.notifyReport = notifyReport;
|
||||
}
|
||||
|
||||
[MessengerId((ushort)NotifyMessengerIds.Update)]
|
||||
public void Update(IConnection connection)
|
||||
{
|
||||
notifyReport.Update(MemoryPackSerializer.Deserialize<NotifyInfo>(connection.ReceiveRequestWrap.Payload.Span));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace cmonitor.server.service.messengers.notify
|
||||
{
|
||||
public enum NotifyMessengerIds : ushort
|
||||
{
|
||||
Update = 1200,
|
||||
|
||||
None = 1299
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 515 KiB |
1
cmonitor/web/css/313.a96b078f.css
Normal file
@@ -1 +0,0 @@
|
||||
*{margin:0;padding:0;list-style:none}a{text-decoration:none;color:#6f9ccd}.flex{display:flex;display:-ms-flex;display:-o-flex;flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-1{flex:1 1 0%}.absolute{position:absolute;left:0;top:0;right:0;bottom:0}.relative{position:relative}.h-100{height:100%}.w-100{width:100%}.t-c{text-align:center}.t-r{text-align:right}.t-l{text-align:left!important}.m-r-1{margin-right:1rem}table{border-spacing:0;border-collapse:collapse}html{font-size:10px;background-color:#f4f4f4}body{overflow:hidden}span.split{width:.6rem}span.split-pad{padding:0 .3rem}span.split-pad10{padding:0 1rem}.middle{vertical-align:middle}.red{color:red}.scrollbar,.scrollbar-10,.scrollbar-4{overflow:auto}.scrollbar::-webkit-scrollbar{width:4px;height:1px}.scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-4::-webkit-scrollbar{width:4px;height:4px}.scrollbar-4::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-10::-webkit-scrollbar{width:10px;height:1px}.scrollbar-10::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar{background:#f5f5f5}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb{background:#ddd}.el-collapse-item__header{background-color:#fafafa!important;border-left:1px solid #ebeef5;border-right:1px solid #ebeef5;padding:0 2rem}.el-collapse-item__content{padding:1rem;border:1px solid #ebeef5;border-bottom:0}.el-input.w-search,.el-input.w-search .el-input__inner,.el-select.w-search{width:10rem}.el-form-item.w-search .el-form-item__label{font-size:1.2rem}.table-search .el-form--inline .el-form-item{margin-bottom:0}.el-dropdown,.el-dropdown-menu__item{font-size:1.3rem}.el-dropdown-menu__item a{color:#333}.el-input__inner:focus{border-color:var(--main-color)}.el-date-editor.el-input.w-auto,.el-date-editor.el-input__inner.w-auto{width:auto}.el-table .active-row{background:rgba(0,0,0,.15)}.el-table .table-green-row{background:rgba(0,255,0,.15)}.el-table .table-red-row{background:rgba(255,0,0,.15)}.el-table .table-green-row td,.el-table .table-red-row td{background:transparent!important}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:auto}.el-table .active-row td{background:transparent!important}.el-table--border th{background-color:#fafafa}.el-table td,.el-table th.is-leaf,.el-table--border,.el-table--group,.el-table-filter{border-color:var(--main-border-color)}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:var(--main-color)}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:var(--main-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{width:inherit}.el-dialog{max-width:96%}.el-dialog__body .el-form-item:last-child{margin-bottom:0}.el-input-group__append,.el-input-group__prepend{padding:0 4px!important;background-color:transparent!important}.el-checkbox__label .el-icon{vertical-align:middle;margin-top:-2px}.el-color-picker{vertical-align:middle}.el-color-picker__trigger{border:0!important}.el-color-picker__color{border:0!important;border-radius:2px}.el-color-picker__color-inner{border-radius:2px}.el-message{min-width:10rem!important}.card-header{font-size:1.4rem}.forward-wrap .el-table--small.el-table .el-table__expanded-cell[class*=cell]{padding:20px 50px 20px 50px}h3.title{font-size:1.6rem;padding-bottom:.6rem;color:#555}.el-message-box{max-width:90%}.el-select-dropdown__item{padding-right:2rem!important}.el-form-item--default{--font-size:13px!important}.el-input__inner{font-size:13px}.el-dialog--center .el-dialog__body{padding-top:1rem!important;padding-bottom:1rem!important}
|
||||
1
cmonitor/web/css/app.9c6b579f.css
Normal file
@@ -0,0 +1 @@
|
||||
*{margin:0;padding:0;list-style:none}a{text-decoration:none;color:#6f9ccd}.flex{display:flex;display:-ms-flex;display:-o-flex;flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-1{flex:1 1 0%}.absolute{position:absolute;left:0;top:0;right:0;bottom:0}.relative{position:relative}.h-100{height:100%}.w-100{width:100%}.t-c{text-align:center}.t-r{text-align:right}.t-l{text-align:left!important}.m-r-1{margin-right:1rem}table{border-spacing:0;border-collapse:collapse}html{font-size:10px;background-color:#f4f4f4}body{overflow:hidden}span.split{width:.6rem}span.split-pad{padding:0 .3rem}span.split-pad10{padding:0 1rem}.middle{vertical-align:middle}.red{color:red}.scrollbar,.scrollbar-1,.scrollbar-10,.scrollbar-4{overflow:auto}.scrollbar-1::-webkit-scrollbar{width:0;height:1px}.scrollbar-1::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar::-webkit-scrollbar{width:1px;height:1px}.scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-4::-webkit-scrollbar{width:4px;height:4px}.scrollbar-4::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-10::-webkit-scrollbar{width:10px;height:1px}.scrollbar-10::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}:root{--el-color-primary:var(--el-color-success)!important;--el-color-primary-light-3:var(--el-color-success-light-3)!important;--el-color-primary-light-5:var(--el-color-success-light-5)!important;--el-color-primary-light-7:var(--el-color-success-light-7)!important;--el-color-primary-light-8:var(--el-color-success-light-8)!important;--el-color-primary-light-9:var(--el-color-success-light-9)!important;--el-color-primary-dark-2:var(--el-color-success-dark-2)!important}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar{background:#f5f5f5}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb{background:#ddd}.el-collapse-item__header{background-color:#fafafa!important;border-left:1px solid #ebeef5;border-right:1px solid #ebeef5;padding:0 2rem}.el-collapse-item__content{padding:1rem;border:1px solid #ebeef5;border-bottom:0}.el-input.w-search,.el-input.w-search .el-input__inner,.el-select.w-search{width:10rem}.el-form-item.w-search .el-form-item__label{font-size:1.2rem}.table-search .el-form--inline .el-form-item{margin-bottom:0}.el-dropdown,.el-dropdown-menu__item{font-size:1.3rem}.el-dropdown-menu__item a{color:#333}.el-input__inner:focus{border-color:var(--main-color)}.el-date-editor.el-input.w-auto,.el-date-editor.el-input__inner.w-auto{width:auto}.el-table .active-row{background:rgba(0,0,0,.15)}.el-table .table-green-row{background:rgba(0,255,0,.15)}.el-table .table-red-row{background:rgba(255,0,0,.15)}.el-table .table-green-row td,.el-table .table-red-row td{background:transparent!important}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:auto}.el-table .active-row td{background:transparent!important}.el-table--border th{background-color:#fafafa}.el-table td,.el-table th.is-leaf,.el-table--border,.el-table--group,.el-table-filter{border-color:var(--main-border-color)}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:var(--main-color)}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:var(--main-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{width:inherit}.el-dialog{max-width:96%}.el-dialog__body .el-form-item:last-child{margin-bottom:0}.el-input-group__append,.el-input-group__prepend{padding:0 4px!important;background-color:transparent!important}.el-checkbox__label .el-icon{vertical-align:middle;margin-top:-2px}.el-color-picker{vertical-align:middle}.el-color-picker__trigger{border:0!important}.el-color-picker__color{border:0!important;border-radius:2px}.el-color-picker__color-inner{border-radius:2px}.el-message{min-width:10rem!important}.card-header{font-size:1.4rem}.forward-wrap .el-table--small.el-table .el-table__expanded-cell[class*=cell]{padding:20px 50px 20px 50px}h3.title{font-size:1.6rem;padding-bottom:.6rem;color:#555}.el-message-box{max-width:90%}.el-select-dropdown__item{padding-right:2rem!important}.el-form-item--default{--font-size:13px!important}.el-input__inner{font-size:13px}.el-dialog--center .el-dialog__body{padding-top:1rem!important;padding-bottom:1rem!important}
|
||||
|
Before Width: | Height: | Size: 77 KiB |
BIN
cmonitor/web/img/bg3.1572e850.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
1
cmonitor/web/img/keyboard.0621787b.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1695713240314" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14947" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400"><path d="M937.51 195.12h-852a80.09 80.09 0 0 0-80 80v473a80.09 80.09 0 0 0 80 80h852a80.09 80.09 0 0 0 80-80v-473a80.09 80.09 0 0 0-80-80z m20 553a20 20 0 0 1-20 20h-852a20 20 0 0 1-20-20v-473a20 20 0 0 1 20-20h852a20 20 0 0 1 20 20z" fill="#3e5a6e" p-id="14948"></path><path d="M197.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14949"></path><path d="M197.51 570.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14950"></path><path d="M373.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14951"></path><path d="M373.51 570.12l276 0 0 80-276 0 0-80Z" fill="#3e5a6e" p-id="14952"></path><path d="M550.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14953"></path><path d="M726.51 374.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14954"></path><path d="M726.51 570.12l100 0 0 80-100 0 0-80Z" fill="#3e5a6e" p-id="14955"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -1 +1 @@
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>cmonitor.web</title><script defer="defer" src="/js/chunk-vendors.d3224db2.js"></script><script defer="defer" src="/js/app.406d8974.js"></script><link href="/css/chunk-vendors.faad7142.css" rel="stylesheet"><link href="/css/app.97eae421.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but cmonitor.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>cmonitor.web</title><script defer="defer" src="/js/chunk-vendors.d3224db2.js"></script><script defer="defer" src="/js/app.9e40d872.js"></script><link href="/css/chunk-vendors.faad7142.css" rel="stylesheet"><link href="/css/app.9c6b579f.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but cmonitor.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
1
cmonitor/web/js/313.2137b12e.js
Normal file
1
cmonitor/web/js/app.9e40d872.js
Normal file
@@ -15,6 +15,18 @@ namespace llock.win
|
||||
private int shareMLength;
|
||||
private int shareIndex;
|
||||
|
||||
protected override CreateParams CreateParams
|
||||
{
|
||||
get
|
||||
{
|
||||
const int WS_EX_APPWINDOW = 0x40000;
|
||||
const int WS_EX_TOOLWINDOW = 0x80;
|
||||
CreateParams cp = base.CreateParams;
|
||||
cp.ExStyle &= (~WS_EX_APPWINDOW);
|
||||
cp.ExStyle |= WS_EX_TOOLWINDOW;
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
|
||||
public Form1(string shareMkey, int shareMLength, int shareIndex)
|
||||
{
|
||||
@@ -113,7 +125,7 @@ namespace llock.win
|
||||
try
|
||||
{
|
||||
DateTime dt = DateTime.Now;
|
||||
string psd = $"{dt.Hour / 10 % 10}{dt.Minute / 10 % 10}{dt.Hour % 10}&{dt.Minute % 10}{dt.Month}{dt.Date}";
|
||||
string psd = $"{dt.Hour / 10 % 10}{dt.Minute / 10 % 10}{dt.Hour % 10}{dt.Minute % 10}{dt.Month}{dt.Date}";
|
||||
if (psd == textBox1.Text)
|
||||
{
|
||||
this.Close();
|
||||
|
||||
46
message.win/Form1.Designer.cs
generated
@@ -28,55 +28,78 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Font = new System.Drawing.Font("宋体", 42F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.label1.Font = new System.Drawing.Font("宋体", 36F);
|
||||
this.label1.ForeColor = System.Drawing.Color.Red;
|
||||
this.label1.Location = new System.Drawing.Point(12, 4);
|
||||
this.label1.Location = new System.Drawing.Point(24, 8);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(360, 88);
|
||||
this.label1.Size = new System.Drawing.Size(720, 176);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "提醒消息!";
|
||||
this.label1.Text = "提醒 消息";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.label2.Location = new System.Drawing.Point(19, 89);
|
||||
this.label2.Location = new System.Drawing.Point(38, 200);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(350, 119);
|
||||
this.label2.Size = new System.Drawing.Size(700, 216);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "上课时间,请注意课堂纪律";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.label3.Location = new System.Drawing.Point(12, 213);
|
||||
this.label3.Location = new System.Drawing.Point(24, 426);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(360, 34);
|
||||
this.label3.Size = new System.Drawing.Size(720, 68);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "10";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.InitialImage = null;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(252, -49);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(260, 233);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 3;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(384, 256);
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(768, 512);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
|
||||
this.Name = "Form1";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "提醒消息";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnClosing);
|
||||
this.Load += new System.EventHandler(this.OnLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -86,6 +109,7 @@
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,20 @@ namespace message.win
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
private readonly int times = 10;
|
||||
|
||||
protected override CreateParams CreateParams
|
||||
{
|
||||
get
|
||||
{
|
||||
const int WS_EX_APPWINDOW = 0x40000;
|
||||
const int WS_EX_TOOLWINDOW = 0x80;
|
||||
CreateParams cp = base.CreateParams;
|
||||
cp.ExStyle &= (~WS_EX_APPWINDOW);
|
||||
cp.ExStyle |= WS_EX_TOOLWINDOW;
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
|
||||
public Form1(string msg, int times)
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -15,8 +29,14 @@ namespace message.win
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
label2.Text = msg;
|
||||
this.times = times;
|
||||
|
||||
|
||||
}
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
|
||||
|
||||
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
|
||||
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
|
||||
@@ -24,6 +44,9 @@ namespace message.win
|
||||
public const uint SWP_NOSIZE = 0x1;
|
||||
public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
|
||||
public static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2);
|
||||
private const int GWL_STYLE = -16;
|
||||
private const int WS_SYSMENU = 0x80000;
|
||||
private const uint SWP_FRAMECHANGED = 0x20;
|
||||
|
||||
bool autoClose = false;
|
||||
private void Countdown()
|
||||
@@ -59,6 +82,13 @@ namespace message.win
|
||||
|
||||
//将窗口置顶
|
||||
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
||||
|
||||
int style = GetWindowLong(this.Handle, GWL_STYLE);
|
||||
SetWindowLong(this.Handle, GWL_STYLE, style & ~WS_SYSMENU);
|
||||
|
||||
// 添加窗体阴影
|
||||
SetWindowPos(this.Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOMOVE);
|
||||
|
||||
//将窗口置底
|
||||
//SetWindowPos(this.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
||||
}
|
||||
|
||||
@@ -112,9 +112,722 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,3 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
|
||||
</startup>
|
||||
|
||||
</configuration>
|
||||
|
||||
6
notify.win/App.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||
</startup>
|
||||
</configuration>
|
||||
96
notify.win/Form1.Designer.cs
generated
Normal file
@@ -0,0 +1,96 @@
|
||||
namespace notify.win
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows 窗体设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.Location = new System.Drawing.Point(55, 203);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(236, 250);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 0;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// pictureBox2
|
||||
//
|
||||
this.pictureBox2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image")));
|
||||
this.pictureBox2.Location = new System.Drawing.Point(1, -7);
|
||||
this.pictureBox2.Name = "pictureBox2";
|
||||
this.pictureBox2.Size = new System.Drawing.Size(331, 271);
|
||||
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox2.TabIndex = 1;
|
||||
this.pictureBox2.TabStop = false;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.BackColor = System.Drawing.Color.Gray;
|
||||
this.label1.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Bold);
|
||||
this.label1.Location = new System.Drawing.Point(67, 108);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(200, 121);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.Text = "恭喜地方发鬼地方获得【五星点评】";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(333, 450);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.pictureBox2);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "Form1";
|
||||
this.Text = "广播";
|
||||
this.Load += new System.EventHandler(this.OnLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.PictureBox pictureBox2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
||||
|
||||
117
notify.win/Form1.cs
Normal file
@@ -0,0 +1,117 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace notify.win
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
|
||||
protected override CreateParams CreateParams
|
||||
{
|
||||
get
|
||||
{
|
||||
const int WS_EX_APPWINDOW = 0x40000;
|
||||
const int WS_EX_TOOLWINDOW = 0x80;
|
||||
CreateParams cp = base.CreateParams;
|
||||
cp.ExStyle &= (~WS_EX_APPWINDOW);
|
||||
cp.ExStyle |= WS_EX_TOOLWINDOW;
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
|
||||
private int speed;
|
||||
private string msg;
|
||||
public Form1(int speed, string msg)
|
||||
{
|
||||
this.speed = speed;
|
||||
this.msg = msg;
|
||||
|
||||
InitializeComponent();
|
||||
this.AllowTransparency = true;
|
||||
this.TransparencyKey = Color.Black;
|
||||
this.BackColor = Color.Black;
|
||||
this.StartPosition = FormStartPosition.CenterScreen;
|
||||
this.TopMost = true;
|
||||
this.ShowInTaskbar = false;
|
||||
|
||||
label1.BackColor = Color.FromArgb(255, 248, 153);
|
||||
label1.ForeColor = Color.Green;
|
||||
}
|
||||
|
||||
private void OnLoad(object sender, EventArgs e)
|
||||
{
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
//将窗口置顶
|
||||
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
||||
|
||||
int style = GetWindowLong(this.Handle, GWL_STYLE);
|
||||
SetWindowLong(this.Handle, GWL_STYLE, style & ~WS_SYSMENU);
|
||||
|
||||
// 添加窗体阴影
|
||||
SetWindowPos(this.Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOMOVE);
|
||||
|
||||
|
||||
RECT workAreaRect;
|
||||
SystemParametersInfo(SPI_GETWORKAREA, 0, out workAreaRect, 0);
|
||||
|
||||
int screenWidth = workAreaRect.Right;
|
||||
int screenHeight = workAreaRect.Bottom;
|
||||
int width = this.Width;
|
||||
int height = this.Height;
|
||||
|
||||
label1.Text = this.msg;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
this.Left = screenWidth + width;
|
||||
this.Top = screenHeight - height;
|
||||
while (true)
|
||||
{
|
||||
this.Left -= this.speed;
|
||||
if (this.Left < -width)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
System.Threading.Thread.Sleep(10);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private const int SPI_GETWORKAREA = 0x0030;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
private static extern bool SystemParametersInfo(int uAction, int uParam, out RECT lpRect, int fuWinIni);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct RECT
|
||||
{
|
||||
public int Left;
|
||||
public int Top;
|
||||
public int Right;
|
||||
public int Bottom;
|
||||
}
|
||||
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
|
||||
|
||||
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
|
||||
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
|
||||
|
||||
public const uint SWP_NOMOVE = 0x2;
|
||||
public const uint SWP_NOSIZE = 0x1;
|
||||
public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
|
||||
public static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2);
|
||||
private const int GWL_STYLE = -16;
|
||||
private const int WS_SYSMENU = 0x80000;
|
||||
private const uint SWP_FRAMECHANGED = 0x20;
|
||||
}
|
||||
}
|
||||
3686
notify.win/Form1.resx
Normal file
23
notify.win/Program.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace notify.win
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
int speed = int.Parse(args[0]);
|
||||
string msg = args[1];
|
||||
|
||||
Application.Run(new Form1(speed,msg));
|
||||
}
|
||||
}
|
||||
}
|
||||
36
notify.win/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("notify.win")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("notify.win")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2023")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("ced6a505-ad7e-4f61-ab40-8d3973f431ab")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
71
notify.win/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本: 4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能导致不正确的行为,如果
|
||||
// 重新生成代码,则所做更改将丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace notify.win.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 强类型资源类,用于查找本地化字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回此类使用的缓存 ResourceManager 实例。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("notify.win.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
notify.win/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
30
notify.win/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace notify.win.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
notify.win/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
83
notify.win/notify.win.csproj
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{CED6A505-AD7E-4F61-AB40-8D3973F431AB}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>notify.win</RootNamespace>
|
||||
<AssemblyName>notify.win</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>embedded</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>embedded</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\cmonitor\web\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="App.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
11
publish.bat
@@ -11,10 +11,13 @@ dotnet publish ./cmonitor -c releaselinux -f net7.0 -o ./public/publish/linux-x6
|
||||
dotnet publish ./cmonitor -c release -f net7.0 -r win-x64 -o ./public/publish/win-x64-any/ -p:PublishSingleFile=true --self-contained false
|
||||
dotnet publish ./cmonitor -c releaselinux -f net7.0 -r linux-x64 -o ./public/publish/linux-x64-any/ -p:PublishSingleFile=true --self-contained false
|
||||
|
||||
echo F|xcopy "cmonitor\\web\\llock.win.exe" "public\\publish\\win-x64\\llock.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\message.win.exe" "public\\publish\\win-x64\\message.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\wallpaper.win.exe" "public\\publish\\win-x64\\wallpaper.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\cmonitor.win.exe" "public\\publish\\win-x64\\cmonitor.win.exe" /s /f /h /y
|
||||
for %%r in (win-x64,win-x64-any) do (
|
||||
echo F|xcopy "cmonitor\\web\\llock.win.exe" "public\\publish\\%%f\\llock.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\message.win.exe" "public\\publish\\%%f\\message.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\wallpaper.win.exe" "public\\publish\\%%f\\wallpaper.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\cmonitor.win.exe" "public\\publish\\%%f\\cmonitor.win.exe" /s /f /h /y
|
||||
echo F|xcopy "cmonitor\\web\\notify.win.exe" "public\\publish\\%%f\\notify.win.exe" /s /f /h /y
|
||||
)
|
||||
|
||||
for %%r in (linux-x64,linux-x64-any) do (
|
||||
for %%f in (nfapi.dll,nfdriver.sys,cmonitor.volume.dll) do (
|
||||
|
||||
@@ -40,8 +40,7 @@ namespace wallpaper.win
|
||||
this.shareKeyBoardIndex = shareKeyBoardIndex;
|
||||
this.shareWallpaperIndex = shareWallpaperIndex;
|
||||
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
hook = new Hook();
|
||||
@@ -96,7 +95,9 @@ namespace wallpaper.win
|
||||
{
|
||||
pictureBox1.ImageLocation = imgUrl;
|
||||
this.Dock = DockStyle.Fill;
|
||||
ShowInTaskbar = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
|
||||
hook.Start();
|
||||
|
||||
|
||||