📄 shnotify.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL D:\WM610\PUBLIC\SHELLW\OAK\SAMPLES\SHNOTIFICATION\.\shnotify.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |?g_hInstance@@3PAUHINSTANCE__@@A| [ DATA ] ; g_hInstance
EXPORT |?g_hwndMain@@3PAUHWND__@@A| [ DATA ] ; g_hwndMain
EXPORT |?g_hwndBubble@@3PAUHWND__@@A| [ DATA ] ; g_hwndBubble
EXPORT |??_C@_1BI@HCPBHEEN@?$AAN?$AAO?$AAT?$AAI?$AAF?$AAY?$AA_?$AAT?$AAE?$AAS?$AAT?$AA?$AA@| [ DATA ] ; `string'
00000 AREA |.bss|, NOINIT
|?g_hInstance@@3PAUHINSTANCE__@@A| % 0x4 ; g_hInstance
|?g_hwndMain@@3PAUHWND__@@A| % 0x4 ; g_hwndMain
|?g_hwndBubble@@3PAUHWND__@@A| % 0x4 ; g_hwndBubble
00000 AREA |.rdata| { |??_C@_1BI@HCPBHEEN@?$AAN?$AAO?$AAT?$AAI?$AAF?$AAY?$AA_?$AAT?$AAE?$AAS?$AAT?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BI@HCPBHEEN@?$AAN?$AAO?$AAT?$AAI?$AAF?$AAY?$AA_?$AAT?$AAE?$AAS?$AAT?$AA?$AA@| DCB "N"
DCB 0x0, "O", 0x0, "T", 0x0, "I", 0x0, "F", 0x0, "Y", 0x0, "_"
DCB 0x0, "T", 0x0, "E", 0x0, "S", 0x0, "T", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata|, DATA, READONLY
|g_szAppName| DCD |??_C@_1BI@HCPBHEEN@?$AAN?$AAO?$AAT?$AAI?$AAF?$AAY?$AA_?$AAT?$AAE?$AAS?$AAT?$AA?$AA@|
|CLSID_SHNAPI_MenuNotif| DCD 0xae78222f
DCW 0xc375
DCW 0x4c7a
DCB 0x94
DCB 0x60
DCB 0x8f
DCB 0x34
DCB 0xe5
DCB 0xca
DCB 0xa4
DCB 0x17
|CLSID_SHNAPI_OemNotif3| DCD 0x1ee011d2
DCW 0xf265
DCW 0x4214
DCB 0xa4
DCB 0xed
DCB 0xf0
DCB 0xea
DCB 0x2e
DCB 0x82
DCB 0x7f
DCB 0x2a
|CLSID_SHNAPI_OemNotif2| DCD 0x99de7411
DCW 0x772f
DCW 0x43d0
DCB 0x81
DCB 0xf0
DCB 0x66
DCB 0x83
DCB 0x36
DCB 0xca
DCB 0x65
DCB 0x1b
|CLSID_SHNAPI_OemNotif1| DCD 0xb3a81802
DCW 0x9095
DCW 0x4b4b
DCB 0x87
DCB 0x13
DCB 0x7d
DCB 0x65
DCB 0xb6
DCB 0xfb
DCB 0x8b
DCB 0xbc
EXPORT |?BubbleMessagePump@@YAXPAUHWND__@@0@Z| ; BubbleMessagePump
IMPORT |IsWindow|
IMPORT |DestroyWindow|
IMPORT |IsDialogMessageW|
IMPORT |GetMessageW|
IMPORT |TranslateMessage|
IMPORT |DispatchMessageW|
; File d:\wm610\public\shellw\oak\samples\shnotification\shnotify.cpp
00000 AREA |.text| { |?BubbleMessagePump@@YAXPAUHWND__@@0@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?BubbleMessagePump@@YAXPAUHWND__@@0@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?BubbleMessagePump@@YAXPAUHWND__@@0@Z| } ; comdat associative
|$T44635| DCD |$L44634|
DCD 0x40001c02
; Function compile flags: /Ogsy
00000 AREA |.text| { |?BubbleMessagePump@@YAXPAUHWND__@@0@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?BubbleMessagePump@@YAXPAUHWND__@@0@Z| PROC ; BubbleMessagePump
; 56 : {
00000 |$L44634|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 e24dd01c sub sp, sp, #0x1C
00008 |$M44632|
00008 e1a05001 mov r5, r1
0000c e1a04000 mov r4, r0
; 57 : while (IsWindow(hDlg))
00010 ea00000d b |$L44307|
00014 |$L44304|
; 58 : {
; 59 : MSG msg;
; 60 :
; 61 : GetMessage(&msg, NULL, 0, 0);
00014 e3a03000 mov r3, #0
00018 e3a02000 mov r2, #0
0001c e3a01000 mov r1, #0
00020 e28d0000 add r0, sp, #0
00024 eb000000 bl GetMessageW
; 62 : if (!IsDialogMessage(hDlg, &msg))
00028 e28d1000 add r1, sp, #0
0002c e1a00004 mov r0, r4
00030 eb000000 bl IsDialogMessageW
00034 e3500000 cmp r0, #0
00038 1a000003 bne |$L44307|
; 63 : {
; 64 : // process the message
; 65 : TranslateMessage(&msg);
0003c e28d0000 add r0, sp, #0
00040 eb000000 bl TranslateMessage
; 66 : DispatchMessage(&msg);
00044 e28d0000 add r0, sp, #0
00048 eb000000 bl DispatchMessageW
0004c |$L44307|
0004c e1a00004 mov r0, r4
00050 eb000000 bl IsWindow
00054 e3500000 cmp r0, #0
00058 1affffed bne |$L44304|
; 67 : }
; 68 :
; 69 : }
; 70 :
; 71 : DestroyWindow(hwndOwner);
0005c e1a00005 mov r0, r5
00060 eb000000 bl DestroyWindow
; 72 :
; 73 : }
00064 e28dd01c add sp, sp, #0x1C
00068 e8bd4030 ldmia sp!, {r4, r5, lr}
0006c e12fff1e bx lr
00070 |$M44633|
ENDP ; |?BubbleMessagePump@@YAXPAUHWND__@@0@Z|, BubbleMessagePump
EXPORT |?SHBoxHookProc@@YAHPAUHWND__@@IIJPAX@Z| ; SHBoxHookProc
EXPORT |??_C@_1BG@MBAMAOHI@?$AAc?$AAt?$AAl?$AAp?$AAn?$AAl?$AA?4?$AAe?$AAx?$AAe?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BG@PIPAHKJH@?$AAc?$AAp?$AAl?$AAm?$AAa?$AAi?$AAn?$AA?5?$AA1?$AA9?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CK@PFCHDHN@?$AAT?$AAe?$AAs?$AAt?$AAB?$AAu?$AAb?$AAb?$AAl?$AAe?$AA?3?$AA?1?$AA?1?$AAC?$AAo?$AAn?$AAn?$AAe?$AAc?$AAt@| [ DATA ] ; `string'
IMPORT |_wcsnicmp|
IMPORT |GetParent|
IMPORT |memset|
IMPORT |ShellExecuteEx|
IMPORT |PostMessageW|
00000 AREA |.text| { |?SHBoxHookProc@@YAHPAUHWND__@@IIJPAX@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?SHBoxHookProc@@YAHPAUHWND__@@IIJPAX@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?SHBoxHookProc@@YAHPAUHWND__@@IIJPAX@Z| } ; comdat associative
|$T44651| DCD |$L44650|
DCD 0x40004a02
00000 AREA |.rdata| { |??_C@_1CK@PFCHDHN@?$AAT?$AAe?$AAs?$AAt?$AAB?$AAu?$AAb?$AAb?$AAl?$AAe?$AA?3?$AA?1?$AA?1?$AAC?$AAo?$AAn?$AAn?$AAe?$AAc?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CK@PFCHDHN@?$AAT?$AAe?$AAs?$AAt?$AAB?$AAu?$AAb?$AAb?$AAl?$AAe?$AA?3?$AA?1?$AA?1?$AAC?$AAo?$AAn?$AAn?$AAe?$AAc?$AAt@| DCB "T"
DCB 0x0, "e", 0x0, "s", 0x0, "t", 0x0, "B", 0x0, "u", 0x0, "b"
DCB 0x0, "b", 0x0, "l", 0x0, "e", 0x0, ":", 0x0, "/", 0x0, "/"
DCB 0x0, "C", 0x0, "o", 0x0, "n", 0x0, "n", 0x0, "e", 0x0, "c"
DCB 0x0, "t", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BG@MBAMAOHI@?$AAc?$AAt?$AAl?$AAp?$AAn?$AAl?$AA?4?$AAe?$AAx?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BG@MBAMAOHI@?$AAc?$AAt?$AAl?$AAp?$AAn?$AAl?$AA?4?$AAe?$AAx?$AAe?$AA?$AA@| DCB "c"
DCB 0x0, "t", 0x0, "l", 0x0, "p", 0x0, "n", 0x0, "l", 0x0, "."
DCB 0x0, "e", 0x0, "x", 0x0, "e", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BG@PIPAHKJH@?$AAc?$AAp?$AAl?$AAm?$AAa?$AAi?$AAn?$AA?5?$AA1?$AA9?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BG@PIPAHKJH@?$AAc?$AAp?$AAl?$AAm?$AAa?$AAi?$AAn?$AA?5?$AA1?$AA9?$AA?$AA@| DCB "c"
DCB 0x0, "p", 0x0, "l", 0x0, "m", 0x0, "a", 0x0, "i", 0x0, "n"
DCB 0x0, " ", 0x0, "1", 0x0, "9", 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?SHBoxHookProc@@YAHPAUHWND__@@IIJPAX@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?SHBoxHookProc@@YAHPAUHWND__@@IIJPAX@Z| PROC ; SHBoxHookProc
; 77 : {
00000 |$L44650|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 e24dd03c sub sp, sp, #0x3C
00008 |$M44648|
00008 e1a05003 mov r5, r3
0000c e1a06002 mov r6, r2
00010 e1a07000 mov r7, r0
; 78 : int ires = FALSE;
00014 e3a04000 mov r4, #0
; 79 :
; 80 : switch(uMsg)
00018 e351004e cmp r1, #0x4E
0001c 0a000024 beq |$L44330|
00020 e3a0ee11 mov lr, #0x11, 28
00024 e38ee001 orr lr, lr, #1
00028 e151000e cmp r1, lr
0002c 1a000036 bne |$L44343|
; 81 : {
; 82 : case WM_COMMAND:
; 83 : {
; 84 :
; 85 : // dismiss the bubble
; 86 : PostMessage(GetParent(hwnd), SHBM_CLOSE, wParam, lParam);
00030 eb000000 bl GetParent
00034 e3a01902 mov r1, #2, 18
00038 e3811044 orr r1, r1, #0x44
0003c e1a03005 mov r3, r5
00040 e1a02006 mov r2, r6
00044 eb000000 bl PostMessageW
; 87 :
; 88 : switch (LOWORD(wParam))
00048 e1a03806 mov r3, r6, lsl #16
0004c e1a03823 mov r3, r3, lsr #16
00050 e3530a03 cmp r3, #3, 20
00054 1a00002c bne |$L44343|
; 89 : {
; 90 : case 12288:
; 91 : {
; 92 : SHELLEXECUTEINFO sei = {0};
00058 e3a02038 mov r2, #0x38
0005c e3a01000 mov r1, #0
00060 e28d0004 add r0, sp, #4
00064 eb000000 bl memset
; 93 : sei.cbSize = sizeof(sei);
; 94 : sei.fMask = 0;
; 95 : sei.hwnd = NULL;
; 96 : sei.lpVerb = NULL;
; 97 : sei.lpFile = TEXT("ctlpnl.exe");
00068 e59f30b4 ldr r3, [pc, #0xB4]
; 98 : sei.lpParameters = TEXT("cplmain 19");
0006c e59f20ac ldr r2, [pc, #0xAC]
00070 e3a0103c mov r1, #0x3C
00074 e3a0e000 mov lr, #0
00078 e3a04000 mov r4, #0
0007c e3a05000 mov r5, #0
; 99 : sei.lpDirectory = NULL;
00080 e3a06000 mov r6, #0
; 100 : sei.nShow = SW_SHOWNORMAL;
00084 e3a07001 mov r7, #1
; 101 : ShellExecuteEx(&sei);
00088 e28d0000 add r0, sp, #0
0008c e58d3010 str r3, [sp, #0x10]
00090 e58d2014 str r2, [sp, #0x14]
00094 e58d1000 str r1, [sp]
00098 e58de004 str lr, [sp, #4]
0009c e58d4008 str r4, [sp, #8]
000a0 e58d500c str r5, [sp, #0xC]
000a4 e58d6018 str r6, [sp, #0x18]
000a8 e58d701c str r7, [sp, #0x1C]
000ac eb000000 bl ShellExecuteEx
; 102 : ires = TRUE;
; 103 : }
; 104 : break;
; 105 :
; 106 :
; 107 : }
; 108 : }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -