##環境
windows10
visualstudio2017
##やってみたこと
visualstudioでdebugモードで実行するとGetCurrentdiretctoryの値がおかしいです。
debugモードにある実行ファイルをほかの新規作成したフォルダで実行すると正常に
起動します。ソリューションファイル名はfile_searchです。
visualstudio上で実行した場合、またはvisualstudioで作成したディレクトリ上で実行すると、 C:Users\programming\source\repos\file_search\file_search\a.txt ↑ソリューション名が連続してしまう 実際は C:\Users\programming\source\repos\file_search\x64\Debug のディレクトリ上にfile_search.exeとa.txtがあります。
自分で用意したディレクトリで実行すると C:Users\programming\source\repos\file_search\a.txt 実際のディレクトリはC:\Users\programming\Pictures\app のディレクトリ上にfile_search.exeとa.txtがあります。
デバグするときにGetCurrentDirectoryを使用するとディレクトリを用意し、
そこに実行ファイルと目的のファイルを用意しないといけません。
こうなる原因がわかりません。
改善策はございますでしょうか。ご回答お願いします。
#include <windows.h> #include <tchar.h> #define aFILE _T("a.txt") static TCHAR msgbuf[257]; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { HANDLE hFile; HANDLE findHandle; TCHAR Path[260]; TCHAR Path2[260]; WIN32_FIND_DATA findData; TCHAR *File; GetCurrentDirectory(sizeof Path, (LPTSTR)Path); _stprintf_s(Path, lstrlen(Path) + 30, _T("\%s\%s"), Path, aFILE); MessageBox(NULL, Path, NULL, MB_OK); findHandle = FindFirstFile(Path, &findData); if (findHandle == INVALID_HANDLE_VALUE) { MessageBox(NULL, Path, NULL, MB_OK); if (!SearchPath(NULL, aFILE, NULL, sizeof(Path), Path, &File)) { _stprintf_s(msgbuf,lstrlen(msgbuf)+30 ,_T("%s was not found."), aFILE); MessageBox(NULL, msgbuf, NULL, MB_OK); /*return Abort(hWnd, msgbuf);*/ } else { MessageBox(NULL, _T("error"), NULL, MB_OK); } } else { FindClose(findHandle); MessageBox(NULL, _T("success"), NULL, MB_OK); } return 0; }
#追記1
#include <windows.h>
#include <tchar.h>
#define aFILE _T("a.txt")
static TCHAR msgbuf[257];
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, int nCmdShow) {
HANDLE hFile;
HANDLE findHandle;
TCHAR Path[260];
TCHAR Path2[260];
WIN32_FIND_DATA findData;
TCHAR *File;
GetCurrentDirectory(sizeof Path, (LPTSTR)Path); _stprintf_s(Path2, lstrlen(Path2) + 30, _T("\%s\%s"), Path, aFILE); MessageBox(NULL, Path2, NULL, MB_OK); findHandle = FindFirstFile(Path2, &findData); if (findHandle == INVALID_HANDLE_VALUE) { MessageBox(NULL, Path2, NULL, MB_OK); if (!SearchPath(NULL, aFILE, NULL, sizeof(Path), Path, &File)) { _stprintf_s(msgbuf,lstrlen(msgbuf)+30 ,_T("%s was not found."), aFILE); MessageBox(NULL, msgbuf, NULL, MB_OK); /*return Abort(hWnd, msgbuf);*/ } else { MessageBox(NULL, _T("error"), NULL, MB_OK); } } else { FindClose(findHandle); MessageBox(NULL, _T("success"), NULL, MB_OK); } return 0;
}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/04 08:25