问题描述
|
我使用Windows窗体应用程序的类型启动了一个新项目,然后放置了两个文本框(textbox1和textbox2)和一个按钮。我使用OpenFileDialog从系统中选择一个文件,并将其路径放在textbox1中,为该按钮放置以下代码:
HANDLE hFile;
HANDLE hMap ;
LPVOID base;
hFile = ::CreateFile((LPCWSTR)Marshal::StringToHGlobalAnsi(this->textBox1->Text).ToPointer(),GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);
unsigned long sifi= ::GetFileSize(hFile,NULL);
if(hFile !=INVALID_HANDLE_VALUE){
hMap= ::CreateFileMapping(hFile,PAGE_READONLY | SEC_COMMIT,0);//create Mem mapping for the file in virtual memory
}
if( hMap!=NULL){
base = ::MapViewOfFile(hMap,FILE_MAP_READ,0);//load the mapped file into the RAM
}
this->textBox2->Text=sifi.ToString();
我要用该代码执行的操作是从textbox1读取文件路径,以将其用于打开文件句柄,然后获取文件的大小并将其放入textbox2。现在的问题是,textbox2显示的文件大小值不正确。所有文件似乎总是像4294967295!
编辑:
谢谢大家,我已经解决了问题。它在CreateFile的第一个参数中,它假定为:
(LPCWSTR)Marshal::StringToHGlobalUni(this->textBox1->Text).ToPointer()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)