Acknowledgments |
|
xix | |
|
Windows Shell Programming |
|
|
1 | (11) |
|
|
2 | (1) |
|
What is the Windows Shell? |
|
|
3 | (2) |
|
|
5 | (5) |
|
|
5 | (1) |
|
Application Desktop Toolbars |
|
|
6 | (1) |
|
|
6 | (1) |
|
|
6 | (1) |
|
|
7 | (1) |
|
|
7 | (1) |
|
|
8 | (1) |
|
|
8 | (1) |
|
Tools to Build a Namespace Extension |
|
|
9 | (1) |
|
Namespace Extension Example: The Registry |
|
|
9 | (1) |
|
Explorer Bars and Desktop Bands |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
12 | (29) |
|
How to Get Taskbar Information |
|
|
14 | (4) |
|
Getting the Taskbar's State and Position |
|
|
15 | (1) |
|
|
16 | (2) |
|
How to Add and Remove Buttons From the Taskbar |
|
|
18 | (3) |
|
How to Add Items to the Start Menu |
|
|
21 | (5) |
|
How to Add Icons to the System Tray |
|
|
26 | (14) |
|
A Class for Animating the Tray |
|
|
29 | (11) |
|
|
40 | (1) |
|
Application Desktop Toolbars |
|
|
41 | (53) |
|
Guidelines for Creating Application Desktop Toolbars |
|
|
42 | (1) |
|
|
43 | (10) |
|
|
43 | (7) |
|
|
50 | (3) |
|
An Application Desktop Toolbar Library |
|
|
53 | (30) |
|
An Application Desktop Toolbar Application |
|
|
83 | (10) |
|
|
93 | (1) |
|
|
94 | (24) |
|
When to Use the Control Panel |
|
|
95 | (1) |
|
|
96 | (3) |
|
|
96 | (1) |
|
|
97 | (2) |
|
A Control Panel Library and Wizard |
|
|
99 | (10) |
|
|
99 | (7) |
|
The Control Panel Library |
|
|
106 | (1) |
|
The Control Panel AppWizard |
|
|
107 | (2) |
|
|
109 | (7) |
|
|
110 | (2) |
|
|
112 | (2) |
|
|
114 | (2) |
|
Debugging Control Panel Applets |
|
|
116 | (1) |
|
|
116 | (2) |
|
|
118 | (19) |
|
Screen Saver Responsibilities |
|
|
119 | (1) |
|
|
119 | (2) |
|
|
121 | (10) |
|
Implementing an MFC Screen Saver AppWizard and Library |
|
|
122 | (1) |
|
|
123 | (4) |
|
|
127 | (4) |
|
Example: The Bouncing Ball |
|
|
131 | |
|
|
36 | (101) |
|
|
137 | (39) |
|
|
138 | (4) |
|
|
142 | (9) |
|
|
144 | (1) |
|
|
144 | (3) |
|
|
147 | (2) |
|
File Viewer User Interface Expectations |
|
|
149 | (2) |
|
|
151 | (1) |
|
|
151 | (13) |
|
|
153 | (11) |
|
|
164 | (10) |
|
|
174 | (2) |
|
|
176 | (67) |
|
Common Features of Shell Extensions |
|
|
177 | (5) |
|
|
182 | (9) |
|
|
191 | (6) |
|
|
197 | (17) |
|
|
214 | (8) |
|
|
222 | (13) |
|
|
235 | (6) |
|
|
241 | (1) |
|
|
241 | (2) |
|
|
243 | (25) |
|
The Disk Cleanup Utility and Handlers |
|
|
245 | (9) |
|
Address Book File Consolidation |
|
|
254 | (12) |
|
Debugging Disk Cleanup Handlers |
|
|
254 | (3) |
|
Address Book Disk Cleanup Handler |
|
|
257 | (9) |
|
|
266 | (2) |
|
|
268 | (20) |
|
When to Build a Namespace Extension |
|
|
271 | (1) |
|
Types of Namespace Extensions |
|
|
271 | (6) |
|
Non-rooted Namespace Extensions |
|
|
273 | (1) |
|
Rooted Namespace Extensions |
|
|
274 | (3) |
|
|
277 | (3) |
|
|
280 | (2) |
|
Displaying All the Contents of the Folder |
|
|
282 | (3) |
|
Testing and Debugging Namespace Extensions |
|
|
285 | (2) |
|
|
287 | (1) |
|
Tools to Build a Namespace Extension |
|
|
288 | (43) |
|
The Namespace Extension Wizard Creates A Project |
|
|
289 | (5) |
|
The Implementation of IShellFolder (and its cohorts) |
|
|
294 | (18) |
|
The Implementation of IShellView (and its cohorts) |
|
|
312 | (17) |
|
|
329 | (2) |
|
Namespace Extension Example: The Registry |
|
|
331 | (30) |
|
Requirements for the Registry Namespace Extension |
|
|
332 | (2) |
|
Defining the Registry ITEMIDLIST Structure |
|
|
334 | (2) |
|
Implementing the IEnumlDList Interface |
|
|
336 | (7) |
|
Implementing the IShellFolder Interface |
|
|
343 | (6) |
|
Displaying the Contents of the Folder: CWinRegListView |
|
|
349 | (11) |
|
|
360 | (1) |
|
Explorer Bars and Desktop Bands |
|
|
361 | (36) |
|
|
362 | (7) |
|
|
362 | (4) |
|
|
366 | (2) |
|
Communicating With the Container |
|
|
368 | (1) |
|
|
369 | (13) |
|
|
371 | (2) |
|
Registration/Unregistration Code |
|
|
373 | (2) |
|
Implementation Class Header File |
|
|
375 | (2) |
|
Implementation Class Source File |
|
|
377 | (5) |
|
|
382 | (4) |
|
|
386 | (9) |
|
|
395 | (2) |
APPENDIX A COM Interfaces Used by the Shell |
|
397 | (76) |
|
|
398 | (1) |
|
|
398 | (3) |
|
|
401 | (1) |
|
|
402 | (1) |
|
|
403 | (1) |
|
|
403 | (1) |
|
|
403 | (1) |
|
|
404 | (1) |
|
|
405 | (1) |
|
A.10 IEmptyVolumeCacheCallBack |
|
|
406 | (1) |
|
|
406 | (1) |
|
|
406 | (1) |
|
|
406 | (2) |
|
|
408 | (1) |
|
|
409 | (1) |
|
|
410 | (1) |
|
|
410 | (1) |
|
|
410 | (1) |
|
|
411 | (1) |
|
|
412 | (1) |
|
|
413 | (2) |
|
|
415 | (3) |
|
|
418 | (1) |
|
|
419 | (1) |
|
|
420 | (1) |
|
|
421 | (2) |
|
|
423 | (1) |
|
|
424 | (1) |
|
|
425 | (1) |
|
|
426 | (2) |
|
|
428 | (7) |
|
|
435 | (1) |
|
|
435 | (2) |
|
|
437 | (1) |
|
|
437 | (1) |
|
|
438 | (7) |
|
|
445 | (2) |
|
|
447 | (1) |
|
|
448 | (8) |
|
|
456 | (1) |
|
|
456 | (6) |
|
|
462 | (2) |
|
|
464 | (7) |
|
|
471 | (2) |
APPENDIX B Shell Functions, Structures, and Enumerations |
|
473 | (76) |
|
|
474 | (1) |
|
|
475 | (2) |
|
|
477 | (2) |
|
|
479 | (1) |
|
|
480 | (1) |
|
|
481 | (1) |
|
|
481 | (1) |
|
|
482 | (1) |
|
|
482 | (1) |
|
|
482 | (2) |
|
|
484 | (1) |
|
|
484 | (1) |
|
|
484 | (1) |
|
|
485 | (1) |
|
|
486 | (1) |
|
|
486 | (1) |
|
|
487 | (1) |
|
|
488 | (1) |
|
|
488 | (3) |
|
|
491 | (1) |
|
|
492 | (1) |
|
B.22 SHCreateShellPalette |
|
|
492 | (1) |
|
|
493 | (1) |
|
|
494 | (1) |
|
|
494 | (1) |
|
|
495 | (1) |
|
|
496 | (1) |
|
|
496 | (1) |
|
|
497 | (1) |
|
|
497 | (3) |
|
|
500 | (1) |
|
|
500 | (3) |
|
|
503 | (1) |
|
|
504 | (2) |
|
|
506 | (1) |
|
|
507 | (1) |
|
|
508 | (1) |
|
|
509 | (1) |
|
|
509 | (1) |
|
|
510 | (2) |
|
|
512 | (1) |
|
|
512 | (1) |
|
|
513 | (1) |
|
|
513 | (1) |
|
|
514 | (2) |
|
|
516 | (1) |
|
|
517 | (1) |
|
B.48 SHGetInstanceExplorer |
|
|
518 | (1) |
|
|
519 | (1) |
|
|
519 | (1) |
|
|
520 | (1) |
|
|
521 | (1) |
|
B.53 SHGetSpecialFolderLocation |
|
|
522 | (1) |
|
B.54 SHGetSpecialFolderPath |
|
|
522 | (1) |
|
|
523 | (1) |
|
|
524 | (1) |
|
B.57 SHlnvokePrinterCommand |
|
|
525 | (1) |
|
|
526 | (1) |
|
|
526 | (1) |
|
|
527 | (1) |
|
|
527 | (1) |
|
|
528 | (1) |
|
|
529 | (1) |
|
|
529 | (1) |
|
|
530 | (1) |
|
|
531 | (1) |
|
|
531 | (1) |
|
|
532 | (1) |
|
B.69 SHRegDeleteEmptyUSKey |
|
|
533 | (1) |
|
|
533 | (1) |
|
|
534 | (1) |
|
|
534 | (1) |
|
|
535 | (1) |
|
|
536 | (1) |
|
|
537 | (1) |
|
|
538 | (1) |
|
|
539 | (1) |
|
|
539 | (1) |
|
|
540 | (1) |
|
|
541 | (1) |
|
|
542 | (1) |
|
|
543 | (1) |
|
|
544 | (1) |
|
|
544 | (1) |
|
|
545 | (1) |
|
|
545 | (1) |
|
|
546 | (1) |
|
|
547 | (2) |
Index |
|
549 | (23) |
About the CD |
|
572 | |