• 締切済み

ファイル名の取得

CreateFileの第一引数の pszFileName というのは、createfileで開いたファイル名ですよね? それをcharの配列にコピーして表示させようとしているのですが、 うまく表示されません。 (うまく表示されるときとされないときがあります。 wordを立ち上げた時のdatファイルなどは表示される) 日本語が入っていると表示されないのかと思いましたがそうでもないようです…。 開いたファイル名を取得するAPIがあるのかと思い、探してみましたが 見つかりません…。 getFileSize APIを使用することで、ファイルサイズを取得出来るのはわかったのですが、ファイル名を取得するにはどのAPIを使用すればよいのかが調べてもわかりません。 どなたかご存知のお方いられましたら、ご教授願います。 よろしくおねがいします。

みんなの回答

回答No.2

可哀想だし、WINAPIだと思うのでわかる範囲で答えます。 pszFileNameは自分で開くまたは作成するファイル名を指定するものです。 ですので指定したときに使った文字列があればコピーなんてする必要はない気がします。 間違ってたらすみません。

  • MASATO3
  • ベストアンサー率60% (27/45)
回答No.1

1. 開発環境はなんでしょうか。 2. CreateFileとはなんでしょうか。Win32API? 3. createfileとはなんでしょうか。小文字なのでCreateFileとは別物? 4. どのようにcharの配列にコピーしているのでしょうか。周辺コードを教えて下さい。 5. getFileSize APIとはなんでしょうか。GetFileSizeとは別物? 6. ファイルを開くためにはファイル名が必要なので、開く前にファイル名は分かっているはずです。なぜ開いた後にファイル名を取得する必要があるのでしょうか?

関連するQ&A

  • CreateFileで開いたファイル名を取得するには?

    CreateFile関数で開いたファイル名を取得して、エディットボックスに表示させるプログラムを作りたいと思っています。 sendmessageを使って表示させることを考えてみたのですが…。 以下にソースを載せます。 // メインWindowへ通知するデータを作成 COPYDATASTRUCT cds; cds.lpData = pszFileName; //CreateFileの第一引数pszFileName(ファイル名)を格納 cds.cbData = lstrlen(pszFileName) + 1; cds.dwData = 0; // メインWindowを検索 HWND hWnd = FindWindow(NULL, _T("メインウインドウの名前")); if(hWnd) SendMessage(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds); という風では、取得できないのでしょうか? よろしくお願いします。

  • あるディレクトリ内のファイルをファイル名でソートして取得

    _FindFirst や FindFirstFile を使用すると指定フォルダの ファイル名を順番に取得できるのですが、ファイル名でソートされていません。 ファイル名でソートして取得する関数(API)はあるのでしょうか?

  • ファイル作成者名の取得

    VBで、ファイルの作成者名・更新者名・作成日時・更新日時を取得する方法を探しています。 作成日時・更新日時の方はAPIを使用すれば可能だと分かったのですが、 作成者名・更新者名の取得方法が見つかりません。 取得が可能かどうかも含めて、教えていただけませんでしょうか? よろしくお願いします。

  • ファイル名の取得

    今までの質問で探しましたが、見つけれなかったので、質問します。ファイル名が32桁.拡張子で出来ているファイルが有ります。そのファイル名を取得し、他へコピーの歳別の名前にしたいのですが、上手く行きません。 長すぎる32桁の名前をどうすれば取得できますか 因みに*(アスタリスク)の使用では駄目でした。

  • 複数のファイル名を取得したいのですが…

    ディレクトリ内のファイル名を1件づつ取得し、表示したいのですが、readdirを使用し、ファイル名を取得すると、一つの変数に存在するファイル名をまとめて表示してしまいます。 ファイルの件数分、変数へファイル名を入れることは可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイル名である文字列からbasenameを取得したい

    ファイル名である文字列からbasenameを(スマートに)取得したいです。 Perlでは何も考えなくてもできたのですが、C(もしくはC++)では次のようなやりかたしか思いつきません。 これでできているので問題ないのですが、何だかモヤモヤします。 また、このやり方では拡張子はピリオド含めて4文字であること前提なのもモヤモヤの原因です。 Perlのようにもっとスマートなやりかたはないでしょうか? --------------------------------- char filename[] = "test.dat"; char basename[128]; strncpy(basename, filename, strlen(filename)-4); basename[strlen(filename)-4] = '\0'; ---------------------------------

  • ファイルの一覧を取得して配列に入れるには(VB2005)

    VisualBasic2005でプログラミングの勉強を始めましたが、配列のところで躓いてしまいました。 現在やりたいことは、ListBoxとDataGridViewにそれぞれ取得したファイルのファイル名を一覧を表示し、項目クリックでそのファイルを開くことです。(DataGridViewのほうは、ファイルの一覧だけでなく、項目を分けてパスやファイルサイズなども表示させたいと思います)。 まずListBoxのほうですが、検索して次のような方法が見つかりました。 ListBox1.DataSource = _ My.Computer.FileSystem.GetFiles("パス",FileIO.SearchOption.SearchTopLevelOnly,"*.拡張子") そのままコピーして利用してみたのですが、直接リストボックスに一覧を取得し、パスも含めた文字列が表示されてしまいました。リストボックスにはパスと拡張子を除いたファイル名だけを一覧表示したいです。それで、各文字列を操作するためにはまず取得したファイル一覧を配列かコレクションに格納しなければならないと思うのですが、この方法がどうしてもわかりません(また、配列とコレクションではどちらが相応しいでしょうか)。 また、DataGridViewでもパスやサイズも含めた一覧を表示し、同様にクリックで開けるようにしたいと思います。この場合も、まず多次元配列に検索結果を入れると思うのですが、データを入れた配列から、DataGridViewに表示させる方法も合わせて教えていただきたく思います。 以上のことについて、アドバイスまたは方法をご教授ください<(_ _)> 検索していると、 DataGridView1.datasource = DataTable ListBox1.datasource = ~~~ などという例が多いのですが、DataTableやdatasourceと配列はどのような関係にあるのでしょうか?DataTableのデータを配列に入れたり、またその逆だったりは簡単に出来ないものでしょうか。 このあたりがどうも理解不足で、応用力もつけたいので、どのあたりを勉強すればよいのかも教えて頂けると助かります。初心者用の参考書と、逆引き大全500は一通り読んでみました。

  • ファイル名の取得について

    Perl5で @FTPlist = $FTP -> ls("*.csv"); でCSVファイル名を取得し、それをもとにローカルにダウンロードしようとしたのですが、パーミッションから表示されうまくいきません。 どのようにすればファイル名を取得できるのでしょうか。 方法は特に問いません。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • C# ファイルサイズの取得(ファイル名ではない)

    ファイルサイズ取得で検索するとファイル名のサイズを取得する方法ばかりで実際に存在しているファイルの大きさと合っていないのですが、どのようにコードを書けば良いでしょうか?

  • ファイル名の取得について

    よろしくお願いします、 環境はWindows 2000 SP4 Visual Studio VC8です openFileDialogクラスのFileNameメソッドで フルパスのファイル名を取得できますが、 ファイル名だけ取得したい場合はどのメソッドまたはクラスを使用したら出来るでしょうか?

専門家に質問してみよう