我做了這個試圖檢查文件是否存在的dll文件。但即使我手動創建文件,我的DLL仍然無法找到它。檢查文件是否存在的Visual C++ DLL
我的dll檢索正在運行的程序的進程ID,並查找以pid命名的文件。
誰能告訴我,我錯過了什麼:(
代碼:
#include <Windows.h>
#include <winbase.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
int clientpid = GetCurrentProcessId();
ifstream clientfile;
string clientpids, clientfilepath;
VOID LoadDLL() {
AllocConsole();
freopen("CONOUT$", "w", stdout);
std::cout << "Debug Start" << std::endl;
std::ostringstream ostr;
ostr << clientpid;
clientpids = ostr.str();
ostr.str("");
TCHAR tempcvar[MAX_PATH];
GetSystemDirectory(tempcvar, MAX_PATH);
ostr << tempcvar << "\\" << clientpids << ".nfo" << std::endl;
clientfilepath = ostr.str();
//clientfile.c_str()
ostr.str("");
std::cout << "Start search for: " << clientfilepath << std::endl;
FOREVER {
clientfile.open(clientfilepath,ios::in);
if(clientfile.good()) {
std::cout << "Exists!" << std::endl;
}
Sleep(10);
};
}
你做了什麼來調試該問題? 你能描述一下究竟發生了什麼,以及這與你的期望有什麼不同? 如果您在常規程序而不是DLL中使用它,它會工作嗎? –
僅僅因爲你無法打開文件,並不意味着文件不存在。使用'GetFileAttributes(sFile)!= INVALID_FILE_ATTRIBUTES'來測試是否存在。 – paddy
好吧,我試圖改變永遠循環了一下,並得到了一個ERROR_INVALID_NAME錯誤。我是否將文件路徑從字符串轉換爲LPCTSTR錯誤? –