这个地方是UNICODE编程么?

宇文-不期而至 2008-10-12 01:03:56
bool WINAPI Hook_MessageBoxA(LPCTSTR lpExistingFileName, // name of existing file
LPCTSTR lpNewFileName, // name of new file
LPPROGRESS_ROUTINE lpProgressRoutine, // callback function
LPVOID lpData, // callback parameter
LPBOOL pbCancel, // cancel status
DWORD dwCopyFlags // copy options
) {

bool nResult = ((PFNMESSAGEBOXA)(PROC) g_MessageBoxA)
(lpExistingFileName,lpNewFileName,lpProgressRoutine,lpData,pbCancel,dwCopyFlags);


return(nResult);
}


我怎么判断lpExistingFileName的值,我试过了,无论数组,还是内存复制在ANSI下都不行啊,请大家指示一下啊。
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
int WideCharToMultiByte(
UINT CodePage, // code page
DWORD dwFlags, // performance and mapping flags
LPCWSTR lpWideCharStr, // wide-character string
int cchWideChar, // number of chars in string
LPSTR lpMultiByteStr, // buffer for new string
int cbMultiByte, // size of buffer
LPCSTR lpDefaultChar, // default for unmappable chars
LPBOOL lpUsedDefaultChar // set when default char used
);
这个函数就是把宽字节转换为单字节的ANSI标准,使用这个函数后就可以了
搞定,谢谢大家。
returnnofalse 2008-10-12
  • 打赏
  • 举报
回复
LPCTSTR 带T的都是一个宏

如果编译时定义了 _UNICODE
就是变成UNICODE的 LPCWSTR

没有定义时就变成 LPCSTR

你最好还是都UNICODE,不然以后会出现很多问题
chlaws 2008-10-12
  • 打赏
  • 举报
回复
BOOL CopyFileEx(
LPCWSTR lpExistingFileName,
// pointer to name of an existing file
LPCWSTR lpNewFileName,
// pointer to filename to copy to
LPPROGRESS_ROUTINE lpProgressRoutine,
// pointer to the callback function
LPVOID lpData, // to be passed to the callback function
LPBOOL pbCancel, // flag that can be used to cancel the operation
DWORD dwCopyFlags // flags that specify how the file is copied
);

你意思是比较两个文件名吧?
char efilestr[50];
char nfilestr[50];
strcpy(efilestr,lpExistingFileName);
strcpy(nfilestr,lpNewFileName);
strcmpi(efilestr,nfilestr);
277894613 2008-10-12
  • 打赏
  • 举报
回复
看到这一堆大写就晕,MS真是的
  • 打赏
  • 举报
回复
我上面的代码意思是HOOK系统CopyFileEx函数,在判断第一个参数时无法用strcmp等来,如果我用指针复制的话,得到的是只有一个字节
chlaws 2008-10-12
  • 打赏
  • 举报
回复
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;

判断已存在文件 就先与新文件比较文件名然后通过CompareFileTime比较创建时间 最后修改时间 就行了

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧