可以,参考 RxLib 的 RxShell Unit:<br>type<br> TLoadLibrary32 = function (FileName: PChar; Handle, Special: Longint): Longint;<br> TFreeLibrary32 = function (Handle: Longint): Bool;<br> TGetAddress32 = function (Handle: Longint; ProcName: PChar): Pointer;<br> TCallProc32 = function (Msg: Longint; Data: PNotifyIconData; ProcHandle: Pointer;<br> AddressConvert, Params: Longint): Longint;<br>const<br> Shell32: Longint = 0;<br> ProcAddr: Pointer = nil;<br> FreeLib32: TFreeLibrary32 = nil;<br> CallPrc32: TCallProc32 = nil;<br>procedure InitHandles;<br>var<br> Kernel16: THandle;<br> LoadLib32: TLoadLibrary32;<br> GetAddr32: TGetAddress32;<br>begin<br> Kernel16 := GetModuleHandle('kernel');<br> @LoadLib32 := GetProcAddress(Kernel16, 'LoadLibraryEx32W');<br> @FreeLib32 := GetProcAddress(Kernel16, 'FreeLibrary32W');<br> @GetAddr32 := GetProcAddress(Kernel16, 'GetProcAddress32W');<br> @CallPrc32 := GetProcAddress(Kernel16, 'CallProc32W');<br> if (@LoadLib32 <> nil) and (@FreeLib32 <> nil) and (@GetAddr32 <> nil)<br> and (@CallPrc32 <> nil) then<br> begin<br> Shell32 := LoadLib32('shell32', 0, 0);<br> if Shell32 >= HINSTANCE_ERROR then begin<br> ProcAddr := GetAddr32(Shell32, 'Shell_NotifyIcon');<br> if ProcAddr = nil then begin<br> FreeLib32(Shell32);<br> Shell32 := 1;<br> end<br> else AddExitProc(FreeHandles);<br> end<br> else Shell32 := 1;<br> end;<br>end;<br><br>这些代码都是 Win16 Subsystem 可以执行的。调用的时候要注意数据大小及对齐方式。<br>顺便问一句:Delphi 5 & C++ Builder 5 Service Pack 各自的 CD-Key 是什么?