appinst.exe网资是什么么

ShellExecuteHook 示例
LiuMazi.ico
《Windows核心编程》PASCAL例子
01-ErrorShow
ErrorShow.dpr
ErrorShow.exe
ErrorShow.ico
ErrorShow.rc
ErrorShow.res
04-ProcessInfo
ProcessInfo.dpr
ProcessInfo.exe
ProcessInfo.ico
ProcessInfo.rc
ProcessInfo.res
07-SchedLab
SchedLab.dpr
SchedLab.exe
SchedLab.ico
SchedLab.rc
SchedLab.res
09-Handshake
Handshake.dpr
Handshake.exe
Handshake.ico
Handshake.rc
Handshake.res
OptexTest.dpr
OptexTest.exe
SWMRGTest.dpr
SWMRGTest.exe
10-WaitForMultExp
WaitForMultExp.ico
WfMETest.dpr
WfMETest.exe
WfMETest.rc
WfMETest.res
11-TimedMsgBox
TimedMsgBox.dpr
TimedMsgBox.ico
TimedMsgBox.rc
TimedMsgBox.res
12-Counter
Counter.dpr
Counter.exe
Counter.ico
Counter.rc
Counter.res
14-SysInfo
SysInfo.dpr
SysInfo.exe
SysInfo.ico
SysInfo.rc
SysInfo.res
VMStat.dpr
VMStat.exe
VMStat.ico
VMStat.res
15-MemReset
MemReset.dpr
MemReset.exe
MemReset.ico
MemReset.rc
MemReset.res
15-VMAlloc
VMAlloc.dpr
VMAlloc.exe
VMAlloc.ico
VMAlloc.rc
VMAlloc.res
16-Summation
Summation.dpr
Summation.exe
Summation.ico
Summation.rc
Summation.res
17-AppInst
AppInst-Back.exe
AppInst.dpr
AppInst.exe
AppInst.ico
AppInst.rc
AppInst.res
17-FileRev
FileRev.dpr
FileRev.exe
FileRev.ico
FileRev.rc
FileRev.res
17-MMFShare
MMFShare.dpr
MMFShare.exe
MMFShare.ico
MMFShare.rc
MMFShare.res
17-MMFSparse
MMFSparse.dpr
MMFSparse.exe
MMFSparse.ico
MMFSparse.rc
MMFSparse.res
22-DIPSLib
DIPSLib.dll
DIPSLib.dpr
DIPSLib.rc
DIPSLib.res
22-ImgWalk
ImgWalk.dll
ImgWalk.dpr
InjLib.dpr
InjLib.exe
InjLib.ico
InjLib.res
22-LastMsgBoxInfo
LastMsgBoxInfo.dpr
LastMsgBoxInfo.exe
LastMsgBoxInfo.ico
LastMsgBoxInfo.rc
LastMsgBoxInfo.res
22-LastMsgBoxInfoLib
LastMsgBoxInfoLib.dll
LastMsgBoxInfoLib.dpr
23-SEHTerm
SEHTerm.dpr
SEHTerm.exe
SEHTerm.ico
SEHTerm.rc
SEHTerm.res
25-Spreadsheet
Spreadsheet.dpr
Spreadsheet.exe
Spreadsheet.ico
Spreadsheet.rc
Spreadsheet.res
26-CopyData
CopyData.dpr
CopyData.exe
CopyData.ico
CopyData.rc
CopyData.res
LISLab.dpr
LISLab.exe
LISLab.ico
LISLab.res
27-LISWatch
LISWatch.dpr
LISWatch.exe
LISWatch.ico
LISWatch.rc
LISWatch.res
《Windows程序设计》PASCAL例子
HelloMsg.dpr
HelloMsg.exe
10. 菜单及其它资源
IconDemo.bat
IconDemo.dpr
IconDemo.exe
IconDemo.rc
IconDemo.res
IDI_ICON.ico
PoePoem.bat
PoePoem.dpr
PoePoem.exe
PoePoem.ico
PoePoem.rc
PoePoem.RES
PoePoem.txt
MenuDemo.bat
MenuDemo.dpr
MenuDemo.exe
MenuDemo.rc
MenuDemo.RES
MenuDemo.dpr
MenuDemo.exe
PopMenu.bat
PopMenu.dpr
PopMenu.exe
PopMenu.rc
PopMenu.RES
PoorMenu.dpr
PoorMenu.exe
NoPopUps.bat
NoPopUps.dpr
NoPopUps.exe
NoPopUps.RC
NoPopUps.RES
PopPad2.bat
PopPad2.dpr
PopPad2.exe
PopPad2.ico
PopPad2.RC
PopPad2.RES
11. 对话框
About1.bat
About1.dpr
About1.exe
About1.ico
About1.RES
About2.bat
About2.dpr
About2.exe
About2.ico
About2.RES
About3.bat
About3.dpr
About3.exe
About3.ico
About3.RES
Colors2.bat
Colors2.dpr
Colors2.exe
Colors2.RC
Colors2.RES
HexCalc.bat
HexCalc.dpr
HexCalc.exe
HexCalc.ico
HexCalc.RC
HexCalc.RES
PopPad3.bat
PopPad3.dpr
PopPad3.exe
PopPad3.ico
PopPad3.RC
PopPad3.RES
Colors3.dpr
Colors3.exe
12. 剪贴簿
ClipText.bat
ClipText.dpr
ClipText.exe
ClipText.Rc
ClipText.RES
ClipView.dpr
ClipView.exe
13. 使用打印机
DevCaps2.bat
DevCaps2.dpr
DevCaps2.exe
DevCaps2.rc
DevCaps2.RES
FormFeed.dpr
FormFeed.exe
PopPad3.bat
PopPad3.dpr
PopPad3.exe
PopPad3.ico
PopPad3.RC
PopPad3.RES
14. 位图和Bitblt
BitBlt.dpr
BitBlt.exe
Bounce.dpr
Bounce.exe
Scramble.dpr
Scramble.exe
Blowup.bat
Blowup.dpr
Blowup.exe
Blowup.RES
Stretch.dpr
Stretch.exe
Bricks.bmp
Bricks1.bat
Bricks1.dpr
Bricks1.exe
Bricks1.rc
Bricks1.RES
Bricks2.dpr
Bricks2.exe
Bricks.bmp
Bricks3.bat
Bricks3.dpr
Bricks3.exe
Bricks3.rc
Bricks3.RES
HelloBit.bat
HelloBit.dpr
HelloBit.exe
HelloBit.rc
HelloBit.RES
Sketch.dpr
Sketch.exe
Bighelp.bmp
Editlabl.bmp
Filelabl.bmp
Fontlabl.bmp
GrafMenu.bat
GrafMenu.dpr
GrafMenu.exe
GrafMenu.rc
GrafMenu.RES
BitMask.bat
BitMask.bmp
BitMask.dpr
BitMask.exe
BitMask.rc
BitMask.RES
15. 与设备无关的位图
DibHeads.bat
DibHeads.dpr
DibHeads.exe
DibHeads.rc
DibHeads.RES
ShowDib1.bat
ShowDib1.dpr
ShowDib1.exe
ShowDib1.rc
ShowDib1.RES
Apollo11.bmp
Apollo11.dpr
Apollo11.exe
ApolloTD.bmp
SeqDisp.bat
SeqDisp.dpr
SeqDisp.exe
SeqDisp.rc
SeqDisp.RES
ShowDib2.bat
ShowDib2.dpr
ShowDib2.exe
ShowDib2.rc
ShowDib2.RES
DibConv.bat
DibConv.dpr
DibConv.exe
DibConv.rc
DibConv.RES
DIBsect.bat
DIBsect.dpr
DIBsect.exe
DIBsect.rc
DIBsect.RES
16. 调色盘管理器
Grays1.dpr
Grays1.exe
PalAnim.dpr
PalAnim.exe
PalAnim.dpr
PalAnim.exe
ShowDib3.bat
ShowDib3.dpr
ShowDib3.exe
ShowDib3.rc
ShowDib3.RES
ShowDib4.bat
ShowDib4.dpr
ShowDib4.exe
ShowDib4.rc
ShowDib4.RES
ShowDib5.bat
ShowDib5.dpr
ShowDib5.exe
ShowDib5.rc
ShowDib5.RES
ShowDib6.bat
ShowDib6.dpr
ShowDib6.exe
ShowDib6.rc
ShowDib6.RES
ShowDib7.bat
ShowDib7.dpr
ShowDib7.exe
ShowDib7.rc
ShowDib7.RES
ShowDib8.bat
ShowDib8.dpr
ShowDib8.exe
ShowDib8.rc
ShowDib8.RES
程序16-19~22
Grays2.dpr
Grays2.exe
Grays3.dpr
Grays3.exe
SysPal1.dpr
SysPal1.exe
SysPal2.dpr
SysPal2.exe
SysPal3.dpr
SysPal3.exe
PalAnim.dpr
PalAnim.exe
PalAnim.dpr
PalAnim.exe
PalAnim.dpr
PalAnim.exe
17. 文字和字体
PickFont.bat
PickFont.dpr
PickFont.exe
PickFont.rc
PickFont.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
ChosFont.bat
ChosFont.dpr
ChosFont.exe
ChosFont.rc
ChosFont.RES
UniChars.bat
UniChars.dpr
UniChars.exe
UniChars.rc
UniChars.RES
Justify1.bat
Justify1.dpr
Justify1.exe
Justify1.rc
Justify1.RES
Justify2.bat
Justify2.dpr
Justify2.exe
Justify2.rc
Justify2.RES
EndJoin.dpr
EndJoin.exe
18. Metafile
MetaFile.dpr
MetaFile.exe
EmfView.bat
EmfView.dpr
EmfView.exe
EmfView.rc
EmfView.RES
19. 多重文件界面
MDIDemo.bat
MDIDemo.dpr
MDIDemo.exe
MDIDemo.rc
MDIDemo.RES
2. Unicode简介
ScrnSize.dpr
ScrnSize.exe
20. 多任务和多线程
RndRctMT.dpr
RndRctMT.exe
Multi1.dpr
Multi1.exe
Multi2.dpr
Multi2.exe
BigJob1.dpr
BigJob1.exe
BigJob2.dpr
BigJob2.exe
21. 动态链接库
EDRLib.dll
EDRLib.dpr
EDRTest.dpr
EDRTest.exe
StrLib.dll
StrLib.dpr
StrProg.bat
StrProg.dpr
StrProg.exe
StrProg.rc
StrProg.RES
BitLib.bat
BitLib.dll
BitLib.dpr
BitLib.RES
Bitmap1.bmp
Bitmap2.bmp
Bitmap3.bmp
Bitmap4.bmp
Bitmap5.bmp
Bitmap6.bmp
Bitmap7.bmp
Bitmap8.bmp
Bitmap9.bmp
ShowBit.dpr
ShowBit.exe
22. 声音与音乐
TestMci.bat
TestMci.dpr
TestMci.exe
TestMci.rc
TestMci.RES
SineWave.bat
SineWave.dpr
SineWave.exe
SineWave.rc
SineWave.RES
Record1.bat
Record1.dpr
Record1.exe
Record1.rc
Record1.RES
Record2.dpr
Record2.exe
record2.wav
Record3.dpr
Record3.exe
AddSynth.bat
AddSynth.dpr
AddSynth.exe
AddSynth.rc
AddSynth.RES
WakeUp.dpr
WakeUp.exe
BachTocc.dpr
BachTocc.exe
KBMidi.dpr
KBMidi.exe
23. 领略Internet
NetTime.bat
NetTime.dpr
NetTime.exe
NetTime.rc
NetTime.RES
UpdDemo.bat
UpdDemo.dpr
UpdDemo.exe
UpdDemo.rc
UpdDemo.RES
3. 窗口和消息
HelloWin.dpr
HelloWin.exe
4. 输出文字
程序4-1~程序4-4
SysMets1.dpr
SysMets1.exe
SysMets2.dpr
SysMets2.exe
SysMets3.dpr
SysMets3.exe
5. 图形基础
DevCaps1.dpr
DevCaps1.exe
SineWave.dpr
SineWave.exe
LineDemo.dpr
LineDemo.exe
Bezier.dpr
Bezier.exe
AltWind.dpr
AltWind.exe
WhatSize.dpr
WhatSize.exe
RandRect.dpr
RandRect.exe
Clover.dpr
Clover.exe
SysMets4.dpr
SysMets4.exe
KeyView1.dpr
KeyView1.exe
StokFont.dpr
StokFont.exe
KeyView2.dpr
KeyView2.exe
Connect.dpr
Connect.exe
Checker1.dpr
Checker1.exe
Checker2.dpr
Checker2.exe
Checker3.dpr
Checker3.exe
Checker4.dpr
Checker4.exe
BlokOut1.dpr
BlokOut1.exe
BlokOut2.dpr
BlokOut2.exe
SysMets.dpr
SysMets.exe
Beeper1.dpr
Beeper1.exe
Beeper2.dpr
Beeper2.exe
DigClock.dpr
DigClock.exe
WhatClr.dpr
WhatClr.exe
9. 子窗口控件
BtnLook.dpr
BtnLook.exe
OwnDraw.dpr
OwnDraw.exe
Colors1.dpr
Colors1.exe
PopPad1.dpr
PopPad1.exe
Environ.dpr
Environ.exe
DeleteTemp.bat
《Windows高级编程指南》PASCAL例子
AlertIO.dpr
AlertIO.exe
AlertIO.ico
AlertIO.rc
AlertIO.res
Bucket.dpr
Bucket.exe
Bucket.ico
Bucket.res
CopyData.dpr
CopyData.exe
CopyData.ico
CopyData.rc
CopyData.res
Counter.dpr
Counter.exe
Counter.ico
Counter.rc
Counter.res
CritSecs.dpr
CritSecs.exe
CritSecs.ico
CritSecs.rc
CritSecs.res
DIPSLib.dll
DIPSLib.dpr
DIPSLib.rc
DIPSLib.res
DirWalk.dpr
DirWalk.exe
DirWalk.ico
DirWalk.rc
DirWalk.res
DiskInfo.dpr
DiskInfo.exe
DiskInfo.ico
DiskInfo.rc
DiskInfo.res
DocStats.dpr
DocStats.exe
DocStats.ico
DocStats.rc
DocStats.res
FileChng.dpr
FileChng.exe
FileChng.ico
FileChng.rc
FileChng.res
FileRev.dpr
FileRev.exe
FileRev.ico
FileRev.rc
FileRev.res
ImgWalk.dll
ImgWalk.dpr
IOCmpPrt.dpr
IOCmpPrt.exe
IOCmpPrt.ico
IOCmpPrt.rc
IOCmpPrt.res
LISLab.dpr
LISLab.exe
LISLab.ico
LISLab.res
MMFShare.dpr
MMFShare.exe
MMFShare.ico
MMFShare.rc
MMFShare.res
Module.dll
Module.dpr
Module_2.dll
ModUse.dpr
ModUse.exe
ModUse.ico
ModUse.res
MultInst.dpr
MultInst.exe
MultInst.ico
MultInst.rc
MultInst.res
MultInst_2.exe
Mutexes.dpr
Mutexes.exe
Mutexes.ico
Mutexes.rc
Mutexes.res
SEHExcpt.dpr
SEHExcpt.exe
SEHExcpt.ico
SEHExcpt.rc
SEHExcpt.res
SEHSoft.dpr
SEHSoft.exe
SEHSoft.ico
SEHSoft.rc
SEHSoft.res
SEHSum.dpr
SEHSum.exe
SEHSum.ico
SEHSum.res
SEHTerm.dpr
SEHTerm.exe
SEHTerm.ico
SEHTerm.rc
SEHTerm.res
SomeLib.dll
SomeLib.dpr
SomeLib.rc
SomeLib.res
SprMrkt.dpr
SprMrkt.exe
SprMrkt.ico
SprMrkt.rc
SprMrkt.res
SysInfo.dpr
SysInfo.exe
SysInfo.ico
SysInfo.rc
SysInfo.res
TInjLib.dpr
TInjLib.exe
TInjLib.Ico
TInjLib.rc
TInjLib.res
TLSDyn.dpr
TLSDyn.exe
TLSDyn.ico
TLSDyn.res
TLSStat.dpr
TLSStat.exe
TLSStat.ico
TLSStat.rc
TLSStat.res
VMAlloc.dpr
VMAlloc.exe
VMAlloc.ico
VMAlloc.rc
VMAlloc.res
VMStat.dpr
VMStat.exe
VMStat.ico
VMStat.res
使用系统提供的进度条控件
Progress32.dpr
Progress32.exe
LiuMazi.ico
Liumazi.res
LiuMazi.txt
列举窗口及其路径简单例子
EnumDemo.dpr
EnumDemo.exe
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
初步实现屏幕落雪效果
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
SnowFall.dpr
判断用户目前是否在操作电脑
MsnHook.dpr
LiuMazi.ico
Online.ico
利用Hook插入线程的改进版本
Insert.dpr
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
利用消息钩子屏蔽定时器
UseHook.dpr
LiuMazi.ico
LiuMazi.txt
利用窗口过程钩子截获QQ账号
HookDLL.dll
HookDLL.dpr
UseHook.dpr
UseHook.exe
利用鼠标键盘钩子截获QQ账号
HookDLL.dll
HookDLL.dpr
UseHook.dpr
UseHook.exe
区分大小写的按键记录器2个
KeyHook.dll
KeyHook.dpr
KeyLog1.dpr
KeyLog1.exe
KeyLog2.dpr
只需一个DLL的三级跳
LiuMazi.ico
Liumazi.res
LiuMazi.txt
Insert.dpr
按键转汉字,模拟输入法程序
KeyHook.dll
KeyHook.dpr
UseHook.dpr
Disable.ico
Enable.ico
LiuMazi.ico
简单模拟所谓‘光标跟随’效果
Follow.dpr
Follow.exe
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
简单的文件分割合并工具
Splitter.dpr
Splitter.exe
LiuMazi.ico
预览式文件选择对话框
ClearTemp.bat
LiuMazi.ico
PreViewDlg.dpr
PreViewDlg.res
PreViewDlg.txt
EZ_ATTR_BOLD
EZ_ATTR_ITALIC
EZ_ATTR_UNDERLINE = 4;
EZ_ATTR_STRIKEOUT = 8;
function EzCreateFont(hdc: HDC; szFaceName: PC
iDeciPtHeight, iDeciPtWidth, iAttributes: I fLogRes: Boolean): HFONT;
implementation
function EzCreateFont(hdc: HDC; szFaceName: PC
iDeciPtHeight, iDeciPtWidth, iAttributes: I fLogRes: Boolean): HFONT;
cxDpi, cyDpi: E
tm: TTextM
SaveDC(hdc);
SetGraphicsMode(hdc, GM_ADVANCED);
ModifyWorldTransform(hdc, PXForm(nil)^, MWT_IDENTITY);
SetViewportOrgEx(hdc, 0, 0, nil);
SetWindowOrgEx(hdc, 0, 0, nil);
if fLogRes then
cxDpi := GetDeviceCaps(hdc, LOGPIXELSX);
cyDpi := GetDeviceCaps(hdc, LOGPIXELSY);
cxDpi := (25.4 * GetDeviceCaps(hdc, HORZRES) / GetDeviceCaps(hdc, HORZSIZE));
cyDpi := (25.4 * GetDeviceCaps(hdc, VERTRES) / GetDeviceCaps(hdc, VERTSIZE));
pt.x := Trunc(iDeciPtWidth * cxDpi / 72);
pt.y := Trunc(iDeciPtHeight * cyDpi / 72);
DPtoLP(hdc, pt, 1);
lf.lfHeight := - Trunc(Abs(pt.y) / 10.0 + 0.5);
lf.lfWidth := 0;
lf.lfEscapement := 0;
lf.lfOrientation := 0;
lf.lfWeight := IfThen((iAttributes and EZ_ATTR_BOLD) && 0, 700, 0);
lf.lfItalic := IfThen((iAttributes and EZ_ATTR_ITALIC) && 0, 1, 0);
lf.lfUnderline := IfThen((iAttributes and EZ_ATTR_UNDERLINE) && 0, 1, 0);
lf.lfStrikeOut := IfThen((iAttributes and EZ_ATTR_STRIKEOUT) && 0, 1, 0);
lf.lfCharSet := DEFAULT_CHARSET;
lf.lfOutPrecision := 0;
lf.lfClipPrecision := 0;
lf.lfQuality := 0;
lf.lfPitchAndFamily := 0;
lstrcpy(lf.lfFaceName, szFaceName);
Result := CreateFontIndirect(lf);
if (iDeciPtWidth && 0) then
Result := SelectObject(hdc, Result);
GetTextMetrics(hdc, tm);
DeleteObject(SelectObject(hdc, Result));
lf.lfWidth := Trunc(tm.tmAveCharWidth * Abs(pt.x) / Abs(pt.y) + 0.5);
Result := CreateFontIndirect(lf);
RestoreDC(hdc, -1);
Copyright(C)
OKBASE.NET All Rights Reserved 好库网 版权所有ShellExecuteHook 示例
LiuMazi.ico
《Windows核心编程》PASCAL例子
01-ErrorShow
ErrorShow.dpr
ErrorShow.exe
ErrorShow.ico
ErrorShow.rc
ErrorShow.res
04-ProcessInfo
ProcessInfo.dpr
ProcessInfo.exe
ProcessInfo.ico
ProcessInfo.rc
ProcessInfo.res
07-SchedLab
SchedLab.dpr
SchedLab.exe
SchedLab.ico
SchedLab.rc
SchedLab.res
09-Handshake
Handshake.dpr
Handshake.exe
Handshake.ico
Handshake.rc
Handshake.res
OptexTest.dpr
OptexTest.exe
SWMRGTest.dpr
SWMRGTest.exe
10-WaitForMultExp
WaitForMultExp.ico
WfMETest.dpr
WfMETest.exe
WfMETest.rc
WfMETest.res
11-TimedMsgBox
TimedMsgBox.dpr
TimedMsgBox.ico
TimedMsgBox.rc
TimedMsgBox.res
12-Counter
Counter.dpr
Counter.exe
Counter.ico
Counter.rc
Counter.res
14-SysInfo
SysInfo.dpr
SysInfo.exe
SysInfo.ico
SysInfo.rc
SysInfo.res
VMStat.dpr
VMStat.exe
VMStat.ico
VMStat.res
15-MemReset
MemReset.dpr
MemReset.exe
MemReset.ico
MemReset.rc
MemReset.res
15-VMAlloc
VMAlloc.dpr
VMAlloc.exe
VMAlloc.ico
VMAlloc.rc
VMAlloc.res
16-Summation
Summation.dpr
Summation.exe
Summation.ico
Summation.rc
Summation.res
17-AppInst
AppInst-Back.exe
AppInst.dpr
AppInst.exe
AppInst.ico
AppInst.rc
AppInst.res
17-FileRev
FileRev.dpr
FileRev.exe
FileRev.ico
FileRev.rc
FileRev.res
17-MMFShare
MMFShare.dpr
MMFShare.exe
MMFShare.ico
MMFShare.rc
MMFShare.res
17-MMFSparse
MMFSparse.dpr
MMFSparse.exe
MMFSparse.ico
MMFSparse.rc
MMFSparse.res
22-DIPSLib
DIPSLib.dll
DIPSLib.dpr
DIPSLib.rc
DIPSLib.res
22-ImgWalk
ImgWalk.dll
ImgWalk.dpr
InjLib.dpr
InjLib.exe
InjLib.ico
InjLib.res
22-LastMsgBoxInfo
LastMsgBoxInfo.dpr
LastMsgBoxInfo.exe
LastMsgBoxInfo.ico
LastMsgBoxInfo.rc
LastMsgBoxInfo.res
22-LastMsgBoxInfoLib
LastMsgBoxInfoLib.dll
LastMsgBoxInfoLib.dpr
23-SEHTerm
SEHTerm.dpr
SEHTerm.exe
SEHTerm.ico
SEHTerm.rc
SEHTerm.res
25-Spreadsheet
Spreadsheet.dpr
Spreadsheet.exe
Spreadsheet.ico
Spreadsheet.rc
Spreadsheet.res
26-CopyData
CopyData.dpr
CopyData.exe
CopyData.ico
CopyData.rc
CopyData.res
LISLab.dpr
LISLab.exe
LISLab.ico
LISLab.res
27-LISWatch
LISWatch.dpr
LISWatch.exe
LISWatch.ico
LISWatch.rc
LISWatch.res
《Windows程序设计》PASCAL例子
HelloMsg.dpr
HelloMsg.exe
10. 菜单及其它资源
IconDemo.bat
IconDemo.dpr
IconDemo.exe
IconDemo.rc
IconDemo.res
IDI_ICON.ico
PoePoem.bat
PoePoem.dpr
PoePoem.exe
PoePoem.ico
PoePoem.rc
PoePoem.RES
PoePoem.txt
MenuDemo.bat
MenuDemo.dpr
MenuDemo.exe
MenuDemo.rc
MenuDemo.RES
MenuDemo.dpr
MenuDemo.exe
PopMenu.bat
PopMenu.dpr
PopMenu.exe
PopMenu.rc
PopMenu.RES
PoorMenu.dpr
PoorMenu.exe
NoPopUps.bat
NoPopUps.dpr
NoPopUps.exe
NoPopUps.RC
NoPopUps.RES
PopPad2.bat
PopPad2.dpr
PopPad2.exe
PopPad2.ico
PopPad2.RC
PopPad2.RES
11. 对话框
About1.bat
About1.dpr
About1.exe
About1.ico
About1.RES
About2.bat
About2.dpr
About2.exe
About2.ico
About2.RES
About3.bat
About3.dpr
About3.exe
About3.ico
About3.RES
Colors2.bat
Colors2.dpr
Colors2.exe
Colors2.RC
Colors2.RES
HexCalc.bat
HexCalc.dpr
HexCalc.exe
HexCalc.ico
HexCalc.RC
HexCalc.RES
PopPad3.bat
PopPad3.dpr
PopPad3.exe
PopPad3.ico
PopPad3.RC
PopPad3.RES
Colors3.dpr
Colors3.exe
12. 剪贴簿
ClipText.bat
ClipText.dpr
ClipText.exe
ClipText.Rc
ClipText.RES
ClipView.dpr
ClipView.exe
13. 使用打印机
DevCaps2.bat
DevCaps2.dpr
DevCaps2.exe
DevCaps2.rc
DevCaps2.RES
FormFeed.dpr
FormFeed.exe
PopPad3.bat
PopPad3.dpr
PopPad3.exe
PopPad3.ico
PopPad3.RC
PopPad3.RES
14. 位图和Bitblt
BitBlt.dpr
BitBlt.exe
Bounce.dpr
Bounce.exe
Scramble.dpr
Scramble.exe
Blowup.bat
Blowup.dpr
Blowup.exe
Blowup.RES
Stretch.dpr
Stretch.exe
Bricks.bmp
Bricks1.bat
Bricks1.dpr
Bricks1.exe
Bricks1.rc
Bricks1.RES
Bricks2.dpr
Bricks2.exe
Bricks.bmp
Bricks3.bat
Bricks3.dpr
Bricks3.exe
Bricks3.rc
Bricks3.RES
HelloBit.bat
HelloBit.dpr
HelloBit.exe
HelloBit.rc
HelloBit.RES
Sketch.dpr
Sketch.exe
Bighelp.bmp
Editlabl.bmp
Filelabl.bmp
Fontlabl.bmp
GrafMenu.bat
GrafMenu.dpr
GrafMenu.exe
GrafMenu.rc
GrafMenu.RES
BitMask.bat
BitMask.bmp
BitMask.dpr
BitMask.exe
BitMask.rc
BitMask.RES
15. 与设备无关的位图
DibHeads.bat
DibHeads.dpr
DibHeads.exe
DibHeads.rc
DibHeads.RES
ShowDib1.bat
ShowDib1.dpr
ShowDib1.exe
ShowDib1.rc
ShowDib1.RES
Apollo11.bmp
Apollo11.dpr
Apollo11.exe
ApolloTD.bmp
SeqDisp.bat
SeqDisp.dpr
SeqDisp.exe
SeqDisp.rc
SeqDisp.RES
ShowDib2.bat
ShowDib2.dpr
ShowDib2.exe
ShowDib2.rc
ShowDib2.RES
DibConv.bat
DibConv.dpr
DibConv.exe
DibConv.rc
DibConv.RES
DIBsect.bat
DIBsect.dpr
DIBsect.exe
DIBsect.rc
DIBsect.RES
16. 调色盘管理器
Grays1.dpr
Grays1.exe
PalAnim.dpr
PalAnim.exe
PalAnim.dpr
PalAnim.exe
ShowDib3.bat
ShowDib3.dpr
ShowDib3.exe
ShowDib3.rc
ShowDib3.RES
ShowDib4.bat
ShowDib4.dpr
ShowDib4.exe
ShowDib4.rc
ShowDib4.RES
ShowDib5.bat
ShowDib5.dpr
ShowDib5.exe
ShowDib5.rc
ShowDib5.RES
ShowDib6.bat
ShowDib6.dpr
ShowDib6.exe
ShowDib6.rc
ShowDib6.RES
ShowDib7.bat
ShowDib7.dpr
ShowDib7.exe
ShowDib7.rc
ShowDib7.RES
ShowDib8.bat
ShowDib8.dpr
ShowDib8.exe
ShowDib8.rc
ShowDib8.RES
程序16-19~22
Grays2.dpr
Grays2.exe
Grays3.dpr
Grays3.exe
SysPal1.dpr
SysPal1.exe
SysPal2.dpr
SysPal2.exe
SysPal3.dpr
SysPal3.exe
PalAnim.dpr
PalAnim.exe
PalAnim.dpr
PalAnim.exe
PalAnim.dpr
PalAnim.exe
17. 文字和字体
PickFont.bat
PickFont.dpr
PickFont.exe
PickFont.rc
PickFont.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
FontDemo.bat
FontDemo.dpr
FontDemo.exe
FontDemo.rc
FontDemo.RES
ChosFont.bat
ChosFont.dpr
ChosFont.exe
ChosFont.rc
ChosFont.RES
UniChars.bat
UniChars.dpr
UniChars.exe
UniChars.rc
UniChars.RES
Justify1.bat
Justify1.dpr
Justify1.exe
Justify1.rc
Justify1.RES
Justify2.bat
Justify2.dpr
Justify2.exe
Justify2.rc
Justify2.RES
EndJoin.dpr
EndJoin.exe
18. Metafile
MetaFile.dpr
MetaFile.exe
EmfView.bat
EmfView.dpr
EmfView.exe
EmfView.rc
EmfView.RES
19. 多重文件界面
MDIDemo.bat
MDIDemo.dpr
MDIDemo.exe
MDIDemo.rc
MDIDemo.RES
2. Unicode简介
ScrnSize.dpr
ScrnSize.exe
20. 多任务和多线程
RndRctMT.dpr
RndRctMT.exe
Multi1.dpr
Multi1.exe
Multi2.dpr
Multi2.exe
BigJob1.dpr
BigJob1.exe
BigJob2.dpr
BigJob2.exe
21. 动态链接库
EDRLib.dll
EDRLib.dpr
EDRTest.dpr
EDRTest.exe
StrLib.dll
StrLib.dpr
StrProg.bat
StrProg.dpr
StrProg.exe
StrProg.rc
StrProg.RES
BitLib.bat
BitLib.dll
BitLib.dpr
BitLib.RES
Bitmap1.bmp
Bitmap2.bmp
Bitmap3.bmp
Bitmap4.bmp
Bitmap5.bmp
Bitmap6.bmp
Bitmap7.bmp
Bitmap8.bmp
Bitmap9.bmp
ShowBit.dpr
ShowBit.exe
22. 声音与音乐
TestMci.bat
TestMci.dpr
TestMci.exe
TestMci.rc
TestMci.RES
SineWave.bat
SineWave.dpr
SineWave.exe
SineWave.rc
SineWave.RES
Record1.bat
Record1.dpr
Record1.exe
Record1.rc
Record1.RES
Record2.dpr
Record2.exe
record2.wav
Record3.dpr
Record3.exe
AddSynth.bat
AddSynth.dpr
AddSynth.exe
AddSynth.rc
AddSynth.RES
WakeUp.dpr
WakeUp.exe
BachTocc.dpr
BachTocc.exe
KBMidi.dpr
KBMidi.exe
23. 领略Internet
NetTime.bat
NetTime.dpr
NetTime.exe
NetTime.rc
NetTime.RES
UpdDemo.bat
UpdDemo.dpr
UpdDemo.exe
UpdDemo.rc
UpdDemo.RES
3. 窗口和消息
HelloWin.dpr
HelloWin.exe
4. 输出文字
程序4-1~程序4-4
SysMets1.dpr
SysMets1.exe
SysMets2.dpr
SysMets2.exe
SysMets3.dpr
SysMets3.exe
5. 图形基础
DevCaps1.dpr
DevCaps1.exe
SineWave.dpr
SineWave.exe
LineDemo.dpr
LineDemo.exe
Bezier.dpr
Bezier.exe
AltWind.dpr
AltWind.exe
WhatSize.dpr
WhatSize.exe
RandRect.dpr
RandRect.exe
Clover.dpr
Clover.exe
SysMets4.dpr
SysMets4.exe
KeyView1.dpr
KeyView1.exe
StokFont.dpr
StokFont.exe
KeyView2.dpr
KeyView2.exe
Connect.dpr
Connect.exe
Checker1.dpr
Checker1.exe
Checker2.dpr
Checker2.exe
Checker3.dpr
Checker3.exe
Checker4.dpr
Checker4.exe
BlokOut1.dpr
BlokOut1.exe
BlokOut2.dpr
BlokOut2.exe
SysMets.dpr
SysMets.exe
Beeper1.dpr
Beeper1.exe
Beeper2.dpr
Beeper2.exe
DigClock.dpr
DigClock.exe
WhatClr.dpr
WhatClr.exe
9. 子窗口控件
BtnLook.dpr
BtnLook.exe
OwnDraw.dpr
OwnDraw.exe
Colors1.dpr
Colors1.exe
PopPad1.dpr
PopPad1.exe
Environ.dpr
Environ.exe
DeleteTemp.bat
《Windows高级编程指南》PASCAL例子
AlertIO.dpr
AlertIO.exe
AlertIO.ico
AlertIO.rc
AlertIO.res
Bucket.dpr
Bucket.exe
Bucket.ico
Bucket.res
CopyData.dpr
CopyData.exe
CopyData.ico
CopyData.rc
CopyData.res
Counter.dpr
Counter.exe
Counter.ico
Counter.rc
Counter.res
CritSecs.dpr
CritSecs.exe
CritSecs.ico
CritSecs.rc
CritSecs.res
DIPSLib.dll
DIPSLib.dpr
DIPSLib.rc
DIPSLib.res
DirWalk.dpr
DirWalk.exe
DirWalk.ico
DirWalk.rc
DirWalk.res
DiskInfo.dpr
DiskInfo.exe
DiskInfo.ico
DiskInfo.rc
DiskInfo.res
DocStats.dpr
DocStats.exe
DocStats.ico
DocStats.rc
DocStats.res
FileChng.dpr
FileChng.exe
FileChng.ico
FileChng.rc
FileChng.res
FileRev.dpr
FileRev.exe
FileRev.ico
FileRev.rc
FileRev.res
ImgWalk.dll
ImgWalk.dpr
IOCmpPrt.dpr
IOCmpPrt.exe
IOCmpPrt.ico
IOCmpPrt.rc
IOCmpPrt.res
LISLab.dpr
LISLab.exe
LISLab.ico
LISLab.res
MMFShare.dpr
MMFShare.exe
MMFShare.ico
MMFShare.rc
MMFShare.res
Module.dll
Module.dpr
Module_2.dll
ModUse.dpr
ModUse.exe
ModUse.ico
ModUse.res
MultInst.dpr
MultInst.exe
MultInst.ico
MultInst.rc
MultInst.res
MultInst_2.exe
Mutexes.dpr
Mutexes.exe
Mutexes.ico
Mutexes.rc
Mutexes.res
SEHExcpt.dpr
SEHExcpt.exe
SEHExcpt.ico
SEHExcpt.rc
SEHExcpt.res
SEHSoft.dpr
SEHSoft.exe
SEHSoft.ico
SEHSoft.rc
SEHSoft.res
SEHSum.dpr
SEHSum.exe
SEHSum.ico
SEHSum.res
SEHTerm.dpr
SEHTerm.exe
SEHTerm.ico
SEHTerm.rc
SEHTerm.res
SomeLib.dll
SomeLib.dpr
SomeLib.rc
SomeLib.res
SprMrkt.dpr
SprMrkt.exe
SprMrkt.ico
SprMrkt.rc
SprMrkt.res
SysInfo.dpr
SysInfo.exe
SysInfo.ico
SysInfo.rc
SysInfo.res
TInjLib.dpr
TInjLib.exe
TInjLib.Ico
TInjLib.rc
TInjLib.res
TLSDyn.dpr
TLSDyn.exe
TLSDyn.ico
TLSDyn.res
TLSStat.dpr
TLSStat.exe
TLSStat.ico
TLSStat.rc
TLSStat.res
VMAlloc.dpr
VMAlloc.exe
VMAlloc.ico
VMAlloc.rc
VMAlloc.res
VMStat.dpr
VMStat.exe
VMStat.ico
VMStat.res
使用系统提供的进度条控件
Progress32.dpr
Progress32.exe
LiuMazi.ico
Liumazi.res
LiuMazi.txt
列举窗口及其路径简单例子
EnumDemo.dpr
EnumDemo.exe
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
初步实现屏幕落雪效果
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
SnowFall.dpr
判断用户目前是否在操作电脑
MsnHook.dpr
LiuMazi.ico
Online.ico
利用Hook插入线程的改进版本
Insert.dpr
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
利用消息钩子屏蔽定时器
UseHook.dpr
LiuMazi.ico
LiuMazi.txt
利用窗口过程钩子截获QQ账号
HookDLL.dll
HookDLL.dpr
UseHook.dpr
UseHook.exe
利用鼠标键盘钩子截获QQ账号
HookDLL.dll
HookDLL.dpr
UseHook.dpr
UseHook.exe
区分大小写的按键记录器2个
KeyHook.dll
KeyHook.dpr
KeyLog1.dpr
KeyLog1.exe
KeyLog2.dpr
只需一个DLL的三级跳
LiuMazi.ico
Liumazi.res
LiuMazi.txt
Insert.dpr
按键转汉字,模拟输入法程序
KeyHook.dll
KeyHook.dpr
UseHook.dpr
Disable.ico
Enable.ico
LiuMazi.ico
简单模拟所谓‘光标跟随’效果
Follow.dpr
Follow.exe
LiuMazi.ico
LiuMazi.res
LiuMazi.txt
简单的文件分割合并工具
Splitter.dpr
Splitter.exe
LiuMazi.ico
预览式文件选择对话框
ClearTemp.bat
LiuMazi.ico
PreViewDlg.dpr
PreViewDlg.res
PreViewDlg.txt
uses Windows, ImageHlp, TlHelp32, T
// API Hook 类
TAPIHook = class(TObject)
constructor Create(pszCalleeModName, pszFuncName: LPSTR; pfnHook: FARPROC; fExcludeAPIHookMod: BOOL);
destructor Destroy();
function OriginProc(): FARPROC; // 被Hook的函数的原始地址
class function ThisModuleIsAutoLoad(hModCallee, hModCaller: HMODULE): BOOL; // 模块是否自动加载
class procedure HookLoadLibraryAndGetProcAddress(fInstall: BOOL);
// Hook动态引用函数
m_pNext: TAPIH
// 单链表上下一个同类对象
m_pszCalleeModName: LPCSTR; // 被HOOK函数所在模块名(ANSI)
m_pszFuncName: LPCSTR;
// 被HOOK函数名(ANSI)
m_pfnOrig: FARPROC;
// 原始函数地址
m_pfnHook: FARPROC;
// 替换函数地址
m_fExcludeAPIHookMod: BOOL; // 不Hook本模块(LastMsgBoxInfoLib.dll)
class procedure ReplaceIATEntryInAllMods(pszCalleeModName: LPCSTR; pfnCurrent, pfnNew: FARPROC; fExcludeAPIHookMod: BOOL);
class procedure ReplaceIATEntryInOneMod(pszCalleeModName: LPCSTR; pfnCurrent, pfnNew: FARPROC; hModCaller: HMODULE);
class procedure FixupNewlyLoadedModule(hMod: HMODULE; dwFlags: DWORD);
implementation
// DLL数组结构
TImageImportDescriptor = record
OriginalFirstThunk: DWORD; // 保存函数信息的TImageThunkData数组的RVA
TimeDateStamp, ForwarderChain: DWORD;
Name: DWORD;
// DLL名称字符串的RVA
FirstThunk: DWORD;
// 另一份TImageThunkData数组的拷贝的RVA, 装载后,
// 该TImageThunkData数组被修改为各函数入口地址
PImageImportDescriptor = ^TImageImportD
// 函数名称信息
TImageImportByName = packed record
Hint: W // 如果非0, 表示函数的参考序号
Name: array [0..0] of C // 函数名字符串
PImageImportByName = ^TImageImportByN
// 函数数组结构
TImageThunkData = record
case Integer of
// 最高位不是1, 则为TImageImportByName的RVA,
0: (ForwarderString: PByte);// 否则, 低31位代表引入的函数的序号, 另外,
1: (Function_: PDWORD);
// 装载后, 此数组的一份拷贝变为各函数入口地址
2: (Ordinal: ULONG);
3: (AddressOfData: PImageImportByName);
PImageThunkData = ^TImageThunkD
cPushOpCode: Byte = $68; // 80x86处理器PUSH指令操作码
sm_pHead: TAPIHook = // 链表表头(首个HOOK对象)
sm_pvMaxAppAddr: Pointer = // 进程最大可用地址
sm_LoadLibraryA: TAPIHook = // 重要函数Hook对象
sm_LoadLibraryW: TAPIHook =
sm_LoadLibraryExA: TAPIHook =
sm_LoadLibraryExW: TAPIHook =
sm_GetProcAddress: TAPIHook =
// Hook目前所有已装载模块对一个DLL函数的静态调用
constructor TAPIHook.Create(pszCalleeModName, pszFuncName: LPSTR; pfnHook: FARPROC; fExcludeAPIHookMod: BOOL);
SI: TSystemI
// 此代码可放至其他地方 **
if (sm_pvMaxAppAddr = nil) then
GetSystemInfo(SI);
sm_pvMaxAppAddr := SI.lpMaximumApplicationA
// 将自己添加到对象链表
m_pNext := sm_pH
sm_pHead := S
// 保存所给HOOK相关信息
m_pszCalleeModName := pszCalleeModN
m_pszFuncName := pszFuncN
m_pfnHook := pfnH
m_fExcludeAPIHookMod := fExcludeAPIHookM
m_pfnOrig := GetProcAddress(GetModuleHandleA(pszCalleeModName), m_pszFuncName);
// 准备Hook的函数不存在
if (m_pfnOrig = nil) then E
// 取函数实际地址 **
if (DWORD(m_pfnOrig) & DWORD(sm_pvMaxAppAddr)) then
if (PByte(m_pfnOrig)^ = cPushOpCode) then
m_pfnOrig := PPointer(DWORD(m_pfnOrig) + 1)^;
// 对所有已装载模块Hook
ReplaceIATEntryInAllMods(m_pszCalleeModName, m_pfnOrig, m_pfnHook, m_fExcludeAPIHookMod);
// 对目前所有已装载模块取消之前的函数Hook
destructor TAPIHook.Destroy();
// 对所有已装载模块反Hook
ReplaceIATEntryInAllMods(m_pszCalleeModName, m_pfnHook, m_pfnOrig, m_fExcludeAPIHookMod);
// 将自己从对象链表中摘下
if (sm_pHead = Self) then
sm_pHead := sm_pHead.m_pNext
else begin
p := sm_pH
while (p.m_pNext && nil) do
if (p.m_pNext = Self) then
p.m_pNext := p.m_pNext.m_pN
p := p.m_pN
// END while ..
// 替换所有已装载模块的引入表中的一个函数的地址
class procedure TAPIHook.ReplaceIATEntryInAllMods(pszCalleeModName: LPCSTR;
pfnCurrent, pfnNew: FARPROC; fExcludeAPIHookMod: BOOL);
hModThisMod: HMODULE;
me: TModuleEntry32;
fOk: BOOL;
// 是否Hook本DLL (LastMsgBoxInfoLib.dll)
if fExcludeAPIHookMod then hModThisMod := HInstance else hModThisMod := 0;
// 快照当前所处进程的模块列表
th := TToolhelp.Create(TH32CS_SNAPMODULE, GetCurrentProcessId());
// 枚举各模块, 分别作Hook处理
me.dwSize := SizeOf(TModuleEntry32);
fOk := th.ModuleFirst(@me);
while (fOk) do
if (me.hModule && hModThisMod) then
ReplaceIATEntryInOneMod(pszCalleeModName, pfnCurrent, pfnNew, me.hModule);
fOk := th.ModuleNext(@me);
// 替换指定的一个模块的引入表中的一个函数的地址
class procedure TAPIHook.ReplaceIATEntryInOneMod(pszCalleeModName: LPCSTR;
pfnCurrent, pfnNew: FARPROC; hModCaller: HMODULE);
ulSize: ULONG;
pImportDesc: PImageImportD
pThunk: PImageThunkD
pszModName: LPSTR;
ppfn: ^FARPROC;
fFound: BOOL;
dwProtect, dwTemp: DWORD;
// 定位至函数引入表
pImportDesc := ImageDirectoryEntryToData(Pointer(hModCaller), TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, ulSize);
if (pImportDesc = nil) then E
// 遍历TImageImportDescriptor数组 (寻找名称匹配的DLL)
// 注: Delphi生成的PE文件, 并非一个DLL只占数组的一项
while (pImportDesc.Name && 0) do
pszModName := LPSTR(hModCaller + pImportDesc.Name);
if (lstrcmpiA(pszModName, pszCalleeModName) = 0) then // DLL名字匹配
// 定位至函数地址表
pThunk := PImageThunkData(hModCaller + pImportDesc.FirstThunk);
// 遍历TImageThunkData数组 (寻找地址匹配的函数)
while (pThunk.Function_ && nil) do
// 函数地址变量地址
ppfn := @pThunk.Function_;
// 是否要Hook的地址
fFound := (ppfn^ = pfnCurrent);
// 取函数真实地址 **
if (fFound = FALSE) and (DWORD(ppfn^) & DWORD(sm_pvMaxAppAddr)) then
if (PByte(ppfn^)^ = cPushOpCode) then
ppfn := Pointer(DWORD(ppfn^) + 1);
fFound := (ppfn^ = pfnCurrent);
// 找到则改写Function_
if (fFound) then
VirtualProtect(ppfn, SizeOf(FARPROC), PAGE_EXECUTE_WRITECOPY, dwProtect);
WriteProcessMemory(GetCurrentProcess(), ppfn, @pfnNew, SizeOf(FARPROC), dwTemp);
VirtualProtect(ppfn, SizeOf(FARPROC), dwProtect, dwTemp);
// 下一个TImageThunkData
Inc(pThunk);
// 下一个TImageImportDescriptor
Inc(pImportDesc);
// 对新装载的DLL进行Hook处理
class procedure TAPIHook.FixupNewlyLoadedModule(hMod: HMODULE; dwFlags: DWORD);
if (hMod && 0) and (hMod && HInstance) and (dwFlags and LOAD_LIBRARY_AS_DATAFILE = 0) then
p := sm_pH
while (p && nil) do
ReplaceIATEntryInOneMod(p.m_pszCalleeModName, p.m_pfnOrig, p.m_pfnHook, hMod);
p := p.m_pN
// LoadLibraryA的替换函数
function Hook_LoadLibraryA(pszModulePath: LPCSTR): HMODULE;
Result := Windows.LoadLibraryA(pszModulePath);
TAPIHook.FixupNewlyLoadedModule(Result, 0);
// LoadLibraryW的替换函数
function Hook_LoadLibraryW(pszModulePath: LPCWSTR): HMODULE;
Result := Windows.LoadLibraryW(pszModulePath);
TAPIHook.FixupNewlyLoadedModule(Result, 0);
// LoadLibraryExA的替换函数
function Hook_LoadLibraryExA(pszModulePath: LPCSTR; hFile: TH dwFlags: DWORD): HMODULE;
Result := Windows.LoadLibraryExA(pszModulePath, hFile, dwFlags);
TAPIHook.FixupNewlyLoadedModule(Result, dwFlags);
// LoadLibraryExW的替换函数
function Hook_LoadLibraryExW(pszModulePath: LPCWSTR; hFile: TH dwFlags: DWORD): HMODULE;
Result := Windows.LoadLibraryExW(pszModulePath, hFile, dwFlags);
TAPIHook.FixupNewlyLoadedModule(Result, dwFlags);
// GetProcAddress()的替换函数
function Hook_GetProcAddress(hMod: HMODULE; pszProcName: LPCSTR): FARPROC;
// 调用真正的GetProcAddress()
Result := Windows.GetProcAddress(hMod, pszProcName);
if (hMod && HInstance) and (Result && nil) then
p := sm_pH
while (p && nil) do
// 如果这个函数已被Hook, 返回替换函数地址
if (Result = p.m_pfnOrig) then
Result := p.m_pfnH
p := p.m_pN
// 返回被本对象Hook的DLL函数的实际地址
function TAPIHook.OriginProc(): FARPROC;
Result := m_pfnO
// hModCallee是否被hModCaller静态引用
class function TAPIHook.ThisModuleIsAutoLoad(hModCallee, hModCaller: HMODULE): BOOL;
ulSize: ULONG;
pImportDesc: PImageImportD
pszModName: LPSTR;
Result := FALSE;
// 定位至当前进程EXE的函数引入表
pImportDesc := ImageDirectoryEntryToData(Pointer(hModCaller), TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, ulSize);
if (pImportDesc = nil) then E
// 遍历ImageImportDescriptor数组
while (pImportDesc.Name && 0) do
// 检查被引用的DLL地址是否匹配
pszModName := LPSTR(hModCaller + pImportDesc.Name);
if (GetModuleHandle(pszModName) = hModCallee) then
Result := TRUE;
// 下一个TImageImportDescriptor
Inc(pImportDesc);
// Hook LoadLibrary和GetProcAddress, 以便监视动态引用
class procedure TAPIHook.HookLoadLibraryAndGetProcAddress(fInstall: BOOL);
if fInstall then
if (sm_LoadLibraryA = nil) then
sm_LoadLibraryA := TAPIHook.Create(Kernel32, 'LoadLibraryA', @Hook_LoadLibraryA, TRUE);
if (sm_LoadLibraryW = nil) then
sm_LoadLibraryW := TAPIHook.Create(Kernel32, 'LoadLibraryW', @Hook_LoadLibraryW, TRUE);
if (sm_LoadLibraryExA = nil) then
sm_LoadLibraryExA := TAPIHook.Create(Kernel32, 'LoadLibraryExA', @Hook_LoadLibraryExA, TRUE);
if (sm_LoadLibraryExW = nil) then
sm_LoadLibraryExW := TAPIHook.Create(Kernel32, 'LoadLibraryExW', @Hook_LoadLibraryExW, TRUE);
if (sm_GetProcAddress = nil) then
sm_GetProcAddress := TAPIHook.Create(Kernel32, 'GetProcAddress', @Hook_GetProcAddress, TRUE);
sm_LoadLibraryA.F
sm_LoadLibraryA :=
sm_LoadLibraryW.F
sm_LoadLibraryW :=
sm_LoadLibraryExA.F
sm_LoadLibraryExA :=
sm_LoadLibraryExW.F
sm_LoadLibraryExW :=
sm_GetProcAddress.F
sm_GetProcAddress :=
Copyright(C)
OKBASE.NET All Rights Reserved 好库网 版权所有

我要回帖

更多关于 网资是什么 的文章

 

随机推荐