实例介绍
【实例截图】
【源码目录】
A200026403-2797
├── IPMSG.001
├── IPMSG.DSP
├── IPMSG.DSW
├── IPMSG.MAK
├── IPMSG.MDP
├── IPMSG.PLG
├── IPMSG.ncb
├── IPMSG.opt
├── OPENLAB.TXT
├── PROT-ENG.TXT
├── PROTOCOL.TXT
├── README-J.TXT
├── README.TXT
└── SRC
├── ABSENCE.ICO
├── BLOWFISH.CPP
├── BLOWFISH.H
├── BLOWFISH.H2
├── CFG.CPP
├── FILE.ICO
├── FILEABS.ICO
├── INSTALL
│ ├── INSTALL.CPP
│ ├── INSTALL.H
│ ├── INSTENG.RC
│ ├── INSTJPN.RC
│ ├── INSTRC.H
│ ├── SETUP.ICO
│ └── insteng.aps
├── IPMSG.CPP
├── IPMSG.H
├── IPMSG.ICO
├── IPMSGENG.RC
├── IPMSGJPN.RC
├── IPMSGREV.ICO
├── LOGDLG.CPP
├── LOGMNG.CPP
├── MAINWIN.CPP
├── MISCDLG.CPP
├── MSGMNG.CPP
├── MSGSTR.H
├── PLUGIN.CPP
├── RECVDLG.CPP
├── RESOURCE.H
├── SENDDLG.CPP
├── SETUPDLG.CPP
├── SHARE.CPP
├── TAPP.CPP
├── TDLG.CPP
├── TLIB.H
├── TLIST.CPP
├── TREGIST.CPP
├── TWIN.CPP
├── V1.ICO
├── V1ABS.ICO
└── ipmsgeng.aps
2 directories, 54 files
【核心代码】
enum InstMode { SETUP_MODE, RESETUP_MODE, UNINSTALL_MODE };
struct InstallCfg {
InstMode mode;
int portNo;
BOOL startupLink;
BOOL programLink;
BOOL desktopLink;
BOOL delPubkey;
};
class TInstSheet : public TDlg
{
InstallCfg *cfg;
public:
TInstSheet(TWin *_parent, InstallCfg *_cfg);
virtual BOOL EvCreate(LPARAM lParam);
virtual BOOL EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl);
void Paste(void);
void GetData(void);
void PutData(void);
};
class TInstDlg : public TDlg
{
protected:
TSubClassCtl staticText;
TInstSheet *propertySheet;
InstallCfg cfg;
public:
TInstDlg(char *cmdLine);
virtual ~TInstDlg();
virtual BOOL EvCreate(LPARAM lParam);
virtual BOOL EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl);
#if 0
virtual BOOL EvNcDestroy(void);
virtual BOOL EventUser(UINT uMsg, WPARAM wParam, LPARAM lParam);
#endif
BOOL Install(void);
BOOL UnInstall(void);
void ChangeMode(void);
BOOL TerminateIPMsg(void);
BOOL RemoveSameLink(const char *dir, char *remove_path=NULL);
};
class TInstApp : public TApp
{
public:
TInstApp(HINSTANCE _hI, LPSTR _cmdLine, int _nCmdShow);
virtual ~TInstApp();
void InitWindow(void);
};
class TBrowseDirDlg : public TSubClass
{
protected:
char *fileBuf;
BOOL dirtyFlg;
public:
TBrowseDirDlg(char *_fileBuf) { fileBuf = _fileBuf; }
virtual BOOL CreateByWnd(HWND _hWnd);
virtual BOOL EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl);
virtual BOOL SetFileBuf(LPARAM list);
BOOL IsDirty(void) { return dirtyFlg; };
};
class TInputDlg : public TDlg
{
protected:
char *dirBuf;
public:
TInputDlg(char *_dirBuf, TWin *_win) : TDlg(INPUT_DIALOG, _win) { dirBuf = _dirBuf; }
virtual BOOL EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl);
};
#define IPMSG_CLASS "ipmsg_class"
#define IPMSG_NAME "IPMSG for Win32"
#define IPMSG_FULLNAME "IP Messenger for Win"
#define IPMSG_STR "IPMsg"
#define HSTOOLS_STR "HSTools"
#ifdef ENGLISH
#define REGSTR_IPMSG IPMSG_STR "Eng"
#else
#define REGSTR_IPMSG IPMSG_STR
#endif
#define IPMSG_DEFAULT_PORT 0x0979
#define IPMSG_EXENAME "ipmsg.exe"
#define INSTALL_EXENAME "setup.exe"
#define README_NAME "readme.txt"
#define OPENLAB_NAME "openlab.txt"
#define UNINSTALL_CMDLINE "/r"
#define IPMSG_SHORTCUT_NAME IPMSG_NAME ".lnk"
#define UNC_PREFIX "\\\\"
#define MAX_WRAPPER_IPMSGSIZE 50000
#define RESOLVE_WRAPPER_IPMSG "org\\ipmsg.exe"
#define MAX_BUF 1024
#define REGSTR_SHELLFOLDERS REGSTR_PATH_EXPLORER "\\Shell Folders"
#define REGSTR_STARTUP "Startup"
#define REGSTR_DESKTOP "Desktop"
#define REGSTR_PROGRAMS "Programs"
#define REGSTR_PATH "Path"
#define REGSTR_PROGRAMFILES "ProgramFilesDir"
#ifdef ENGLISH
#define MKDIR_STR "CREATE"
#define RMDIR_STR "DELETE"
#else
#define MKDIR_STR "嶌惉"
#define RMDIR_STR "嶍彍"
#endif
#define INSTALL_STR "Install"
#define UNINSTALL_STR "UnInstall"
#ifdef ENGLISH
#define NOTNEWSHELL_MSGSTR "This setup is only run new shell.\r\n"
#define SETUPCOMPLETE_MSGSTR "Setup is completed.\r\n\r\nDo you want to start IPMSG?"
#define UNINSTCOMPLETE_MSGSTR "Uninstallation is completed.\r\n"
#define TERMINATE_MSGSTR "Do you permit to close IPMSG?"
#define NOTCREATEDIR_MSGSTR "Can't create directory"
#define NOTCREATEFILE_MSGSTR "Can't create file"
#define START_MSGSTR "Do you permit to start?"
#else
#define NOTNEWSHELL_MSGSTR "偙偺僙僢僩傾僢僾偼丄NewShell愱梡偱偡丅\r\nNT3.51偱偺僀儞僗僩乕儖偼庤摦偱峴偭偰偔偩偝偄丅"
#define SETUPCOMPLETE_MSGSTR "僙僢僩傾僢僾偼姰椆偟傑偟偨丅\r\n傾儞僀儞僗僩乕儖偼乽傾僾儕働乕僔儑儞偺捛壛偲嶍彍乿偐傜峴偭偰偔偩偝偄丅\r\n\r\n偙偺傑傑丄IP Messenger 傪婲摦偟傑偡偐丠"
#define UNINSTCOMPLETE_MSGSTR "傾儞僀儞僗僩乕儖偼姰椆偟傑偟偨丅\r\n僼傽僀儖嶍彍帺懱偼庤摦偱峴偭偰偔偩偝偄丅"
#define TERMINATE_MSGSTR "偁傜偐偠傔丄尰嵼婲摦偟偰偄傞\r\nIP Messenger 傪廔椆偝偣傞昁梫偑偁傝傑偡丅\r\n傛傠偟偄偱偡偐丠"
#define NOTCREATEDIR_MSGSTR "僨傿儗僋僩儕偑嶌傟傑偣傫"
#define NOTCREATEFILE_MSGSTR "僼傽僀儖傪僐僺乕偱偒傑偣傫"
#define START_MSGSTR "奐巒偟傑偡"
#endif
// function prototype
int strncmpi(const char *str1, const char *str2, int num);
BOOL CALLBACK TerminateIPMsgProc(HWND hWnd, LPARAM lParam);
BOOL SymLink(LPCSTR src, LPSTR dest, LPCSTR arg="");
BOOL ReadLink(LPCSTR src, LPSTR dest, LPSTR arg);
BOOL DeleteLink(LPCSTR path);
void BrowseDirDlg(TWin *parentWin, UINT editCtl, char *title);
int CALLBACK BrowseDirDlg_Proc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM data);
BOOL GetParentDir(const char *srcfile, char *dir);
int MakePath(char *dest, const char *dir, const char *file);
UINT GetDriveTypeEx(const char *file);
// inline function
inline BOOL IsUncFile(const char *path) { return strnicmp(path, UNC_PREFIX, 2) == 0; }
标签: 飞鸽局域传书
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论