up up
解决方案 »
- 求助:怎样进行动态链接库的切换呢?
- 问一个小问题GetSafeHdc()返回值为空
- 为什么用钩子去调用Winio的函数就不好使呢?
- 哪出了问题 《连连看》判断两点是否可以连接
- 清华大学 数据结构与算法c++
- 一个EDIT得到焦点后,需要作些处理,怎么弄?
- 菜鸟提问,如何在基于MFC的COM组件中显示一个非模态对话框
- 如何在VC下编译matlab的MCC生成的从c++代码?
- 从CAsyncSocket派生一个servSock类,重载OnAccept()和OnReceive()请问servSock.listen()是不是循环直到有响应?并自动调用我重载的两个
- 请问一个DIB绘制的时候出现闪屏?
- GetKeyState和GetAsyncKeyState 在服务中调用返回0,getlasterror提示是5,是什么问题?
- 借宝地请教个问题 xp 组策略 操作失误 电脑管理员不能本地登陆了,怎么解决
应该没有的吧
1.CString strFile = "C:\\1.txt";int nFind = strFile.ReverseFind('\\');
strFile = strFile.Left(nFind);
2.string strFile = "C:\\1.txt";
int nFind = strFile.find_last_of('\\');
strFile = strFile.substr(0,nFind);
//filename现在只有目录了。
TCHAR szDrive[_MAX_DRIVE] = {0};
TCHAR szDir[_MAX_DIR] = {0};
TCHAR szName[_MAX_FNAME] = {0};
TCHAR szExt[_MAX_EXT] = {0};
_tsplitpath(szPath, szDrive, szDir, szName, szExt); CString strText(_T(""));
strText += szDrive;
strText += szDir;
AfxMessageBox(strText);
我每次都是cstring find 来find去的
源自网络#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <psapi.h>
#include <strsafe.h>
#define BUFSIZE 512BOOL GetFileNameFromHandle(HANDLE hFile)
{
BOOL bSuccess = FALSE;
TCHAR pszFilename[MAX_PATH+1];
HANDLE hFileMap;// Get the file size.
DWORD dwFileSizeHi = 0;
DWORD dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi);if( dwFileSizeLo == 0 && dwFileSizeHi == 0 )
{
printf("Cannot map a file with a length of zero.\n");
return FALSE;
}// Create a file mapping object.
hFileMap = CreateFileMapping(hFile,
NULL,
PAGE_READONLY,
0,
1,
NULL);if (hFileMap)
{
// Create a file mapping to get the file name.
void* pMem = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 1); if (pMem)
{
if (GetMappedFileName (GetCurrentProcess(),
pMem,
pszFilename,
MAX_PATH))
{ // Translate path with device name to drive letters.
TCHAR szTemp[BUFSIZE];
szTemp[0] = '\0'; if (GetLogicalDriveStrings(BUFSIZE-1, szTemp))
{
TCHAR szName[MAX_PATH];
TCHAR szDrive[3] = TEXT(" :");
BOOL bFound = FALSE;
TCHAR* p = szTemp; do
{
// Copy the drive letter to the template string
*szDrive = *p; // Look up each device name
if (QueryDosDevice(szDrive, szName, MAX_PATH))
{
UINT uNameLen = _tcslen(szName); if (uNameLen < MAX_PATH)
{
bFound = _tcsnicmp(pszFilename, szName,
uNameLen) == 0; if (bFound)
{
// Reconstruct pszFilename using szTempFile
// Replace device path with DOS path
TCHAR szTempFile[MAX_PATH];
StringCchPrintf(szTempFile,
MAX_PATH,
TEXT("%s%s"),
szDrive,
pszFilename+uNameLen);
StringCchCopyN(pszFilename, MAX_PATH+1, szTempFile, _tcslen(szTempFile));
}
}
} // Go to the next NULL character.
while (*p++);
} while (!bFound && *p); // end of string
}
}
bSuccess = TRUE;
UnmapViewOfFile(pMem);
} CloseHandle(hFileMap);
}
_tprintf(TEXT("File name is %s\n"), pszFilename);
return(bSuccess);//http://hi.baidu.com/tr0j4n
}
int _tmain(int argc, TCHAR *argv[])
{
HANDLE hFile; if( argc != 2 )
{
printf("This sample takes a file name as a parameter.\n");
return 0;
}
hFile = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, NULL); if(hFile == INVALID_HANDLE_VALUE)
{
printf("CreateFile failed with %d\n", GetLastError());
return 0;
}
GetFileNameFromHandle( hFile );
}