标题: 产生系统托盘气泡提示的批处理方法总结 [打印本页]
作者: Batcher 时间: 2009-4-12 00:35 标题: 产生系统托盘气泡提示的批处理方法总结
【方案一】BAT + DEBUG 动态生成BalloonTip.exe复制代码
上面的批处理实际上会动态生成一个小工具%temp%\BalloonTip.exe
调用格式为:BalloonTip Text Title Timeout IconIndex
参数均是可选的,第一个是气泡的内容,第二个是气泡的标题,第三个是气泡持续的时间,默认是3000毫秒,第四个是可选的图标样式,可选值为0(无图标),1(信息图标),2(警告图标),3(错误图标),默认是0
特点:
1、精确的计时
2、图标支持
3、转义字符支持,\n回车 \s空格 \t制表 \\是反斜杠
注:Windows XP SP2/SP3 下测试通过,不保证其他平台有效。
一些说明:
1、广告不广告的我认为没什么,为了缩小程序体积,我没有添加版本信息,于是就使用了"广告"。直接运行的时候出现的气泡也是告诉大家使用格式的。在脚本中使用的时候加上哪怕仅仅一个参数,所谓的广告也就没有了。
2、程序是加了壳的,加壳前2KB。未加壳的也可以发布,但是现在没有带在身上。需要的话大家可以修改这个程序,不用理会什么版权不版权的。
3、程序是VC环境下用纯API写的,使用WinMainCRTStartup函数代替了传统的WinMain函数作为入口,因此程序体积大减。
4、托盘的具体图标,我并非不想加上,但是加来加去都没有成功。我猜想对于一个没有窗体的程序,托盘图标是不可能的吧?
5、由于程序本身的原因,直接点击运行会使系统使用等待状态光标。但是在命令行下运行就不会出现这个问题了,因此我在最上面的脚本中调用cmd来运行程序。这样做的另一个好处是可以在使用气泡后删除先前释放的可执行文件。
6、谢谢大家关注。
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=34690
【方案二】BAT + C#
批处理实现的任务栏系统托盘汽泡提示 V1.1
论坛上有人发帖问如何在批处理中弄一个汽泡提示,说实话,这种极其超出p处理讨论范围的话题真的有点BT,而且很无聊,所以我的解决方案也很无聊,那就是调用无所不能的 C#,所以需要 .NET Framework 2.0 以上支持,看代码:- @echo off
- set "dnfpath=C:\Windows\Microsoft.NET\Framework"
- set "est=DO_NOT_ZT_WITHOUT_PERMISSION"
- for /f "delims=" %%v in ('dir /ad /b %dnfpath%\v?.*') do (
- if exist "%dnfpath%\%%v\csc.exe" set "cscpath=%dnfpath%\%%v\csc.exe"
- )
-
- < "%~f0" more +17 > "%temp%\estTrayTip.cs"
- %cscpath% "/out:%cd%\estTrayTip.exe" "%temp%\estTrayTip.cs"
- estTrayTip.exe C:\Windows\System32\acwizard.ico 看什么看 没见过批处理啊?没见过任务栏的汽泡信息啊?见过了吧?见过了顶electronixtar的帖子。 2
- :exe的参数解释:estTrayTip.exe 图标路径 标题 内容 提示图标类型Error、Info、None、Warning,这里取2=Info。每个参数都必须正确填写
- >nul ping 127.1 -n 1
- del estTrayTip.exe
-
- goto:eof
-
- :estTrayTip
-
- using System;
- using System.Windows.Forms;
- using System.Drawing;
-
- namespace estTrayTip
- {
- class Program
- {
- static void Main(string[] args)
- {
- NotifyIcon estIcon = new NotifyIcon();
- estIcon.Icon = new Icon(args[0]);
- estIcon.Visible = true;
- ToolTipIcon estToolTipIcon = new ToolTipIcon();
- switch(args[3])
- {
- case "1":
- estToolTipIcon = ToolTipIcon.Error; break;
- case "2":
- estToolTipIcon = ToolTipIcon.Info; break;
- case "3":
- estToolTipIcon = ToolTipIcon.None; break;
- case "4":
- estToolTipIcon = ToolTipIcon.Warning; break;
- }
- estIcon.ShowBalloonTip(1,args[1],args[2],estToolTipIcon);
- }
- }
- }
复制代码
代码中C:\Windows\System32\acwizard.ico自己换成自己系统里真实存在的 .ico图标,否则程序会崩溃。
再次声明,转贴要注明出处哦,版权以CC发布。
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=26751
作者: Batcher 时间: 2009-4-12 00:46
【方案三】VB + API- ::TrayBalloon.exe ;参数1;;参数2;;参数3;;参数4;;参数5;
- ::参数1:
- :: 图标路径
- ::参数2:
- :: 标题
- ::参数3:
- :: 内容
- ::参数4:
- :: 类型 [0-无图标 1-提示图标 2-警告图标 3-错误图标 4-自定义图标]
- ::参数5:
- :: 提示停留时间(单位:秒)
-
- @echo off
- ::例子1:
- TrayBalloon.exe ;%cd%\TB.ico;;我是标题!!;;漂亮的提示!!cool吧:);;2;;5;
- ::例子2:
- @rem 添加到任务计划中……
- at 16:05 /interactive %cd%\TrayBalloon.exe ;%cd%\TB.ico;;我是标题!!;;漂亮的提示!!cool吧:);;1;;3;
-
- pause>nul
复制代码
TrayBalloon.exe是用VB写的,通过调用API来实现。
本地下载:
http://bcn.bathome.net/s/tool/index.html?key=BalloonTip
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=27659
作者: Batcher 时间: 2009-4-12 00:46
【方案四】VBS动态生成BalloonTip.exe
下面的vbs脚本中实际上包含了一个小工具
使用格式为
BalloonTip Text Title Timeout IconIndex
参数均是可选的,第一个是气泡的内容,第二个是气泡的标题,第三个是气泡持续的时间,默认是3000毫秒,第四个是可选的图标样式,可选值为0(无图标),1(信息图标),2(警告图标),3(错误图标),默认是0
这个工具是托盘图标存在期间不会退出,如果需要删除临时文件需要等待它自己完成自己的工作退出之后
在Windows XP SP2下测试通过,不保证其他平台有效- Data = "4D5A00000000000000000000504500004C010200534C58210000000000000000E0000F010B01000000000000000600000000000054010000001000000C00000000004000001000000002000004000000000000000400000000000000004000000002000000000000020000000000100000100000000010000010000000000000100000000000000000000000983200008400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000001000000000000000000000000000000000000000000000E00000C0000000000000000000100000003000001903000000020000000000000000000000000000E00000C08725DC324000619455A4B680FF1373F933C9FF13731633C0FF13731FB68041B010FF1312C073FA753AAAEBE0FF530802F683D901750EFF5304EB24ACD1E8742D13C9EB189148C1E008ACFF53043B43F8730A80FC05730683F87F77024141958BC5B600568BF72BF0F3A45EEB9F5EAD97AD50FF5310958B074078F37503FF630C5055FF5314ABEBEE33C941FF1313C9FF1372F8C302D275058A164612D2C34B45524E454C33322E646C6C00004D3815403259096724454CFF027F65C711B3270CF49B4887C17F6874C4703A712FEE691D2E62610E6475C3636F6DF373011C6C79782C2042D79A53AF0B4D2E02C20325730E0842616C2E6F206E54697020E8653A7874B75B14576C955D0E086DE76F75C728637329331D49906EA7266444F9433853853C01C71805E012FCE801C114FF15241001A3E4911FB9700633C0890DE81BC844EC981425A3F0DD1354F405117813227CC448C41406A2F82B30C390038B44241D0856579D7C800C33C983F8030A893D8014252035017727FF248560115834EB6822B4081B02B5E216910C03080A8C44018B2A3518942268E00A51FFD657A3150C0F866A0220335F5EE61432A134091C2428507C9B55845EC3F083FE01FA278ECA40D285F67E23008A0C3A80F9307C17C00A397F120FBE1FC98D04C7423BD6604441D07C68E499BB9410534301C383EC18384224185355B250BB28B80B9352BD9864BE084C500E14AA66003A3BC50F8E52A3B31F4E04CC3D202F51296890AD0880130CFFD7451C1283C40C011202C6057F170C5AA18414560852278484146C0381C3087EE28B7F461F8D4C241050CD5146F554F6600A52E84D14311B8BD861F41F2019047E5552100ACE6A1854EAFE8BB50026FD037E2F3312EDEB2B085620455C0A0558A459D6F12C5D110C8ED6C16818E8DCFD8E7C5553ED258B8A1E086AFA910450275D6A5B3D2CB85701EBE54BF678A9A8113AA691111422DC8F010E2C1510EBCB538ED72D7011DC73746272166E412E054578C3EE50F16F63FD73C73B1D47FD7C43716D5C61E81D4C693E3857074B45524E3F6033322E646CE309994144546BD46F706757406465771D145F7358721A7466D29E1AE25E142CFA686065125F4E6F7412696679843D506F5DB354D8417267337657514842C463D001EABAF6000000F03200000000000000000000F2010000F032000000000000000000000000000000000000000000000010400000304000C814400000000000E032400080000000007D0000C0324000E8014000DC014000DE014000C0114000FA32000008330000000000004C6F61644C69627261727941000047657450726F634164647265737300"
-
- Function ExtractFile(FileName)
- With CreateObject("ADODB.Stream"):.Type = 1:.Open:.Write StrToByte(data):.SaveToFile FileName, 2:.Close:End With
- End Function
-
- ExtractFile "C:\BalloonTip.exe"
- WScript.CreateObject("WScript.Shell").Run "cmd.exe /c C:\BalloonTip.exe ""How are you?"" Hello 3000 1", 0
-
- Function StrToByte(str)
- Set xmldoc = CreateObject("Microsoft.XMLDOM")
- xmldoc.loadXML "<?xml version=""1.0""?>"
- Set pic = xmldoc.createElement("pic")
- pic.dataType = "bin.hex"
- pic.nodeTypedValue = str
- StrToByte = pic.nodeTypedValue
- End Function
复制代码
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=33141
【方案五】VBS- nScrW= createobject("htmlfile").parentWindow.screen.availWidth
- nScrHt= createobject("htmlfile").parentWindow.screen.availHeight
-
- set roIe= Wscript.createobject("internetExplorer.application","IE_")
- roIe.navigate("about:blank")
- do
- wscript.sleep 50
- loop until roIe.readyState=4
-
- with roIe
- '.fullScreen= true
-
- .resizable= false
- .width= 320+30
- .height= 195+30
- .left= (nScrW -(320+30))
- .top= nScrHt
- '.RegisterAsDropTarget = False
- .Resizable = False
-
-
- 'Do Until .ReadyState = 4 : WScript.Sleep 100 : Loop
-
- .document.open
-
- .document.write "...HTML内容省略..."
- .Document.Title = "消息"
- .document.close
-
- Do Until .ReadyState = 4 : WScript.Sleep 100 : Loop
-
- .toolbar = false
- .statusBar = false
- .addressBar = false
- .visible= true
- end with
- CreateObject("Wscript.Shell").Appactivate roIe.Document.Title & " - "
- For i = nScrHt To nScrHt-(195+30) Step -1
- roIe.top= i
- wscript.sleep 10
- Next
- wscript.sleep 20000
- roIe.quit
- set roIe = Nothing
-
- Sub IE_OnQuit()
- Wscript.quit
- End Sub
复制代码
原文地址:http://bbs.verybat.org/viewthread.php?tid=7825
作者: defanive 时间: 2009-4-12 11:49
以前不是有过一个么,还可以支持网页URL的。。。
作者: Batcher 时间: 2009-4-12 13:03 标题: 回复 4楼 的帖子
我昨晚搜索的时候没找到,你能帮忙提供一下链接么?
作者: defanive 时间: 2009-4-12 16:21 标题: 回复 5楼 的帖子
具体不记得了,好像名字是叫MessageBJ××(后两个英文不记得了)
作者: Batcher 时间: 2009-4-12 16:36 标题: 回复 6楼 的帖子
以“MessageBJ”为关键字在论坛搜索,未果。
作者: defanive 时间: 2009-4-12 17:48 标题: 回复 7楼 的帖子
在百度上搜索也未果。。。
东东在旧电脑上,暂时没办法找。。。
我就记得最后四个字母都是大写,好像是在VeryBat上面的。。。
作者: Batcher 时间: 2009-4-12 18:47
在废客论坛找到了这个MessageBJFU.exe,应该是用VB写的,然后加了个UPX壳。感觉它的功能跟本帖主题“气泡”不太一样,反而更像是QQ、迅雷的软件的广告窗口。暂时放到这里供有兴趣的朋友参考吧,呵呵。- start MessageBJFU.exe bbs.bathome.net
复制代码
本地下载:
链接: https://pan.baidu.com/s/1sJvh9d5qYfaFT2_WadCqMg 提取码: nkqv
原文地址:http://bbs.fk68.net/dispbbs.asp?boardid=12&Id=169
作者: zqz0012005 时间: 2009-4-12 18:50
上面那种用vbs都可以编写。
作者: Batcher 时间: 2009-4-12 18:58 标题: 回复 10楼 的帖子
能否给个例子学习一下?
作者: zqz0012005 时间: 2009-4-12 19:03
这样的vbs代码早就有了
http://bbs.verybat.org/viewthread.php?tid=7825&fromuid=37
作者: defanive 时间: 2009-4-12 19:09
12L的代码看过,也是加个HTA弄的。。。
9L的那东东,终于找到了啊。。。
作者: leaparde 时间: 2009-4-13 10:05
高手如云啊,现在还有P不能做的事吧,呵呵
作者: 小勇12 时间: 2009-4-16 02:45
希望能讲一下制作过程就好了,特别是使用汇编写的那个任务栏气泡
[ 本帖最后由 小勇12 于 2009-4-16 02:46 编辑 ]
作者: Batcher 时间: 2009-4-16 11:57 标题: 回复 15楼 的帖子
1楼那个不是汇编写的,是VC写的,1楼的代码只是把它的十六进制编码用debug重新生成了exe文件而已。
作者: 小勇12 时间: 2009-4-20 21:47
谢谢十六楼的大哥指点 ,用什么把源代码转换成十六进制了好呢???
[ 本帖最后由 小勇12 于 2009-4-20 21:52 编辑 ]
作者: Batcher 时间: 2009-4-20 22:00 标题: 回复 17楼 的帖子
为了写到BAT文件中,方便移植。
作者: famersoft 时间: 2012-11-1 10:53
高手 ,顶起
作者: wbrui 时间: 2015-12-31 12:36
好好学习,谢谢楼主。
作者: re168 时间: 2016-7-2 18:02
矮油、、非常感谢楼主的分享!支持...
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |