找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 1521|回复: 8

[特效代码] 桌面显示文字.纯代码.BAT

[复制链接]
发表于 2026-7-15 00:53:13 | 显示全部楼层 |阅读模式
本帖最后由 jiavip 于 2026-7-15 10:58 编辑

如题:桌面显示文字.纯代码.BAT
----------------------扔代码----------------------
  1. @Echo off
  2. Set t=变量:T是显示的内容,C是字体颜色,D是字体大小,X是宽,Y是高
  3. Set c=red
  4. Set d=36
  5. Set x=50
  6. Set y=50

  7. Powershell -NoProfile -C "Add-Type -AssemblyName System.Windows.Forms;Add-Type -AssemblyName System.Drawing;Add-Type -MemberDefinition '[DllImport(\"user32.dll\")] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport(\"user32.dll\")] public static extern bool ReleaseCapture();' -Name User32 -Namespace WinAPI -PassThru | Out-Null;$form=New-Object System.Windows.Forms.Form;$form.FormBorderStyle='None';$form.ControlBox=$false;$form.ShowInTaskbar=$false;$form.TopMost=$true;$form.BackColor='White';$form.TransparencyKey='White';$form.StartPosition='Manual';$label=New-Object System.Windows.Forms.Label;$label.Text='%t%';$label.Font=New-Object System.Drawing.Font('SimSun',%d%,[System.Drawing.FontStyle]::Regular);$label.AutoSize=$true;$label.BackColor='White';$label.ForeColor='%c%';$label.Cursor=[System.Windows.Forms.Cursors]::SizeAll;$form.Controls.Add($label);$form.ClientSize=$label.Size;$form.Location=New-Object System.Drawing.Point(%x%,%y%);$label.Add_MouseDown({param($s,$e)if($e.Button -eq 'Left'){[WinAPI.User32]::ReleaseCapture();[WinAPI.User32]::SendMessage($form.Handle,0xA1,2,0);}});$form.Add_Shown({$form.Activate()});$form.Add_FormClosing({$form.Dispose()});[System.Windows.Forms.Application]::Run($form)"
复制代码

---------代码存 ANSI 编码, XXXX.BAT ------------------

桌面显示文字.纯 Powershell 代码,非第三方工具,
配合 VBS 隐藏启动运行脚本,可以实现开机桌面提示.也可以封装成 EXE 进程,

-----------------------------终极改进版---------------------------------


  1. @Echo off
  2. Rem;;;桌面显示文字
  3. Rem;;;下句是隐藏脚本运行窗口,去掉下句或加上参数 h 则 显示脚本运行窗口.
  4. If /i not "%1"=="h" Mshta vbscript:CreateObject("WScript.Shell").Run("""%~f0"" h",0)(Window.close)&&exit
  5. Set t=变量:T是显示的内容,C是字体颜色,D是字体大小,L是显示时间(毫秒),X是宽,Y是高
  6. Set c=red
  7. Set d=36
  8. Rem;;;下句L变量留空则长时间显示,写上数字,则显示时间(毫秒)
  9. Set l=5000
  10. Set x=50
  11. Set y=50
  12. If not  "%l%"=="" Set z=$timer=New-Object System.Windows.Forms.Timer;$timer.Interval=%l%;$timer.Add_Tick({$form.Close()});$timer.Start()
  13. Powershell -NoProfile -C "Add-Type -AssemblyName System.Windows.Forms;Add-Type -AssemblyName System.Drawing;Add-Type -MemberDefinition '[DllImport(\"user32.dll\")] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport(\"user32.dll\")] public static extern bool ReleaseCapture();' -Name User32 -Namespace WinAPI -PassThru | Out-Null;$form=New-Object System.Windows.Forms.Form;$form.FormBorderStyle='None';$form.ControlBox=$false;$form.ShowInTaskbar=$false;$form.TopMost=$true;$form.BackColor='White';$form.TransparencyKey='White';$form.StartPosition='Manual';$label=New-Object System.Windows.Forms.Label;$label.Text='%t%';$label.Font=New-Object System.Drawing.Font('SimSun',%d%,[System.Drawing.FontStyle]::Regular);$label.AutoSize=$true;$label.BackColor='White';$label.ForeColor='%c%';$label.Cursor=[System.Windows.Forms.Cursors]::SizeAll;$form.Controls.Add($label);$form.ClientSize=$label.Size;$form.Location=New-Object System.Drawing.Point(%x%,%y%);$label.Add_MouseDown({param($s,$e)if($e.Button -eq 'Left'){[WinAPI.User32]::ReleaseCapture();[WinAPI.User32]::SendMessage($form.Handle,0xA1,2,0);}});$form.Add_Shown({$form.Activate();%z%});$form.Add_FormClosing({$form.Dispose()});[System.Windows.Forms.Application]::Run($form)"
  14. Exit
复制代码


-------------------
改了几个参数和判断思路,,,
脚本默认隐藏启动运行,加上参数 h 则正常显示脚本运行窗口,,,

L变量留空则长时间显示,写上数字,则显示时间(毫秒)

评分

参与人数 2技术 +2 收起 理由
zzz19760225 + 1 感谢分享
cutebe + 1 感谢分享

查看全部评分

发表于 2026-7-15 08:33:03 | 显示全部楼层
不错,赞一个
如果 隐藏cmd窗口,再加个延时,就更棒了
 楼主| 发表于 2026-7-15 10:16:19 | 显示全部楼层
hnfeng 发表于 2026-7-15 08:33
不错,赞一个
如果 隐藏cmd窗口,再加个延时,就更棒了
  1. @Echo off
  2. Rem;;;下句是隐藏脚本运行窗口,去掉显示脚本运行窗口.
  3. If /i not "%1"=="h" Mshta vbscript:CreateObject("WScript.Shell").Run("""%~f0"" h",0)(window.close)&&Exit

  4. Set t=变量:T是显示的内容,C是字体颜色,D是字体大小,L是显示时间(毫秒),X是宽,Y是高
  5. Set c=red
  6. Set d=36
  7. Set l=5000
  8. Set x=50
  9. Set y=50

  10. powershell -NoProfile -C "Add-Type -AssemblyName System.Windows.Forms;Add-Type -AssemblyName System.Drawing;Add-Type -MemberDefinition '[DllImport(\"user32.dll\")] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport(\"user32.dll\")] public static extern bool ReleaseCapture();' -Name User32 -Namespace WinAPI -PassThru | Out-Null;$form=New-Object System.Windows.Forms.Form;$form.FormBorderStyle='None';$form.ControlBox=$false;$form.ShowInTaskbar=$false;$form.TopMost=$true;$form.BackColor='White';$form.TransparencyKey='White';$form.StartPosition='Manual';$label=New-Object System.Windows.Forms.Label;$label.Text='%t%';$label.Font=New-Object System.Drawing.Font('SimSun',%d%,[System.Drawing.FontStyle]::Regular);$label.AutoSize=$true;$label.BackColor='White';$label.ForeColor='%c%';$label.Cursor=[System.Windows.Forms.Cursors]::SizeAll;$form.Controls.Add($label);$form.ClientSize=$label.Size;$form.Location=New-Object System.Drawing.Point(%x%,%y%);$label.Add_MouseDown({param($s,$e)if($e.Button -eq 'Left'){[WinAPI.User32]::ReleaseCapture();[WinAPI.User32]::SendMessage($form.Handle,0xA1,2,0);}});$form.Add_Shown({$form.Activate();$timer=New-Object System.Windows.Forms.Timer;$timer.Interval=%l%;$timer.Add_Tick({$form.Close()});$timer.Start()});$form.Add_FormClosing({$form.Dispose()});[System.Windows.Forms.Application]::Run($form)"
  11. Exit
复制代码


上文写了,可以隐藏运行窗口,
加了一个显示时间,,,
发表于 2026-7-16 08:08:29 | 显示全部楼层
jiavip 发表于 2026-7-15 10:16
上文写了,可以隐藏运行窗口,
加了一个显示时间,,,

强  赞一个
发表于 2026-7-16 08:46:58 | 显示全部楼层
请问轮廓颜色、厚度怎么调整?
 楼主| 发表于 2026-7-16 11:12:26 | 显示全部楼层
chishingchan 发表于 2026-7-16 08:46
请问轮廓颜色、厚度怎么调整?
  1. $form=New-Object System.Windows.Forms.Form;
  2. $form.FormBorderStyle='None';      # 无边框
  3. $form.ControlBox=$false;           # 无控制框(关闭/最小化按钮)
  4. $form.ShowInTaskbar=$false;        # 不在任务栏显示
  5. $form.TopMost=$true;               # 置顶显示
  6. $form.BackColor='White';           # 背景白色
  7. $form.TransparencyKey='White';     # 白色区域透明(实现镂空效果)
  8. $form.StartPosition='Manual';      # 手动指定位置

  9. $label=New-Object System.Windows.Forms.Label;
  10. $label.Text='%txt%';               # 实际文字(由外部替换)
  11. $label.Font=New-Object System.Drawing.Font('SimSun',36,[System.Drawing.FontStyle]::Regular); # 字体:宋体,字号36
  12. $label.AutoSize=$true;             # 根据文字自动调整大小
  13. $label.BackColor='White';          # 背景白(与窗体一致,透明)
  14. $label.ForeColor='Black';          # 文字黑色
  15. $label.Cursor=[System.Windows.Forms.Cursors]::SizeAll; # 鼠标悬停显示移动光标
  16. $form.Controls.Add($label);
  17. $form.ClientSize=$label.Size;      # 窗体尺寸匹配文字
复制代码


窗口可调  基本就这几个参数,,,
发表于 2026-7-17 09:58:40 | 显示全部楼层
Win7可以很好运行。
隐藏的在Win10错误。
发表于 2026-7-17 11:49:15 | 显示全部楼层
我让 AI 重新写,变成了一个跑马灯广告窗。
  1. @Echo off
  2. If /i not "%1"=="h" Mshta vbscript:CreateObject("WScript.Shell").Run("""%~f0"" h",0)(window.close)&&Exit

  3. Set t=《望庐山瀑布》- 李白 日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。按[Esc]键退出
  4. Set l=5000

  5. powershell -NoProfile -C ^
  6. "Add-Type -AssemblyName System.Windows.Forms;^
  7. Add-Type -AssemblyName System.Drawing;^
  8. $form=New-Object System.Windows.Forms.Form;^
  9. $form.FormBorderStyle='None';^
  10. $form.ControlBox=$false;^
  11. $form.ShowInTaskbar=$false;^
  12. $form.TopMost=$true;^
  13. $form.BackColor='Black';^
  14. $form.StartPosition='Manual';^
  15. $form.Size=New-Object System.Drawing.Size(1920,80);^
  16. $form.Location=New-Object System.Drawing.Point(0,0);^
  17. $form.KeyPreview=$true;^
  18. $form.Add_KeyDown({^
  19.     if($_.KeyCode -eq 'Escape'){$form.Close()}^
  20. });^
  21. $label=New-Object System.Windows.Forms.Label;^
  22. $label.Text='%t%';^
  23. $label.Font=New-Object System.Drawing.Font('SimSun',48,[System.Drawing.FontStyle]::Bold);^
  24. $label.AutoSize=$true;^
  25. $label.BackColor='Black';^
  26. $label.ForeColor='Red';^
  27. $form.Controls.Add($label);^
  28. $label.Location=New-Object System.Drawing.Point(1920,10);^
  29. $loopCount=0;^
  30. $maxLoops=99;^
  31. $form.Add_Shown({^
  32.     $form.Activate();^
  33.     $timer=New-Object System.Windows.Forms.Timer;^
  34.     $timer.Interval=20;^
  35.     $timer.Add_Tick({^
  36.         $label.Left-=8;^
  37.         if($label.Right -lt 0){^
  38.             $loopCount++;^
  39.             if($loopCount -ge $maxLoops){^
  40.                 $timer.Stop();^
  41.                 $form.Close();^
  42.             }else{^
  43.                 $label.Left=1920;^
  44.             }^
  45.         }^
  46.     });^
  47.     $timer.Start();^
  48. });^
  49. [System.Windows.Forms.Application]::Run($form)"

  50. Exit
复制代码
发表于 2026-7-17 11:52:06 | 显示全部楼层
本帖最后由 chishingchan 于 2026-7-17 11:55 编辑

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-8-4 05:02

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表