weixin_45840746 2023-04-12 10:40 采纳率: 34.8%
浏览 140
已结题

批处理在不同屏幕上打开程序

我想运行两个程序 一个直接打开chrome在主屏全屏显示 一个直接打开edge在扩展屏上全屏显示,好像是因为我只有一个独显,设备id相同,所以无法使用--display ,但是为什么我的--window-position=0,0 --window-size=2560,1600 也没有生效 我主屏25601600 扩展屏是38402160,平行左右排列,请教一下为啥没有生效,总是在一个屏幕出现两个网页

@echo off
setlocal enableDelayedExpansion

rem 切换到 Python 脚本目录,启动 Python 应用程序
cd ".\Large screen\audio-painter\flask"
start cmd /k "python app.py"

rem 等待 1 秒钟,以确保 Python 应用程序已经启动
choice /t 1 /d y /n >nul

rem 切换到大屏脚本目录,启动大屏应用程序
cd "..\..\textDrawing-web\coart-web\src"
start cmd /k "npm run dev"

rem 等待 10 秒钟,以确保大屏应用程序已经启动
choice /t 10 /d y /n >nul

set "url=http://localhost:8080"
set "width=3840"
set "height=2160"
set "xpos=2560"
set "ypos=-1600"

@REM LEN61B0 CSO1600
rem 枚举所有的显示器并找到扩展屏的设备ID
for /f "tokens=2 delims==." %%i in ('wmic path Win32_PnPEntity where "PNPClass='Monitor'" get DeviceID /value ^| findstr /r [0-9]') do (
    set "monitorid=%%i"
    @REM echo %%i
    @REM pause
    echo !monitorid! | find /i "CSO1600" >nul
    if not errorlevel 1 (
        set "display=\\.\!monitorid!"
        echo 找到扩展屏:%display%
        goto display_found
    )
)


rem 如果找到扩展屏则在扩展屏上全屏打开 Chrome
goto end

:display_found
@REM start "" "chrome" --new-window  --kiosk -- --window-position=%xpos%,%ypos% --window-size=%width%,%height% --display=\\.\CSO1600 "%url%"
start msedge  --new-window  --kiosk "%url%"  --window-position=0,0 --window-size=2560,1600 


%切换小屏路径%
cd ..\..\..\..\small screen\textDrawing\src
start  cmd /k "npm run dev"

rem 等待 10 秒钟
choice /t 10 /d y /n >nul

start msedge --new-window --kiosk "http://localhost:8081"  --edge-kiosk-type=fullscreen --window-position=2560,0 --window-size=3840,2160 
:end

展开全部

  • 写回答

5条回答 默认 最新

  • 「已注销」 2023-04-12 11:15
    关注

    引用new bing部分回答作答:
    您在命令行中使用的参数 --window-position 和 --window-size 可能不起作用的原因是,Chrome 和 Edge 可能会忽略这些参数,因为它们被视为启动标志而不是应用程序窗口的大小和位置。

    另一个问题是,您可能需要使用不同的 --display 参数来在不同的屏幕上启动应用程序。如果您的两个屏幕具有相同的设备 ID,则可以尝试使用屏幕的位置坐标来替代 --display 参数。

    例如,对于您的情况,可以尝试以下命令来在不同的屏幕上启动 Chrome 和 Edge:

    :: Start Chrome on the primary screen
    start chrome --new-window --kiosk --app=%url% --window-position=0,0 --window-size=2560,1600
    
    :: Start Edge on the secondary screen
    start msedge --new-window --kiosk --app=%url% --window-position=2560,0 --window-size=1280,720
    

    这仅适用于具有不同设备 ID 的屏幕,因为这样才能在命令行中使用 --display 参数。如果您的两个屏幕具有相同的设备 ID,则需要使用位置坐标来替代 --display 参数。例如:

    :: Start Chrome on the primary screen
    start chrome --new-window --kiosk --app=%url% --window-position=0,0 --window-size=2560,1600
    
    :: Start Edge on the secondary screen
    start msedge --new-window --kiosk --app=%url% --window-position=-1280,0 --window-size=1280,720
    

    这将在两个屏幕上启动两个应用程序,一个在左侧的主屏幕上,一个在右侧的扩展屏幕上。请注意,位置坐标的符号必须与屏幕的位置相对应。在这种情况下,我们将 xpos 设为 -1280,因为扩展屏幕位于主屏幕的右侧,所以应使用负值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    weixin_45840746 2023-04-13 04:19

    start chrome --new-window --kiosk --app="http://localhost:8081" --window-position=0,0 --window-size=2560,1600
    我使用这两个 在扩展屏上edge中确实全屏了,但是--edge-kiosk-type=fullscreen影响了程序里的websocket连接,不写就无法全屏 主屏的chrome就完全无法全屏

    回复
    「已注销」 回复 weixin_45840746 2023-04-13 04:37

    您可以尝试在启动 Edge 时指定 --start-maximized 选项来让其全屏,而不是使用 --edge-kiosk-type=fullscreen。这样不会影响程序中的 WebSocket 连接。

    至于 Chrome 在主屏上无法全屏的问题,可能是由于其他应用程序正在占用该屏幕或者屏幕分辨率不正确等原因导致的。您可以尝试调整屏幕分辨率或者关闭其他应用程序来解决这个问题。

    回复
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月18日
  • 创建了问题 4月12日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部