; 
; Exports of file NARRHOOK.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY NARRHOOK.dll
EXPORTS
; void __cdecl BackToApplication(void)
?BackToApplication@@YAXXZ
; int __cdecl GetAnnounceMenu(void)
?GetAnnounceMenu@@YAHXZ
; int __cdecl GetAnnouncePopup(void)
?GetAnnouncePopup@@YAHXZ
; int __cdecl GetAnnounceToolTips(void)
?GetAnnounceToolTips@@YAHXZ
; int __cdecl GetAnnounceWindow(void)
?GetAnnounceWindow@@YAHXZ
; void __cdecl GetCurrentText(unsigned short * __ptr64,int)
?GetCurrentText@@YAXPEAGH@Z
; int __cdecl GetEchoChars(void)
?GetEchoChars@@YAHXZ
; int __cdecl GetReviewLevel(void)
?GetReviewLevel@@YAHXZ
; int __cdecl GetReviewStyle(void)
?GetReviewStyle@@YAHXZ
; int __cdecl GetTrackCaret(void)
?GetTrackCaret@@YAHXZ
; int __cdecl GetTrackInputFocus(void)
?GetTrackInputFocus@@YAHXZ
; int __cdecl GetTrackSecondary(void)
?GetTrackSecondary@@YAHXZ
; int __cdecl InitKeys(struct HWND__ * __ptr64)
?InitKeys@@YAHPEAUHWND__@@@Z
; int __cdecl InitMSAA(void)
?InitMSAA@@YAHXZ
; void __cdecl SetAnnounceMenu(int)
?SetAnnounceMenu@@YAXH@Z
; void __cdecl SetAnnouncePopup(int)
?SetAnnouncePopup@@YAXH@Z
; void __cdecl SetAnnounceToolTips(int)
?SetAnnounceToolTips@@YAXH@Z
; void __cdecl SetAnnounceWindow(int)
?SetAnnounceWindow@@YAXH@Z
; void __cdecl SetCurrentText(unsigned short const * __ptr64)
?SetCurrentText@@YAXPEBG@Z
; void __cdecl SetEchoChars(int)
?SetEchoChars@@YAXH@Z
; void __cdecl SetReviewLevel(int)
?SetReviewLevel@@YAXH@Z
; void __cdecl SetReviewStyle(int)
?SetReviewStyle@@YAXH@Z
; void __cdecl SetTrackCaret(int)
?SetTrackCaret@@YAXH@Z
; void __cdecl SetTrackInputFocus(int)
?SetTrackInputFocus@@YAXH@Z
; void __cdecl SetTrackSecondary(int)
?SetTrackSecondary@@YAXH@Z
; int __cdecl UnInitMSAA(void)
?UnInitMSAA@@YAHXZ
; int __cdecl UninitKeys(void)
?UninitKeys@@YAHXZ
; unsigned short * __ptr64 __cdecl lstrcatn(unsigned short * __ptr64,unsigned short * __ptr64,int)
?lstrcatn@@YAPEAGPEAG0H@Z
