首页
社区
课程
招聘
[已解决]汇编中托盘气球提示框的问题
发表于: 2009-3-10 18:40 4018

[已解决]汇编中托盘气球提示框的问题

2009-3-10 18:40
4018
.386
.model flat, stdcall ;32 bit memory model
option casemap :none ;case sensitive




include windows.inc
include kernel32.inc
include user32.inc
include Comctl32.inc
include shell32.inc
include debug.inc

includelib kernel32.lib
includelib user32.lib
includelib Comctl32.lib
includelib shell32.lib



NOTIFYICONDAT STRUCT
cbSize DWORD ?
hwnd DWORD ?
uID DWORD ?
uFlags DWORD ?
uCallbackMessage DWORD ?
hIcon DWORD ?
szTip BYTE 128 dup (?)
dwState DWORD ?
dwStateMask DWORD ?
szInfo BYTE 256 dup (?)
uTimeout DWORD ?
szInfoTitle BYTE 64 dup (?)
dwInfoFlags DWORD ?

NOTIFYICONDAT ENDS



DlgProc PROTO :HWND,:UINT,:WPARAM,:LPARAM

.const

IDD_DIALOG1 equ 101
IDI_TRAY equ 0

WM_NOTIFYICON equ WM_USER+1

; uFlags to NOTIFYICONDATA structure

NIF_ICON equ 2h
NIF_INFO equ 10h
NIF_MESSAGE equ 1h
NIF_STATE equ 8h
NIF_TIP equ 4h


; dwInfoFlags to NOTIFIICONDATA structure


NIS_HIDDEN equ 1h ; 隐藏图标
NIS_SHAREDICON equ 2h ; 共享图标
NIIF_NONE equ 0h ;无图标
NIIF_INFO equ 1h ; 消息"图标
NIIF_WARNING equ 2h ; "警告"图标
NIIF_ERROR equ 3h ;"错误"图标


; dwMessage to Shell_NotifyIcon
NIM_ADD equ 0h
NIM_DELETE equ 2h
NIM_MODIFY equ 1h
NIM_SETFOCUS equ 3h
NIM_SETVERSION equ 4h


;#########################################################################

.data?

hInstance dd ?
note NOTIFYICONDAT <>

;#########################################################################



.code

start:

invoke GetModuleHandle,NULL
mov hInstance,eax

invoke InitCommonControls


invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL

invoke ExitProcess,0

;########################################################################

DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

mov eax,uMsg
.if eax==WM_INITDIALOG

;invoke ShowWindow,hWin,SW_HIDE

; invoke SendMessage,hWin,WM_SETICON,ICON_BIG,eax ;设置窗口图标


mov note.cbSize,sizeof NOTIFYICONDAT ;结构大小(字节)

push hWin
pop note.hwnd ;' 处理消息的窗口的句柄


mov note.uID,IDI_TRAY ; 唯一的标识符


mov note.uFlags,NIF_TIP+NIF_ICON+NIF_MESSAGE+NIF_INFO+NIF_STATE

mov note.uCallbackMessage,WM_NOTIFYICON ;处理消息的窗口接收的消息

invoke LoadIcon,hInstance,1
mov note.hIcon,eax ;托盘图标句柄


invoke lstrcpy,addr note.szTip,CTEXT("ESET_NOD32_ID自动升级器 V1.0") ;提示文本


mov note.dwState ,0
mov note.dwStateMask,0


invoke lstrcpy, addr note.szInfo,CTEXT("气泡内容")
invoke lstrcpy,addr note.szInfoTitle,CTEXT("气泡标题:")


mov note.dwInfoFlags , NIIF_INFO
mov note.uTimeout,1000 ;超时毫秒数


invoke Shell_NotifyIcon,NIM_ADD,addr note




.elseif eax==WM_COMMAND

.elseif eax==WM_CLOSE
invoke EndDialog,hWin,0
invoke Shell_NotifyIcon,NIM_DELETE,addr note

.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret

DlgProc endp

end start


大家帮忙看看,问题到底出在哪呢?怎么总是不成功?

O(∩_∩)O谢谢了

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
测试了一下,我这里没有任何问题。
上传的附件:
  • 1.JPG (4.89kb,101次下载)
2009-3-10 19:23
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
3
啊,为什么我这里不行,和系统有关?我这里是2003的

不过,现在可以了,O(∩_∩)O谢谢了
2009-3-10 20:59
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
我的也是2003的。
2009-3-10 21:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
aogo上有例子
2009-3-10 21:22
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
6
O(∩_∩)O谢谢大家,问题完全解决了,是我的系统问题,开的东西太多了,估计内存有点不够用,重新注销下就好了
2009-3-10 22:31
0
游客
登录 | 注册 方可回帖
返回
//