1 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:03 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage 【前スレ】 61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
652 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:47 ] 妙なことするより、ツールバーに重ならないように子ウィンドウ作った方が楽かと
653 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:49:39 ] >>651 つ I これやるよ。
654 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:18:09 ] >>651 申し訳ないです。 ^^; ウインドウに段数をペイントで書いていまして、 ウインドウに書かれた段数の横にエディットコントロール を貼り付けています。そしてウインドウのスクロールバー でエディットコントロールのスクロールを連動させています。 >>652 子ウインドウにエディットコントロールは貼り付けられますか?
655 名前:デフォルトの名無しさん [2008/02/23(土) 20:00:44 ] WindowsでスプールファイルにEMFがあります。このファイルを元にし て、印刷しますがこのファイルを解析して、実際に紙に印刷される意味 のあるデータを取得すると言う事は出来るのでしょうか? RAWに関しては、解析して意味のあるデータを取得した事はありますが、 EMFに関しては良く分かりません。Windows XPの環境です。初心者です が、宜しくお願いします。
656 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:25:07 ] >>655 これかなたぶん? msdn2.microsoft.com/en-us/library/ms534514 (VS.85).aspx
657 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:57:42 ] Windows VistaでBeep関数を呼び出しても音が鳴りません。 何か仕様変更等あったのでしょうか。
658 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:58:33 ] EnumEnhMetaFileだろjk
659 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:32:15 ] VC++6.0、SDKでEDITボックスにドラッグアンドドロップしてファイル名を取得したいのですが DragAcceptFiles(::GetDlgItem(hWnd, IDC_EDIT1), TRUE); とやってもWM_DROPFILESのメッセージが拾えないです。 リストボックスに同様なものをしたら拾えたのですが EDITは特殊なのですか?
660 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:11:35 ] >>659 エディットボックス (というより自分自身がウィンドウプロシージャを握っていないウィンドウ) のメッセージを受け取ろうとしているのだから、サブクラス化しないと。
661 名前:デフォルトの名無しさん [2008/02/23(土) 22:53:06 ] >656 有り難う。しかし、日本語でないと良くわからん。日本語のサイトは無いのだろうか?
662 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:11:47 ] >>661 >>658
663 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:30:42 ] >>660 レスサンクス 調べてみる
664 名前:デフォルトの名無しさん [2008/02/24(日) 01:23:34 ] 作成したexeファイルと同フォルダにヘルプファイルを置いているので、 GetModuleFileName()を使って、パスを取得する処理を入れているのですが、 起動時にこの関数でエラーになってしまいます。 で、GetLastError()を使うとエラーコードは24とのこと。 エラーコード24は「プログラムがコマンドを発行しましたが、コマンドの長さが正しくありません。」らしいのですが、 これは何が理由でエラーとなっているのでしょうか。。
665 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:30:16 ] まずは自分コードを疑おう
666 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:48:07 ] プロセスにマップされたものでないならエラーになるに決まってるだろ
667 名前:666 mailto:sage [2008/02/24(日) 01:50:32 ] やるんならGetCurrentDirectory使うか INIとか設定ファイルなんかに持たせるとか そういうのでいいんでね?
668 名前:664 mailto:sage [2008/02/24(日) 01:53:59 ] >>665 もちろん自分のコードを疑っているんですが、 その取っ掛かりが欲しくて。 このエラーコードの意味やどういった時に起こるものなのかがわかれば、 どこから目を付ければいいかわかるかなと思ったんですが。 >>666 すみません。 プロセスにマップという意味がよくわかっていませんが、 要は、自exeファイルがあるパスを取得するには、 ただ単にGetModuleFileName()を呼び出すだけではダメだ、ということでしょうか?
669 名前:664 [2008/02/24(日) 02:20:23 ] >>667 ありがとうございます。 いま作ってるのが常駐するやつでして、 GetCurrentDirectory()もやってみたのですが、 常駐アプリの場合だと、C:\Document and Settings\[User Name]\ が返るみたいでした。
670 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:38:56 ] >>667 おいおいGetCurrentDirectoryとか嘘を教えるなよ カレントディレクトリ≠exeのディレクトリだと誤作動するアプリの元凶だろ >>669 GetModuleFileName→(PathRemoveFileSpec)→PathAppend
671 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:44:31 ] その exe を他のディレクトリに移してみてから実行したら どうなるかは試してみた?。 GetModuleFileName の使い方に問題がなければ アクセス権や MAX_PATH とかの問題じゃない?
672 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:48:10 ] ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い
673 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:33:51 ] 最小コードも何も、>>670 に書いてある3つのAPI名でググればすぐに見つかるだろ その程度の検索も出来ないような奴はプログラマには向いてない
674 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:00:40 ] 知りたいのはヘルプの位置じゃなくて、GetModuleFileNameがエラーを返す理由でないの? PathAppend とかぐぐってどうすんの。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:02:39 ] DWORD GetModuleFileName(hinstModule, lpszPath, cchPath) 戻り値 関数が正常に終了した場合は、 バッファにコピーされた文字列の文字数を返します。 それ以外の場合は、 0を返します。拡張エラー情報を取得するには、 GetLastError関数を使います。
676 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:08:57 ] ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い
677 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:19:44 ] もうさ、__argv[0]でも使ってれば?
678 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:22:54 ] #include<windows.h> #include<stdio.h> int main(void){ char filename[_MAX_PATH]; GetModuleFileName(NULL, filename, sizeof(filename)); printf("%.*s\n", sizeof(filename), filename); return 0; } >>676 何故自分で貼らない?質問者か? >>675 で分からないなら MSDN ダウンロードしなよ 無料だから
679 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:25:35 ] やっぱ勘違いしてたか。最小コード貼れってのは、質問者に言ってるんだよ。 エラーを再現できる最小限のコードを出せってな。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:30:44 ] 672は誤解されてしまったようで申し訳ない 解決方法は、もちろん示されたAPIをググってコード見直せばOKなんだ エラー原因もそれで解決するはずなんだが、それができないのなら晒したら? という話
681 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:39:43 ] > GetModuleFileName(NULL, filename, sizeof(filename)); 今時こんなコード書く糞プログラマは偉そうな事言えんぞw
682 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:58:06 ] 普通誤解しないから
683 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:06:58 ] >>678 そんなヘドロみたいなコード貼るな
684 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:26:50 ] >>681 横レスですまないが、素人目にはどこが悪いかわからない。 sizeof(filename)/sizeof(char)としないとUNICODEビルドで問題が出るのかな。
685 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:35:55 ] DWORD GetModuleFileName(HMODULE, LPTSTR, DWORD);
686 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:43:13 ] 今は一々URLDownloadToFileで手元にファイルを保存→ファイルを開いて読み込む→ 処理→ファイルを消す。ってやってるんだけど、ファイルとして保存しなくても 直接ネット上から読み込む。みたいなスマートな方法ってありませんか?
687 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:46:49 ] 普通にソケットを使えばいいだろ
688 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:49:03 ] InternetReadFile
689 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:18:04 ] >>687-688 ありがとう。調べてみたら何となく分かった
690 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:52:58 ] なんかフルボッコなので書き直した #include<windows.h> #include<stdio.h> #include<wchar.h> #include<tchar.h> #define NITEM(arr) (sizeof(arr)/sizeof(arr[0])) int _tmain(void){ TCHAR filename[_MAX_PATH]; GetModuleFileName(NULL, filename, NITEM(filename)); _tprintf(TEXT("%.*s\n"), NITEM(filename), filename); return 0; }
691 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:11:01 ] Win32ならRTL_NUMBER_OFかARRAYSIZE使おうぜ。 と書こうとヘッダ見てたら、いつの間にかRTL_NUMBER_OF_V2が増えてる。 こっちはC++専用ながら、ポインタだとコンパイル通らないのか。
692 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:26:20 ] このスレ用のwikiなんてあったんだな どういう経緯で作られたの? まったく更新されてないようだけど
693 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:31:53 ] V2 というネーミングセンスに吹いたw
694 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:02:08 ] >>692 更新されてないどころか内容も無いし次からテンプレから消してもいいかもな
695 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:50:16 ] >>690 まだまだ叩かれる余地がある。 ttp://msdn2.microsoft.com/en-us/library/ms683197.aspx まず、2k/XPでは、ファイルパスがMAX_PATHより長かった場合、NULL終端されない。 MAX__PATHより長かった場合、\\?\を使った長いファイルパスを返す。 したがって、filename配列は32000ぐらい確保すれば安全だ。 あと、NTIMEなんていう汚いマクロ使うな。
696 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:56:29 ] NULL終端はされるんじゃないか? >the string is truncated to nSize characters including the terminating null character. 「null 文字も含め nSize 文字分に切り捨てる」でしょ?
697 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:04:58 ] Windows XP/2000: The string is truncated to nSize characters and is not null terminated. ~~~~~~~~~~~~~~~~~~~~
698 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:11:25 ] あ、本当だ。失礼しました
699 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:20:22 ] >The global variable _pgmptr is automatically initialized(略) 身も蓋もないとはまさにこのこと(w
700 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:22:52 ] そもそも_MAX_PATH(アンダースコア付き)なんてWin32APIで使う物では無かろう
701 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:45:36 ] 動けばいいじゃん こういうどうでもいいとこをグチグチ言ってくる奴多杉
702 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:39 ] お前アホだろ 特定の状況でまともに動かないからレスがついてんだろうが
703 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:54 ] >>701 お前みたいな思想を持つ奴が、Windowsのバージョンアップ程度で、動かなくなる糞コードを書く。
704 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:56:12 ] 偉そうなことを言う奴に限ってコードの出し惜しみ(というかかけない)とか ちょっとレベルの高い話になると何も答えられないんだよな。
705 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:58:26 ] 先生!ファイル名をnul.exeにしたんですけど、 どうやって起動すればいいですか!?
706 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:36:17 ] RunDLL32 shell32.dll,ShellExec_RunDLL nul.exe
707 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:00 ] C:\>RunDLL32 shell32.dll,ShellExec_RunDLL c:\nul.exe 指定されたデバイス、パス、またはファイルにアクセスできません。 アクセス許可がない可能性があります。
708 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:33:01 ] なにがしたいねん
709 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:56:06 ] prn とか、DOS時代からある予約名を たまに思い出したかったんだろう
710 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:58:24 ] C:\>dir nu* ドライブ C のボリューム ラベルがありません。 C:\ のディレクトリ 2008-01-21 22:09 130,765 NUL 2008-02-03 07:45 53,248 nul.exe
711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:02:56 ] >>678 屑コード晒す >>690 書き直してもやっぱり屑コード >>701 「動けばいいじゃん」 ・・・w
712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:07:59 ] | ∧ ∧ |/ ヽ ./ .∧ | `、 / ∧ |  ̄ ̄ ̄ ヽ | ̄ ̄ ̄月曜日 ̄ ̄ ̄) | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\ 煽りはいらない |ヽ-=・=-′ ヽ-=・=- / ただ私に絶望したまえ |:: \___/ / |::::::: \/ /
713 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:27:46 ] 動けばいいじゃんって言う奴ほど汚いコードかくんだよな むしろ動けばいいって言う前提で書いてるからなんだろうがw そういう奴は個人でソースを管理する趣味グラマーでいてくれ
714 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:49:09 ] モジュール単位で仕様がハッキリしておけば中身のコードなんてどうでもいいじゃん と趣味グラマーが申しております
715 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:52:38 ] その中身を保守する人のことを考えろ
716 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:54:25 ] 仕様通り動いてくれるなら正直悪くは無い。 仕様通り動かない、そもそも仕様自体が二転三転するとかだと楽し過ぎるからな。
717 名前:デフォルトの名無しさん [2008/02/24(日) 20:21:51 ] MessageBoxだとビープ音が鳴ってしまうのですが、 音を消すことはできますか? もしくは、MessageBoxに似た音の出ないapiはありますか?
718 名前:664 mailto:sage [2008/02/24(日) 20:30:38 ] 664でGetModuleFileName()関連の質問をした者です。 変な質問をしてすみませんでした。 >>676 で言われているように、 最小コードを作ったのですが、なぜかこちらではエラーが発生せず、 質問しようにも出来ない状態です。 自分で少しずつ調査して行こうと思います。 お騒がせしてしまって申し訳ありませんでした。 MUI化していないときはエラーになっていなかったので、 とりあえずはMUIあたりから調べてみます。 ありがとうございました。
719 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:55:24 ] >>717 MessageBoxのようなダイアログボックスを作るしか無いんじゃないの? たまーにMB_NOSOUNDとか欲しくなるんだけどね・・・
720 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:01:23 ] >>719 ありがとう
721 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:53:35 ] 先生! >>690 のコードをプロレベルのコードに修正お願いします。
722 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:12:30 ] 屑コードと言う人は、とりあえず そのコードを正しく直してから批判しな?
723 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:28:42 ] >>678 屑コード晒す >>690 書き直してもやっぱり屑コード >>701 「動けばいいじゃん」 >>722 「正しく直してから批判しな」
724 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:47 ] 「?」でこのスレを検索すると、特徴的な使い方している香具師が浮かび上がってくるね。
725 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:48 ] マイタ・デッヤーレ
726 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:06 ] #include <windows.h> #include <tchar.h> #include <stdio.h> #include <stdlib.h> #define CHECK(b) if(b); else goto ERROR int _tmain(void) { int exit_status = EXIT_FAILURE; LPTSTR filename = NULL; DWORD len; TCHAR dummy; len = GetModuleFileName(NULL, &dummy, 1); CHECK(len != 0); filename = malloc((len + 1) * sizeof (TCHAR)); CHECK(filename != NULL); len = GetModuleFileName(NULL, filename, len + 1); CHECK(len == 0); _tprintf(_T("%.*s\n"), len, filename); exit_status = EXIT_SUCCESS; ERROR: free(filename); return exit_status; }
727 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:45 ] >>699 そういうのって C++ のグローバルオブジェクトのコンストラクタから 正しく使えるんだろうか。 もっとも、GetModuleFileName も正しく使えるかどうか。
728 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:56:18 ] >>726 > CHECK(len == 0); これは拙く内海?
729 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:59:04 ] 間違えた。 0 の時は 「失敗」 なのか。
730 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:21:32 ] >>726 > len = GetModuleFileName(NULL, &dummy, 1); で成功すればlen=1だから > filename = malloc((len + 1) * sizeof (TCHAR)); filenameのバッファが全然足らねーだろ つーかcalloc使えよ 相変わらず屑コード全開だな
731 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:00:24 ] 質問と回答とこの俺のレス以外はいりません
732 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:01:02 ] なんでcalloc使わないといけないんだ?w
733 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:06:13 ] >>678 屑コード晒す >>690 書き直してもやっぱり屑コード >>701 「動けばいいじゃん」 >>722 「正しく直してから批判しな」 >>726 屑コードどころかバグありコード晒して恥の上塗り >>732 「なんでcalloc使わないといけないんだ?w」
734 名前:1 ◆GqrOSDYjeQ mailto:sage [2008/02/25(月) 01:11:01 ] >>726 #define CHECK(b) if(b); else goto ERROR このコードは個人的に盗ませてもらうかもしれない いいもん見せてもらったw
735 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:20:11 ] 煽ってるやつは同一人物か? 違うよな?な?でないとおかしいもんな
736 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:25:48 ] 煽ってるやつは同一人物か? 違うよな?な?でないとおかしいもんな
737 名前:731 mailto:sage [2008/02/25(月) 01:27:05 ] マジ黙れお前ら
738 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:28:46 ] こんな感じでいいのか? LPTSTR name = NULL, newptr; DWORD len = 32, rlen; do { rlen = 0; len *= 2; if ( (newptr = (LPTSTR)realloc(name, len * sizeof(TCHAR))) == NULL ) break; name = newptr; } while ( (rlen = GetModuleFileName(NULL, name, len)) == len ); if ( rlen ) _putts(name); free(name); 始め、GetLastErrorを使った切り捨てチェックで実装しようとして気付いたのだが、 SDK for WindowsVista 付属のドキュメントで、 GetModuleFileNameがバッファが小さくて切り捨てした時、 ERROR_INSUFFICIENT_BUFFERがセットされる、とあるけどこれ嘘だな。 いつからか誤った記述が紛れ込んだ予感。
739 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:32:22 ] >>734 が嫌味なのか真性なのか分からない俺はハントシーロムッテロなのか・・・
740 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:36:18 ] >>738 DWORD len = MAX_PATH, rlen; の方がrealloc呼ばれる回数が減っていいかも
741 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:36:49 ] MSDNは無謬 そんな風に思っていた時期が… 無い
742 名前:738 mailto:sage [2008/02/25(月) 02:06:26 ] 改めて見るとrealloc使う必要性全然ないな。 随時追加を実装する時のコードだ、これは。 free(name); if ( (name = (LPTSTR)malloc(len * sizeof(TCHAR))) == NULL ) break; これでいいや。
743 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:27:33 ] このスレからカルトを感じる
744 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 03:15:59 ] 適当な大き目のバッファをスタックに取ってOK それで取得できないような糞長いディレクトリを使うような池沼は無視して問題ない。
745 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:31:53 ] 俺も1KBくらい取って駄目なら止めるな 無駄な作業だもんw
746 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 05:00:57 ] プログラム板の住人はいつも無意味にピリピリしてるのれす
747 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 05:06:54 ] そもそも>>678 が勘違いして関係ない糞ース書くからだろ
748 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:41:48 ] そうか・・・。 バッファが足りないときは nSize がそのまま返ってきて ERROR_INSUFFICIENT_BUFFER エラーになるだけなのか。 あんま斜め読みして横レスするもんじゃないな。
749 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:45:05 ] そういう風に勝手にMaxを想定するプログラマが多いから、 東証のシステムが止まったりするんだよな。
750 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:04:45 ] >>749 Microsoft自体がそうだけどな。 Path系APIがMAX_PATHを超えるパスを正しく処理できない、とか。
751 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:12:57 ] それは、ANSI版使うからだね。Unicode版使えば、約32000文字まで扱えるかな?
752 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:50:50 ] 違うよ。Path関数はバッファ長を引数に渡さないからA/W版共にMAX_PATH固定で作ってあるんだよ。