Delphi托盘问题

Delphi托盘问题,第1张

兄弟一句一句解释还不如我分3部介绍3部分内容你就明白了!1个记录类型变量,2个API函数.

1,Tnotifyicondata 记录原体:

type

_NOTIFYICONDATAA = record

cbSize: DWORD cbSize就是你定义的NotifyIcon变量的大小,用SizeOf(TNotifyIconData)可以取得,

Wnd: HWND Wnd是一个句柄,你希望托盘程序产生的消息有哪个窗体来处理就让Wnd指向那个窗体.

uID: UINT uID:如果你要创建多个托盘小程序,那么怎么区分它们呢?就是靠这个ID号来区分。

uFlags: UINT uFlags是一个标志位,它表示当前所创建的托盘程序具有哪些性质.

NIF_ICON 表示当前所设置的图标(即hIcon的值)是有效的

NIF_MESSAGE 表示当前所设置的系统消息(即uCallBackMessage的值)是有效的

NIF_TIP 表示当前所设置的提示条(即szTip的值)是有效的

uCallbackMessage: UINTuCallBackMessage这是7个部分里面最重要的一个。这里指定一个回调消息,也就是说这里定义一个消息名,当你单击或者右击托盘图标的时候就会向你在Wnd所指向的窗体发送一个在uCallBackMessage中定义的消息名,然后你在程序中定义一个消息出来函数来处理这个消息。这样就把Windows关于消息的整套流程都处理好了。

hIcon: HICON hIcon为托盘图标的句柄,根据这个句柄你就可以增加、修改、删除图标。

szTip: array [0..63] of AnsiChar szTip就是当你的鼠标放到任务栏托盘的小图标上的时候d出来的提示信息。

end

2,ShowWindow

是一个API函数.函数功能:该函数设置指定窗口的显示状态。

参数:

nCmdShow:指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一:

SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。

SW_HIDE:隐藏窗口并激活其他窗口。

SW_MAXIMIZE:最大化指定的窗口。

SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。

SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。

SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。

SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。

SW_SHOWMAXIMIZED:激活窗口并将其最大化。

SW_SHOWMINIMIZED:激活窗口并将其最小化。

SW_SHOWMINNOACTIVATE:窗口最小化,激活窗口仍然维持激活状态。

SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。

SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。

SW_SHOWNOMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志

返回值:如果窗口以前可见,则返回值为非零。如果窗口以前被隐藏,则返回值为零。

3,Shell_NotifyIcon 系统托盘API函数

Shell_NotifyIcon(dwMessage: DWORDlpData: PNotifyIconData)

dwMessage:[输入参数] 说明要执行的动作。动作的可选值如下:

NIM_ADD 增加一个图标到托盘区

NIM_DELETE 从托盘区删除一个图标

NIM_MODIFY 修改图标

NIM_SETFOCUS 将焦点(Focus)返回托盘区。这个消息通常在托盘区图标完成了用户界面下的 *** 作后发出。比如一个托盘图标显示了一个快捷菜单,然后用户按下ESC键了 *** 作,这时使用NIM_SETFOCUS将焦点继续保 留在托盘区。该项仅在系统外壳与常用控制DLL( Shlwapi.dll与Comctl32.dll)5.0以上版本才可用

NIM_SETVERSION 指定使用特定版本的系统外壳与常用控制DLL。缺省值为0,表示使用Win95方式。该项在系统外壳与常用控制DLL 5.0以上版本才可用。

lpdata:[输入参数] 一个指向NOTIFYICONDATA结构的指针

返回值:成功时函数返回TRUE,否则FALSE。

回调消息上面记录体解释已经解释了.

句柄:HANDLE这是一个中文翻译很古怪的字,我刚开始时一直不知道它是什么东东。刚开始学时总想知道一个HANDLE代表一个什么对象,现在我不去理解它是某对象,而就是理解为访问某一个对象的入口,事实上HANDLE大多数时候是一个整数索引(标志该对象在 *** 作系统的某表中的位置,就好像一个数组的下标一样),Windows系统核心中主要是几张大表,这样一个整数索引就是标记目标在这个表中的位置,供 *** 作系统访问时查询用。偶而它的确是指向某对象的指针,有时它还携带一些额外辅助信息。

用 autoit 自带的窗口信息工具(AutoIt Window Info)来识别。 也可以使用内置函数 WinGetHandle() 来根据窗口标题或类或其他属性来获取窗口句柄。 参见帮助里的:Window Titles and Text (Advanced) 即,窗口匹配的高级模式。 相应地,获取控件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7767078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存