pb中实现系统托盘
pb+api实际应用

(转)pb+api实际应用(一)2010-09-13 23:45:22| 分类:PB学习资料 | 标签:pb api实例 |字号订阅1、利用Api函数计算Windows从启动后所运行的总时间Function long GetTickCount() Library "kernel32.dll" //获取windows 从启动开始的总微秒数窗口w_example的open事件:timer(0.05)//触发timer事件窗口的timer事件:long hour , minute ,secondhour = GetTickCount() \ 1000 \ 60 \ 60//获取小时数st_1.text = String(hour) + "小时"minute = (GetTickCount() - hour * 60 * 60 * 1000) \ 1000 \ 60//获取分钟数st_2.text = Str(minute) + "分钟"second = (GetTickCount() - long(st_1.text) * 60 * 60 * 1000 -long(st_2.text) * 60 * 1000) \ 1000//获取总秒数st_3.text = String(second) + "秒钟"2、GetSystemMetrics函数Function long GetSystemMetrics (long nIndex ) Lib “user32.dll”其中nIndex的不同取值可以使该函数实现不同的功能。
例如返回Win桌面中各种显示单元的宽度和高度、是否安装鼠标、是否调换了鼠标左右键的定义等。
当nIndex = 67(SM_CLEANBOOT)时,该函数的返回值表示Windows9x的当前运行模式。
在以下的示例中我们可以看到GetSystemMetrics函数的用法和作用。
任务栏中的托盘程序设计

var
Form1: TForm1;
tray1,tray2:TNotifyIconData;
ico1,ico2:ticon;
tags:boolean;
these values:
NIM_ADD Adds an icon to the status area.{添加图标}
NIM_DELETE Deletes an icon from the status area.{删除图标}
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
Delphi俱乐部V3.0-[编程技巧]
想收藏本站的编程技巧吗?向您推荐一个可以方便地收藏整理网上编程技巧软件--网络收藏家。
任务栏中的托盘程序设计
高红岩
pnid
Pointer to a NOTIFYICONDATA structure. The content of the
structure depends on the value of dwMessage.
TForm1 = class(TForm)
ImageList1: TImageList;
ApplicationEvents1: TApplicationEvents;
PopupMenu1: TPopupMenu;
begin
showwindow(application.handle,sw_hide);
inherited;
visual foxpr中实现系统托盘和响应

在 64个字符 内
2 一些 原 始 的库 函 数文 件 大 致如 下
NotifylconData = NumToDWORD(cbSize)l
Clear
+ NumToDW ORD(hW nd) I
# Define W MJLBUTTONDBLCLK515
+ chr(uID)+ Chr(0)+ Chr(0)+ Chr(0)I
Declare integer She】l Notify lcon in shell32 integer,String 退 出,并且在 日常应用 中有很多实用的应用 ,由于笔者能力有限,还
@
请批评指正 。
4定义 自己的函数
参 考 文 献
那么 下面我们就开始 定义 我们 自己的应用程序 和调 用我们的 应用程序 了,下面是一个 实际的例 子,可以嵌套 自己的应用程序
b_icon= Extractlcon(1,”自定义 .exe”,0)&& 可以从你 自
开发完一 个程序 ,都希 望它 能够 最小 化到系统 托盘 图标 ,那么 在 己的exe文件 中提取图标
Visual foxpro中这 个程序需要定 义和调用
szTip= padr(”自定义托盘 ”,64,chr(0))&& 工 具提 示 ,控制
ulD = l
随着操作系统的发展 ,特别进入Windows NT架构之后 ,数据
uFlags = NIFJⅥESSAGE + N IF—ICON + NIF—_TIP
库 的开 发更是 丰富多 彩起 来 ,本文中 ,笔者对通过多年来的教学和
uCallbackM essage=W M —M OU SEM OVE
系统 下运行 的一款 数据 库开发程 序,本文 结合操作 系统把 程序 调用 到 系统托 盘 的具体 实现 方 法进 行分 析研 究。
pb中实现系统托盘

pb中实现系统托盘pb 程序托盘化(taskbar status area)一、涉及的API//托盘程序需要的API1、shell_notifyicon(long dwmessage,ref nstr_notifyicondata lpdata)功能:创建、修改、删除托盘图标参数:dwmessage 0:创建托盘图标;1:修改托盘图标;2:删除图标lpdata 结构体结构体定义:long cbsize 结构体长度,固定为88;long hwnd 图标消息接收窗口;long uid 任务栏图标对应的应用程序定义的标识符;long uflags 结构体成员有效标志,1:hicon有效,2:ucallbackmessage有效,4:sztip有效,可以组合long ucallbackmessage 返回给窗口hwnd的消息long hicon 图标character sztip[64] 鼠标移动到图标时显示的文字pb声明:function integer shell_notifyicon (long dwmessage,ref nstr_notifyicondata lpdata) library "shell32" alias for "Shell_NotifyIconA"2、loadimage(long hinst,string lpszName,long uType ,long cxDesired ,long cyDesired ,long fuLoad )功能:装载图片参数:hinst 包含要装载图片的模块实例的句柄,如果是OEM图片,则此参数为0lpszName 图片文件名(带路径)uType 装载图片的类型,0:bitmap,2:cursor,1:iconcxDesired utype为1,2时表示图像的宽度(象素),如果utype为0则必须设为0cyDesired utype为1,2时表示图像的高度(象素),如果utype为0则必须设为0fuLoad 设为0pb声明:function long loadimage (long hinst,string lpsz,long un1,long n1,long n2,longun2) library "user32" alias for "LoadImageA"3、destroyicon(long hicon)功能:销毁图片参数:hicon 图片句柄pb声明:function long destroyicon (long hicon) library "user32" alias for "DestroyIcon"4、CreatePopupMenu()功能:创建一个弹出菜单pb声明:Function long CreatePopupMenu() Library "user32"5、AppendMenu (long hMenu, long wFlags,long wIDNewItem,string lpNewItem)功能:增加一个菜单项参数:hMenu 弹出菜单句柄wFlags 控制菜单项的各种参数(可组合,详细标识请参考MSDN)wIDNewItem 菜单项ID,通过此ID来确定选择的菜单lpNewItem 菜单显示文字pb声明:Function long AppendMenu (long hMenu, long wFlags,long wIDNewItem,string lpNewItem) Library "user32" Alias for"AppendMenuA"6、TrackPopupMenu (long hMenu,long wFlags,long xx,long yy,long nReserved,long hwnd,long lprc)功能:弹出菜单参数:hmenu 菜单句柄wflags 弹出菜单显示选项(详细选项请参考MSDN)xx 弹出菜单的X坐标yy 弹出菜单的Y坐标nReserved 设为0hwnd 弹出菜单对应的窗口lprc 无效参数(设为0)Function long TrackPopupMenu (long hMenu,long wFlags,long xx,long yy,long nReserved,long hwnd,long lprc) Library "user32"7、GetCursorPos (POINT lpPoint)功能:获取鼠标所在的屏幕位置参数:lppoint 结构体结构体定义:long x x坐标long y y坐标pb声明:Function long GetCursorPos (ref POINT lpPoint) Library "user32"8、DestroyMenu (long hMenu)功能:销毁菜单参数:hMenu 菜单句柄pb声明:Function long DestroyMenu (long hMenu) Library "user32" Alias for "DestroyMenu"9、SetForegroundWindow(ulong hwnd)功能:将窗口设置在前参数:hwnd 窗口句柄Function ulong SetForegroundWindow(ulong hwnd) LIBRARY "user32.dll"二、PB实例(实例变量nstr_notifyicondata istr_notifyicon)1、创建图盘图标(窗口OPEN时):long ll_hndstring ls_iconname//图标文件ls_iconname = 'comm.ico'll_hnd = loadimage(0,ls_iconname,1,0,0,16)if ll_hnd = 0 thenmessagebox("错误","装载位图文件失败,程序无法启动!",stopsign!)return falseelseistr_notifyicon.cbsize = 88istr_notifyicon.hwnd = handle(this)istr_notifyicon.uid = 0istr_notifyicon.hicon = ll_hndistr_notifyicon.uflags = 7istr_notifyicon.ucallbackmessage = 1025 //pb自定义消息pbm_custom02istr_notifyicon.sztip = '托盘程序'shell_notifyicon(0,istr_notifyicon)return trueend if2、接收消息(自定义pbm_custom02事件)int li_selectpoint lp_positionlong ll_hmenuchoose case lparamcase 516 //鼠标右键单击按下ll_hMenu = CreatePopupMenu()AppendMenu(ll_hMenu,0,1,"菜单A")AppendMenu(ll_hMenu,2048,5,"")//菜单分隔横线AppendMenu(ll_hMenu,0,2,"关闭")GetCursorPos(lp_position)SetForegroundWindow(handle(this)) //将窗口前置,防止点击右键后必须选择菜单项才能关闭菜单li_select = TrackPopupMenu(ll_hMenu,2 + 256 +128,lp_position.x,lp_position.y,0,handle(this),0)choose case li_selectcase 1//菜单A相关操作case 2post close(this)end chooseDestroyMenu(ll_hmenu)end choose3、窗口关闭(CLOSE事件)istr_notifyicon.ucallbackmessage = 0 shell_notifyicon(2,istr_notifyicon)if istr_notifyicon.hicon <> 0 then destroyicon(istr_notifyicon.hicon) end ifistr_notifyicon.hicon = 0。
标准托盘、周转箱(筐)循环共用体系建设与运营方案(一)

标准托盘、周转箱(筐)循环共用体系建设与运营方案1. 实施背景随着中国物流行业的快速发展,标准化和集约化成为提升产业效率的关键。
托盘和周转箱(筐)作为物流运作的基本单元,其循环共用体系的建设与运营成为行业关注的焦点。
传统的托盘、周转箱(筐)一次性使用模式不仅浪费资源,还增加了企业运营成本。
因此,建立标准化的托盘、周转箱(筐)循环共用体系势在必行。
2. 工作原理标准托盘、周转箱(筐)循环共用体系基于物联网技术,通过智能芯片和传感器实现对托盘、周转箱(筐)的实时监控和追踪。
企业通过数据中心和智能APP实现资源的高效调度和管理。
该体系利用共享经济模式,将托盘、周转箱(筐)的租赁、回收、清洗、维修等环节纳入规范化管理,实现资源的循环利用。
3. 实施计划步骤1.调研市场,明确需求:对目标市场进行深入调研,了解企业对托盘、周转箱(筐)的需求类型、数量和使用频率。
2.建立标准,设计系统:根据调研结果,制定托盘、周转箱(筐)的制造标准和规格,设计循环共用系统架构。
3.选定试点,建设网络:选择具有代表性的企业作为试点,建立托盘、周转箱(筐)的租赁、回收、清洗和维修服务网络。
4.推广应用,优化运营:根据试点项目的运营情况,不断优化和完善循环共用体系,逐步推广至其他企业。
5.扩大规模,实现全国覆盖:根据市场需求和运营情况,逐步扩大循环共用体系的覆盖范围,最终实现全国性网络的建设。
4. 适用范围该循环共用体系适用于各类需要进行货物运输和仓储的企业,特别是那些对物流效率要求较高的行业,如电商、快递、冷链物流以及制造业等。
同时,该体系还可为政府提供数据支持,为政策制定提供科学依据。
5. 创新要点1.标准化设计:通过制定统一的托盘、周转箱(筐)制造标准,实现不同企业之间的无缝对接,提高运作效率。
2.循环共用:通过智能调度和租赁回收机制,实现托盘、周转箱(筐)的高效循环使用,降低企业运营成本。
3.物联网技术应用:利用物联网技术实现对托盘、周转箱(筐)的实时监控和追踪,为企业决策提供数据支持。
python任务栏托盘的实现方法

python任务栏托盘的实现方法全文共四篇示例,供读者参考第一篇示例:python任务栏托盘的实现方法随着计算机技术的不断发展,我们的电脑系统也越来越复杂,软件功能也越来越强大。
而在我们日常使用电脑的过程中,经常会遇到一些软件需要常驻在任务栏托盘中的情况,以便我们随时查看和操作。
这种任务栏托盘的实现方法也越来越多样化,为了满足用户需求,我们可以使用Python来实现一个任务栏托盘程序。
本文将介绍如何使用Python开发一个简单的任务栏托盘程序,并展示如何在程序中添加菜单以及实现一些基本功能。
一、准备工作首先,我们需要确保计算机上已经安装了Python环境,并且安装了PyQt库。
PyQt是一个Python模块,提供了Qt库的Python接口,可以用来创建桌面应用程序。
如果你还没有安装PyQt库,可以使用pip命令来安装:```bashpip install pyqt5```安装完成后,我们就可以开始编写任务栏托盘程序了。
二、编写任务栏托盘程序首先,创建一个新的Python文件,命名为tray.py,并在文件中添加以下代码:```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QSystemTrayIcon, QMenu, QActiondef main():app = QApplication(sys.argv)tray = QSystemTrayIcon()tray.setIcon(QIcon('icon.png'))menu = QMenu()action1 = QAction('Action 1', menu)action2 = QAction('Action 2', menu)action1.triggered.connect(lambda: print('Action 1 clicked!'))action2.triggered.connect(lambda: print('Action 2 clicked!'))menu.addAction(action1)menu.addAction(action2)tray.setContextMenu(menu)tray.show()sys.exit(app.exec_())if __name__ == '__main__':main()```上面的代码中,我们首先导入必要的模块,然后创建了一个QApplication对象和一个QSystemTrayIcon对象。
利用VB实现系统托盘技术

利用VB实现系统托盘技术作者:赵汝苓来源:《中国新通信》2017年第05期【摘要】通过调用API函数实现系统托盘技术,主要涉及到API的几个常用函数的声明和调用,再结合VB本身的特征综合运用。
【关键词】 API 系统托盘消息机制系统托盘常指Windows任务栏的状态区域,系统时钟、音量控制等程序都在系统托盘中,一些应用程序在安装完后也将它们本身的图标放入了其中。
一般来说,系统托盘驻留程序是在计算机后台运行,如瑞星、MSN等。
系统托盘主要以特殊的小图标在任务栏右边时间的区域出现,作为程序运行的一个标志,我们可以通过使用小图标所弹出的菜单来控制应用程序状态,可实现修改该图标、窗口复位、最大化、最小化及关闭程序等功能。
利用VB调用API可以实现功能比较完整的托盘程序,牵涉到Shell_NotifyIcon、SendMassage、CallWindowProc、SetWindowLong等API函数,其中Shell_NotifyIcon是主要的函数,它用来添加、删除、更改系统托盘区的图标,SendMassage、CallWindowProc、SetWindowLong函数,通过WINDOWS操作系统的消息机制,实现对应用程序的控制。
一、先介绍相关的API函数、关键字1、Shell_NotifyIcon用于添加、删除、更改系统托盘区的图标;2、SendMassage用于将一条消息发给某个窗口;3、CallWindowProc用于发送消息到一个窗口过程;4、SetWindowLong 用于使窗口结构中为指定的窗口设置属性,SetWindowLong函数作用是取得默认窗口过程的地址,然后转向自定义的窗口过程的地址。
5、消息机制。
Windows消息控制中心一般是三层结构,其顶端就是Windows内核。
Windows内核维护着一个消息队列,第二季控制中心从这个消息队列中获取自己管辖的消息,后作出处理,有些消息直接处理掉,有些还要发送给下一级窗体或控件。
托盘标准化建设五种典型模式

该模式核心优势在于生产企业是供应链起点,位于标准托盘应用的源头,对物流标准化在降低生产、运营成本方面的体会最为直接,设备设施标准化改造也最为深入广泛,对全产业、全链条标准化有着较强的带动作用。从生产基地、田头地头向仓储方、运输方、经销商、零售商等“顺行”而下,一贯式推进物流标准化作业和全程带板运输,将在更大范围推动标准托盘、周转箱(筐)的循环共用。
开展托盘租赁服务业务。销售托盘之外开展托盘租赁业务,面向全国或特定服务区域,通过自建维修、租赁服务站点或与第三方企业合作的方式,实现托盘异地退租、回收、维修等,为客户提供托盘破损置换、集团内拆借转租、闲置共享、异地回收、残值处置等增值服务。
该模式核心优势在于保证了标准托盘、周转箱(筐)等物流载具的供给,为物流标准化提供了器具基础。托盘生产企业能够第一时间了解商贸物流企业、快消品生产企业、托盘租赁企业等标准托盘使用方的需求,并根据市场反馈优化产品和服务供给质量。同时托盘生产企业持续发展售租一体的经营模式,延伸托盘租赁、维修、回收等市场化服务,提升托盘使用便利性。
建设供应链上下游托盘循环共用体系。整合上游供应商、物流运输企业、连锁商超等资源,建立企业间战略合作伙伴关系,共同租赁同一家运营企业的标准托盘,或建立标准托盘共用互认机制,推动托盘在上下游企业间顺畅流转和循环共用。建立零供双方信任机制,优化收验货流程,通过多种激励手段如绿色通道、快速收验货以及诚信收货等,推动标准托盘在供应链全流程的使用,提升带板运输效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pb 程序托盘化(taskbar status area)
一、涉及的API
//托盘程序需要的API
1、shell_notifyicon(long dwmessage,ref nstr_notifyicondata lpdata)
功能:创建、修改、删除托盘图标
参数:dwmessage 0:创建托盘图标;1:修改托盘图标;2:删除图标
lpdata 结构体
结构体定义:
long cbsize 结构体长度,固定为88;
long hwnd 图标消息接收窗口;
long uid 任务栏图标对应的应用程序定义的标识符;
long uflags 结构体成员有效标志,1:hicon有效,2:ucallbackmessage有效,4:sztip有效,可以组合
long ucallbackmessage 返回给窗口hwnd的消息
long hicon 图标
character sztip[64] 鼠标移动到图标时显示的文字
pb声明:
function integer shell_notifyicon (long dwmessage,ref nstr_notifyicondata lpdata) library "shell32" alias for "Shell_NotifyIconA"
2、loadimage(long hinst,string lpszName,long uType ,long cxDesired ,long cyDesired ,long fuLoad )
功能:装载图片
参数:hinst 包含要装载图片的模块实例的句柄,如果是OEM图片,则此参数为0
lpszName 图片文件名(带路径)
uType 装载图片的类型,0:bitmap,2:cursor,1:icon
cxDesired utype为1,2时表示图像的宽度(象素),如果utype为0则必须设为0
cyDesired utype为1,2时表示图像的高度(象素),如果utype为0则必须设为0
fuLoad 设为0
pb声明:
function long loadimage (long hinst,string lpsz,long un1,long n1,long n2,long
un2) library "user32" alias for "LoadImageA"
3、destroyicon(long hicon)
功能:销毁图片
参数:hicon 图片句柄
pb声明:
function long destroyicon (long hicon) library "user32" alias for "DestroyIcon"
4、CreatePopupMenu()
功能:创建一个弹出菜单
pb声明:
Function long CreatePopupMenu() Library "user32"
5、AppendMenu (long hMenu, long wFlags,long wIDNewItem,string lpNewItem)
功能:增加一个菜单项
参数:hMenu 弹出菜单句柄
wFlags 控制菜单项的各种参数(可组合,详细标识请参考MSDN)
wIDNewItem 菜单项ID,通过此ID来确定选择的菜单
lpNewItem 菜单显示文字
pb声明:
Function long AppendMenu (long hMenu, long wFlags,long wIDNewItem,string lpNewItem) Library "user32" Alias for "AppendMenuA"
6、TrackPopupMenu (long hMenu,long wFlags,long xx,long yy,long nReserved,long hwnd,long lprc)
功能:弹出菜单
参数:hmenu 菜单句柄
wflags 弹出菜单显示选项(详细选项请参考MSDN)
xx 弹出菜单的X坐标
yy 弹出菜单的Y坐标
nReserved 设为0
hwnd 弹出菜单对应的窗口
lprc 无效参数(设为0)
Function long TrackPopupMenu (long hMenu,long wFlags,long xx,long yy,long nReserved,long hwnd,long lprc) Library "user32"
7、GetCursorPos (POINT lpPoint)
功能:获取鼠标所在的屏幕位置
参数:lppoint 结构体
结构体定义:
long x x坐标
long y y坐标
pb声明:
Function long GetCursorPos (ref POINT lpPoint) Library "user32"
8、DestroyMenu (long hMenu)
功能:销毁菜单
参数:hMenu 菜单句柄
pb声明:
Function long DestroyMenu (long hMenu) Library "user32" Alias for "DestroyMenu"
9、SetForegroundWindow(ulong hwnd)
功能:将窗口设置在前
参数:hwnd 窗口句柄
Function ulong SetForegroundWindow(ulong hwnd) LIBRARY "user32.dll"
二、PB实例(实例变量nstr_notifyicondata istr_notifyicon)
1、创建图盘图标(窗口OPEN时):
long ll_hnd
string ls_iconname
//图标文件
ls_iconname = 'comm.ico'
ll_hnd = loadimage(0,ls_iconname,1,0,0,16)
if ll_hnd = 0 then
messagebox("错误","装载位图文件失败,程序无法启动!",stopsign!)
return false
else
istr_notifyicon.cbsize = 88
istr_notifyicon.hwnd = handle(this)
istr_notifyicon.uid = 0
istr_notifyicon.hicon = ll_hnd
istr_notifyicon.uflags = 7
istr_notifyicon.ucallbackmessage = 1025 //pb自定义消息pbm_custom02
istr_notifyicon.sztip = '托盘程序'
shell_notifyicon(0,istr_notifyicon)
return true
end if
2、接收消息(自定义pbm_custom02事件)
int li_select
point lp_position
long ll_hmenu
choose case lparam
case 516 //鼠标右键单击按下
ll_hMenu = CreatePopupMenu()
AppendMenu(ll_hMenu,0,1,"菜单A")
AppendMenu(ll_hMenu,2048,5,"")//菜单分隔横线
AppendMenu(ll_hMenu,0,2,"关闭")
GetCursorPos(lp_position)
SetForegroundWindow(handle(this)) //将窗口前置,防止点击右键后必须选择菜单项才能关闭菜单
li_select = TrackPopupMenu(ll_hMenu,2 + 256 +
128,lp_position.x,lp_position.y,0,handle(this),0)
choose case li_select
case 1
//菜单A相关操作
case 2
post close(this)
end choose
DestroyMenu(ll_hmenu)
end choose
3、窗口关闭(CLOSE事件)
istr_notifyicon.ucallbackmessage = 0 shell_notifyicon(2,istr_notifyicon)
if istr_notifyicon.hicon <> 0 then destroyicon(istr_notifyicon.hicon) end if
istr_notifyicon.hicon = 0。