分享免费的编程资源和教程

网站首页 > 技术教程 正文

记录首次ChatGPT运用到生产中 chatgpt不显示历史记录

goqiw 2024-10-25 13:05:19 技术教程 22 ℃ 0 评论

最近接到一个需求

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


这中间问了好多次,但都没有解决,只贴问题

  1. 可以直接远程命令打开吗?不创建bat
  2. C:\Program Files\Google\Chrome\Application\chrome.exe started on 192.168.70.84 with process ID 12716. 我已经成功运行了,但并没有在前端运行
  3. 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.
  4. C:\Program Files\Google\Chrome\Application\chrome.exe started on 192.168.70.84 with process ID 13216. 运行了之后远程计算机还是没有成功打开chrome
  5. psexec 实现用户前端打开cmd窗口,注意,是要远程计算机的用户直接可以看到这个cmd窗口
  6. cmd.exe started on 192.168.70.84 with process ID 9692. 远程机器并没有打开cmd
  7. 不登录以远程计算机的情况下,打开chrome窗口


最后一次的回答提到了,Windows直接前端打开chrome是不可行的,这时候我想到了windows是基于rdp协议的,于是我去用了google搜索psexec打开窗口并显示ui的问题,最终在csdn找到了解决方案。

原来需要加参数并指定会话ID,再次运行,解决!(这里有个坑,就是session ID会变化,后面再提)


第二个需求,由于没有鼠标、没有键盘,因此想到只能通过向日葵做好远程主机的保存,这样触摸即可远程过去操作控制,并且不改变远端的分辨率,也算勉强解决。


第三个需求,继续问GPT:通过dos怎么操作杀死进程



把之前启动的脚本稍微改了下,加上taskkill即可,但会有多进程的问题,按GPT的范例,只会杀一次,用google搜索如何杀死指定的所有进程,根据结果稍微调整了下即可。


测试都差不多了,到实际测试环境时,发现了一些额外坑,第一个就是session变化的问题,脚本是写死的,这个必须要做个自动获取最新id的并保存为变量才行;第二个问题是psexec密码必须加上-p,目前是空密码,不然运行的时候空密码需要用到键盘回车;第三个问题是简化现场实操人员使用成本。


第一个坑依次提问:

  1. 通过dos命令获取windows的session值,并做一个变量
  2. qwinsta获取ID值,并定义一个变量
  3. 定义好的session变量,怎么打印
  4. 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:句柄无效。

  1. windows 的session 会变化吗?什么情况下会变化
  2. 会话id是有规则的还是无规则的变化
  3. psexec \\%client_machine% -u .\lenovo -i 2 -d %bat_file% 这个命令的-i ,我不太清楚每次是1还是2或者3,有没有什么办法自动去尝试
  4. @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,我一定无法完成这项任务。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表