网站首页 > 技术教程 正文
最近接到一个需求
a是物理主机连接投影仪
b是物理触摸屏一体机
在用户侧,只能看到投影仪+一体机,需求是一体机操作投影仪的主机打开浏览器后全屏,并可以用鼠标滑动点击。
从需求侧出发,拆分问题
- b远程调用a打开浏览器
- a浏览器全屏
- b可以在触摸屏上控制a
- b可以关闭a的浏览器
第一次提问:windows系统,我想运行桌面的chrome浏览器,运行后,5秒后再自动按键盘的F11按钮。怎么实现
GPT:
在a主机上打开powershell后可实现,但需要进一步做成可执行文件,方便后续远程调用时有文件可以运行。
第二次提问:这个脚本怎么做成可执行文件
GPT
这样,桌面有了个.bat文件,双击后可以实现:打开浏览器 -> 全屏。第一个需求完成了一半,因为还没有实现远程的调用。
第三次提问:windows ,有2台主机,一台控制机,一台客户机,帮我写一个脚本,控制机可以远程让客户机运行bat文件
GPT
提到了一个微软原生的工具,PsExec,并给了下载链接(实际下载非常非常的慢,用了迅雷云存储后下载才可以完整安装)。
按GPT给的示例,出现了1个错误,将错误带入第四次问:不是内部或外部程序,也不是可运行的程序
提到了环境变量,于是把Psexec放到了system32目录下,解决。
继续尝试运行,依旧没有反应,于是换一个简单的操作,第五次问:psexec控制远程机器打开cmd窗口
GPT
此时本地窗口有出现远程的过程及远端的ip,证明已经是远程的窗口,输入ipconfig,显示为对方ip,证明psexec工具可用,但还没有解决在远端打开窗口的问题,于是第六次继续问:我成功的执行,但是远程计算机并没有打开chrome浏览器
说的废话,看来没用,换个方式第七次提问:windows下通过脚本远程打开chrome浏览器,在前端
GPT
这中间问了好多次,但都没有解决,只贴问题
- 可以直接远程命令打开吗?不创建bat
- C:\Program Files\Google\Chrome\Application\chrome.exe started on 192.168.70.84 with process ID 12716. 我已经成功运行了,但并没有在前端运行
- C:\Windows\system32>"C:\Program Files\Google\Chrome\Application\chrome.exe" C:\Windows\system32>[1140:6360:0804/165028.408:ERROR:process_singleton_win.cc(417)] Lock file can not be created! Error code: 32 [1140:6360:0804/165028.408:ERROR:chrome_browser_main.cc(1467)] Failed to create a ProcessSingleton for your profile directory. This means that running multiple instances would start multiple browser processes rather than opening a new window in the existing process. Aborting now to avoid profile corruption.
- C:\Program Files\Google\Chrome\Application\chrome.exe started on 192.168.70.84 with process ID 13216. 运行了之后远程计算机还是没有成功打开chrome
- psexec 实现用户前端打开cmd窗口,注意,是要远程计算机的用户直接可以看到这个cmd窗口
- cmd.exe started on 192.168.70.84 with process ID 9692. 远程机器并没有打开cmd
- 不登录以远程计算机的情况下,打开chrome窗口
最后一次的回答提到了,Windows直接前端打开chrome是不可行的,这时候我想到了windows是基于rdp协议的,于是我去用了google搜索psexec打开窗口并显示ui的问题,最终在csdn找到了解决方案。
原来需要加参数并指定会话ID,再次运行,解决!(这里有个坑,就是session ID会变化,后面再提)
第二个需求,由于没有鼠标、没有键盘,因此想到只能通过向日葵做好远程主机的保存,这样触摸即可远程过去操作控制,并且不改变远端的分辨率,也算勉强解决。
第三个需求,继续问GPT:通过dos怎么操作杀死进程
把之前启动的脚本稍微改了下,加上taskkill即可,但会有多进程的问题,按GPT的范例,只会杀一次,用google搜索如何杀死指定的所有进程,根据结果稍微调整了下即可。
测试都差不多了,到实际测试环境时,发现了一些额外坑,第一个就是session变化的问题,脚本是写死的,这个必须要做个自动获取最新id的并保存为变量才行;第二个问题是psexec密码必须加上-p,目前是空密码,不然运行的时候空密码需要用到键盘回车;第三个问题是简化现场实操人员使用成本。
第一个坑依次提问:
- 通过dos命令获取windows的session值,并做一个变量
- qwinsta获取ID值,并定义一个变量
- 定义好的session变量,怎么打印
- FOR /F "tokens=3 delims= " %i IN ('psexec -nobanner \\192.168.xx.xx query session ^| findstr "console"') DO set "ID=%i"
Couldn't access 192.168.xx.xx:句柄无效。
- windows 的session 会变化吗?什么情况下会变化
- 会话id是有规则的还是无规则的变化
- psexec \\%client_machine% -u .\lenovo -i 2 -d %bat_file% 这个命令的-i ,我不太清楚每次是1还是2或者3,有没有什么办法自动去尝试
- @echo off
set control_machine=192.168.110.38
set client_machine=192.168.110.25
set bat_file="C:\Users\lenovo\Desktop\quanjing\runrun.bat"
REM 在客户机上运行.bat文件
psexec \\%client_machine% -u .\lenovo -i 2 -d %bat_file%
这个命令的-i ,我不太清楚每次是1还是2或者3,有没有什么办法自动去尝试
最后一个思路可行,通过遍历的方式,依次尝试session,哪个可以用,就能正常调用。
第二个问题,提问:psexec 空密码怎么连接
解决。
第三个问题尽量简化用户的操作学习成本,目前是3个东西,2个bat文件,1个exe可执行(向日葵),想把这三个都放在任务栏,方便直接点击,不用去桌面找,通过GPT明显复杂了,需要使用第三方软件,直接上Google搜索,windows自带方法,于是现在有了3个exe文件,按顺序摆放,最终呈现是这样的。
注:中间细节会有所偏差,有尝试过spacedesk这个软扩展,应该是最优的,但需要远端先允许操作,想了想还是放弃了;还有想过在一体机旁边放个鼠标来控制投影仪,但机房与主机所在地差了50米远。。。也放弃了,总的来说ChatGPT能解决80%的问题,但最终的是提问者的思路要清晰,知道如何提问是最有效的,对于没有windows开发经验的跨界者,GPT确实作用明显,如果只靠google,我一定无法完成这项任务。
猜你喜欢
- 2024-10-25 Auto CAD 常用系统变量 cad2020系统变量
- 2024-10-25 做开发十年,我总结出了这些开发经验
- 2024-10-25 Windows高级工程师:GDI/GDI+绘图;基础入门大全
- 2024-10-25 菜比手把手教你破解游戏多开(轻喷)
- 2024-10-25 JVM 完整深入解析 jvm解析阶段
- 2024-10-25 Linux打开的文件过多Too many open file
- 2024-10-25 一文看完Oracle数据库之PGA概念、组成、自动管理、参数及视图
- 2024-10-25 JavaScript 中内存泄漏的原因以及对策
- 2024-10-25 史上最全Oracle文件损坏处理办法(附实验步骤)
- 2024-10-25 C++消息循环GetMessage/TranslateMessage/DispatchMessage
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)