1 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:44:55 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
751 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:47:56 ] ちょっと思うんだけど、 ファイルパス長ってMAX_PATHバイト?MAX_PATH文字数? MAX_PATHバイトだったら、マルチバイト文字で半分になるんだけどいいの? それとも、 #define MAX_PATH_NAME (MAX_PATH * (2 / sizeof(TCHAR))) な事すんの?
752 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:50:14 ] 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するからMAX_PATH自体あまり意味無いような・・・
753 名前:751 mailto:sage [2007/04/13(金) 13:50:49 ] 補足 TCHAR szFile[MAX_PATH_NAME + 1]; とつかうとして
754 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:57:06 ] まあDOS/Windows 3.1時代の遺物なんで
755 名前:751 mailto:sage [2007/04/13(金) 14:01:31 ] >>752 CreateFileの説明の通り In the ANSI version of this function, the name is limited to MAX_PATH characters.To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File. ワイド文字で32767文字って事は、65534バイト宣言しとけばいいの? ちょいもったいない気が・・・
756 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 14:19:59 ] 必要に応じて動的に確保すればいいんじゃないの? どうしても固定長にしたいわけ?
757 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 14:24:08 ] OPENFILENAME の戻り用の器は MAX_APTH 使った固定長だな。
758 名前:751 mailto:sage [2007/04/13(金) 14:36:11 ] >>756 固定長にしたい理由というわけじゃありませんが、 明確な理由があれば、それに準じたいと思っています。 もちろん、実用的な側面でも判断しますが
759 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:23:35 ] ぐだぐだ言ってないで実用的な面でどうなるか 試してみろよ。 FAT32,NTFS,共有ドライブで長い名前のファイル名作るくらいできないの?
760 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:02:48 ] 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから 文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
761 名前:デフォルトの名無しさん [2007/04/13(金) 17:07:47 ] >>760 うるさいばか
762 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:12:13 ] >>758 9x系OSでANSI版のAPIつかってみなはれ ちなみにMSでは、MAX_PATHは文字数としてあつかっとるよ 稀にMS社内でも開発者が混乱してしもて、 大穴あけてしもうたこともあるけどね
763 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:13:42 ] まったく1文字1Byteの連中はこれだから・・
764 名前:デフォルトの名無しさん [2007/04/13(金) 17:25:11 ] >>763 初心者にこのスレは不向きですよppp
765 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:26:38 ] >>751 これ以上はスレ違い APIではなくコーディングの話なら Cスレに行け
766 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:35:44 ] >>764 欧米の方ですか?
767 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:47:03 ] いいえ東亜です。
768 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:52:25 ] >>763 いや、ワイドキャラクタでも1文字2バイトじゃ済まないはずなんだが。 サロゲートペアとかあると4バイトになる。 あれ、Win32APIってUCS-2のままだったっけ? まぁサロゲートペア対応しても、そもそも文字の定義ってなに?ってなるし。
769 名前:デフォルトの名無しさん [2007/04/13(金) 18:14:56 ] ファイルの更新日時を変更するAPIを教えてください
770 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 18:23:11 ] GetFileTime
771 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 18:26:48 ] Sじゃねーのか
772 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 18:28:36 ] お前さん頭いいな。
773 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 18:36:47 ] Mですから
774 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 18:42:44 ] >>768 ビル・G 数種類の奇妙な文字で文章を書く、親愛なる日本人の皆さん。 私はアルファベット26文字で美しい詩的な文章を綴り、人々を感嘆させるビル・Gである。 ユニコードとは何か。簡単に言えば、あらゆるプラットフォームで様々な言語を共通に扱えるようにするための統一的なコード体系のことだ。 もっと簡単に言おう。アルファベット以外の野蛮な絵文字を使ってコミュニケートする第三世界の人間に対する、心からの配慮だ。 今までも手を焼いてきた。2バイトコードの各国語対応も、少しは楽になるのだけどね。 君たちの国でも、ユニコードの問題が盛んに議論されているようだね。 日本や中国や台湾で使っている漢字コードやフォント違うって? それは君たちが今までに勝手な文字を作りすぎてきたツケに過ぎないよ。 また、『固有の文化』という言葉で語られる微妙な差異に関する議論は、 私にはちょうど「靴下は右足から履かなければならない」 「いや、左足から履くのが伝統だ」と言い争いをしているようにしか聞こえない。そんなことはどうでもいいじゃないか!
775 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 18:54:31 ] 拘りすぎてバカを見るのが東洋人 大雑把過ぎてバカを見るのが欧米人
776 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 19:25:50 ] CJK以外にもBidiとか言語タグとか対応するのが 遅かったねぇ。 BMPを16bitじゃなくて32bitにしてれば、もう少し問題先送りできたのに。 あとはユニコードまでも取り込んだGB18030とかどうするんだろうっていう。。。
777 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 19:31:01 ] XP以降のメモ帳で右から左に読むにして Hello, World打つだけでも軽く死ねるなw
778 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 20:22:24 ] 神の罰です
779 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:24:16 ] >>748 ナノ秒 冗談じゃなくて素直に考えて
780 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:26:31 ] >>768 ファイル名の制限という観点ではコードユニットの数で数えるから関係ない
781 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:31:48 ] ウニコードはうまそうだ
782 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:42:17 ] >>780 NTFSはどのエンコーディングを使ってんの?
783 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:54:10 ] >>780 ドキュメント上の問題のことです。 n文字という表現では最大バイト数は判りにくい。
784 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:54:42 ] >>782 おそらくUTF-16
785 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:55:22 ] もちろんUTF-16LE
786 名前:デフォルトの名無しさん [2007/04/13(金) 23:01:50 ] 結局、MAX_PATHの単位はなんなんだ? 明らかにバイト数じゃない 文字数も数えてみたがなんかちがう 会社によって1バイトのズレも許さないからこのあいまいな仕様がかなりムカつく ちなみにファイルダイアログの最長はXPSP1までは0xFFFFだったがXPSP2からはどこまではいるのかよくわからん ドラッグアンドドロップの限界は一体どこなんだ?
787 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:18:44 ] WinNTのNTFSドライバのパス名制限が (2^15-1) UTF-16符号単位だったと思うが
788 名前:751 mailto:sage [2007/04/13(金) 23:29:46 ] >>759 もちろん、\\.\〜の長いファイル名前をCreateFileで作成し、 動作を確認しています。 しかしながら、エクスプローラも捕らえられないファイル名は実用的か? それともMAX_PATH以上32767文字以下で、もっともらしい定数があり、 自分が知らないだけかわからんとです。
789 名前:デフォルトの名無しさん [2007/04/13(金) 23:44:40 ] GUIアプリでコンソールを表示するにはどうすればいいのでしょうか? やりたいことは、 ・起動した時にはコンソールアプリのように振る舞う。 ・ある入力があった時点でウィンドウを表示し、GUIアプリとして振舞う main()で起動するとコンソールは出ますが、WinMain()の第一引数で取得できる HINSTANCEが取得できないので、GUIアプリとして振舞えない。 WinMain()で起動するとGUIは出せるが、コンソールへ出力を行えない。 WinMain()でGUIアプリとして起動しておいて、必要に応じて(何らかの関数呼び出しによって) コンソールを表示させるのが正しいやり方なのかと思っていますが、調べてもやり方が見つかりません。 どなたかお助けを・・・
790 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:49:13 ] >>789 HINSTANCE == GetModule(0) だったハズ。
791 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:51:05 ] コンソール部分は別にしてCreateProcessは?
792 名前:791 mailto:sage [2007/04/13(金) 23:51:06 ] あ、すまん間違えた。 ×:GetModule ○:GetModuleHandle
793 名前:792 mailto:sage [2007/04/13(金) 23:52:04 ] >>792 ==>>790 !=>>791 もう寝る!
794 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:54:36 ] >>789 CreateProcess, GetStdHandle, SetStdHandle, CreatePipeでリダイレクト。
795 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:54:38 ] AllocConsole stdout
796 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:56:39 ] コンソール プロセスを生成して標準ハンドルをリダイレクトする方法 support.microsoft.com/kb/190351/ja
797 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 00:00:43 ] >>789 WinMainから始まるプログラムにAllocConsoleを使う方法も出ているが、 個人的には、手間要らずにC stdioやC++ iostreamを使えるので、 mainから始まるプログラムにした方がいいと思う。 EXEのインスタンスハンドルは791のとおりGetModuleHandleで。
798 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 00:31:27 ] >>777 前からおもってたのだが、右から左に読む文化圏に対応してるなら、 上から下に読む文化圏にも対応してていいんじゃないかと思ったりするのだがまぁいいや。 そういえば、昔、Macのことえりだったか縦書きIME変換やってくれてた記憶があったな〜
799 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 00:44:47 ] MS-IMEも、Wordなんかで縦書きにすればそれにあわせてくれる。
800 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 06:13:01 ] 質問です。GetProcAddressを使ってDLL内の関数を呼び出したいのですが、 上手くいきません。プログラムを実行すると、そのまま強制終了してしまいます。 FARPROC SetHook,ResetHook; SetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),TEXT("_SetHook")); ResetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),TEXT("_ResetHook")); として関数のアドレスを取得しています。各関数のアドレスは SetHook : 011412A0 ResetHook : 011412D4 でした。tdump.exeでは Exports from hook.dll 3 exported name(s), 3 export addresse(s). Ordinal base is 1. Sorted by Name: RVA Ord. Hint Name -------- ---- ---- ---- 000012D4 1 0000 _ResetHook 000012A0 2 0001 _SetHook 00009158 3 0002 ___CPPdebugHook という結果が得られました。 GetProcAddressの使い方が間違っているのでしょうか? コンパイラの設定に問題があるのでしょうか? どのあたりに原因があるのか指摘して下さい。お願いします。<(_ _)> コンパイラはBCCです。BCC Developerでビルドしています。
801 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 06:20:21 ] GetProcAddress の第2引数は LPCSTR だが。
802 名前:800 mailto:sage [2007/04/14(土) 06:38:04 ] >>801 SetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),"_SetHook"); ResetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),"_ResetHook"); としたのですが、上手くいきません。関数名の指定が間違っているのでしょうか?
803 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 06:46:26 ] >>800 まずは「強制終了」する場所を探らないと。 その情報だけじゃ、GetProcAddress() 絡みの問題かどうかなんてわ からん。
804 名前:800 mailto:sage [2007/04/14(土) 06:57:58 ] >>803 関数の呼び出し時に強制終了します。 インポートライブラリを通しての呼び出しには成功したのですが。
805 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 07:02:09 ] それはGetProcの問題じゃないだろうな FARPROCの宣言はどうなってる?
806 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 07:07:26 ] >>804 インポートライブラリを通しての呼び出しには成功ってんだったら GetProcAddressで失敗なんじゃなくて それで取った情報を使う時の失敗だろ どうやって関数呼び出してんのか見せてみぃや
807 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 07:12:39 ] >>805 VCだと「typedef int (*FARPROC)(void)」だが、BCCはどうなんだろう・・・ ていうかそのまんま使ったら普通コンパイルとおらないかも?
808 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 07:16:41 ] 呼び出し規約が間違っている。それでスタック壊れているんだろ。
809 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 07:18:09 ] 普通目的の関数に合致した関数ポインタの型を定義してそれで使うもんじゃね? ただのFARPROCにぶち込んでるヤツ初めて見た
810 名前:800 mailto:sage [2007/04/14(土) 07:39:35 ] >>805-809 レスありがとうございます。 #define EXPORT __declspec (dllexport) typedef EXPORT HHOOK (*SETHOOK)(const HWND hCaller); typedef EXPORT void (*RESETHOOK)(void); SETHOOK SetHook; RESETHOOK ResetHook; と関数ポインタの型を定義してから SetHook(hWnd); ResetHook(); という感じで呼び出してみたのですが、やはり上手くいきません。
811 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 08:02:06 ] もう一度レスを見直すんだ。そこに答えがある。
812 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 08:17:26 ] VC2005でstrlen等を使うと
813 名前:800 mailto:sage [2007/04/14(土) 08:17:48 ] >>811 呼び出し規約の整合性に問題があるのでしょうか? もう少し詳しく教えて頂けないでしょうか?
814 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 08:34:30 ] 提供する側では__declspec (dllexport)が必要だろうが 使う側では要らないだろ。 提供する側でも使う側でも__stdcallとかを指定したほうが安全。 デフォルトに任せれば同じになっている可能性が高いけど 不一致になる危険性がある。 GetProcAddressじゃなくて暗黙のリンクでもいえることだけどね。 GetProcAddressの戻り値が0ってことはないよね。
815 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 08:56:00 ] >>810 DLL側のソースでその2つの関数がどう定義されているかもチェック
816 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 08:57:17 ] うまくいかないのと直接の関連はないが、 一々LeadLibraryするな。 1回ロードしたら、そのハンドルを使いまわせ。
817 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 08:58:36 ] LeadLibrary
818 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:01:36 ] 一度だけLoadLibraryして、そのハンドルを保持して使うってのもそうだけど GetProcAddressに直接ぶち込むのもどうかと 誤動作の原因になる可能性は充分にあるかと
819 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:06:34 ] 誤動作するとは思えないが、直接GetProcAddressに渡していたら、 FreeLibraryするのに不便だろう。 GetModuleHandleで後から解放用にハンドルを得るなんて無茶も甚だしい。
820 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:08:22 ] 誤動作するとは思えないって思うのが危ないな 常に誤動作するかも知れないと思ってコーディングすべし
821 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:09:01 ] >>787 UNICODE_STRINGの構造上の問題だな 同様の理由でNT系はコマンドラインの長さにも32767文字(UTF-16符号単位)制限がある 驚くべきことにWin9xだとコマンドライン長が1MB超えても大丈夫。
822 名前:800 mailto:sage [2007/04/14(土) 09:09:21 ] >>814-819 レスありがとうございます。 DLLの関数を #define EXPORT __declspec (dllexport) EXPORT HHOOK WINAPI SetHook(const HWND hCaller); EXPORT void WINAPI ResetHook(void); とし、関数を呼び出すプログラムで typedef HHOOK WINAPI (*SETHOOK)(const HWND hCaller); typedef void WINAPI (*RESETHOOK)(void); SETHOOK SetHook; RESETHOOK ResetHook; HMODULE hook_lib; hook_lib = LoadLibrary("hook.dll"); SetHook = GetProcAddress(hook_lib,"SetHook"); ResetHook = GetProcAddress(hook_lib,"ResetHook"); として関数を呼び出したのですが、やはり駄目です。GetProcAddressの戻り値を 再度確認したのですが、0ではありませんでした。
823 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:10:20 ] 32767文字を超えるコマンドライン自体普通無いだろ・・・
824 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:12:32 ] typedefのWINAPI要らなくね?
825 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:18:50 ] >>822 あんまり関係ないけどGetProcAddressの戻り値ってキャストしなくてもコンパイル通るのか?
826 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:58:58 ] 関数ポインタの宣言なんだが・・・ typedef HHOOK (WINAPI *SETHOOK)(const HWND); typedef void (WINAPI *RESETHOOK)(void); じゃねーの?WINAPIの位置が違うとか。 >>825 警告が出るだけだったような。
827 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:03:42 ] 呼び出し規約の記述位置は括弧の中だね。 戻り値に付属なわけじゃなくて、 関数に付属する情報だからなんだろうけど、 最初は戸惑うよね。
828 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:07:09 ] Borlandの昔のコンパイラだと微妙に仕様が違ったり 標準キーワードじゃないから仕方ないけど
829 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:14:48 ] なんでだろうね? 間違って古いDLLが残っているとか。
830 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:18:02 ] DLL側と呼び出し側のソースをまとめてうpってもらった方が話が早くていいかもしらんな
831 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:20:56 ] VCの場合、 #define EXPORT __declspec(dllexport) EXPORT HHOOK WINAPI __stdcall SetHook(const HWND hCaller); EXPORT void WINAPI __stdcall ResetHook(void); こうじゃないかな。__stdcallはなくても動きそうな気がするけれど
832 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:27:28 ] >>831 WINAPIは #define WINAPI __stdcall とかされてるだけだから、どっちかだけで十分
833 名前:800 mailto:sage [2007/04/14(土) 10:33:36 ] >>824-832 レスありがとうございます。 typedef HHOOK (WINAPI *SETHOOK)(const HWND hCaller); typedef void (WINAPI *RESETHOOK)(void); SETHOOK SetHook; RESETHOOK ResetHook; HMODULE hook_lib; hook_lib = LoadLibrary("hook.dll"); SetHook = (SETHOOK)GetProcAddress(hook_lib,"SetHook"); ResetHook = (RESETHOOK)GetProcAddress(hook_lib,"ResetHook"); としたのですが駄目でした。VCのExpress Editionで上手くいくかどうか試してみます。
834 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:38:30 ] >typedef HHOOK (WINAPI *SETHOOK)(const HWND hCaller); 今思った 引数は型だけで名前はイラネ
835 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:40:22 ] >>800 Borlandデバッグ環境は知らんが、DLL側のSetHook()の入り口にブレークポイント仕掛けるなり、MessageBox() 出すなりして、そこまで来ているか(強制終了がどの段階で起きているか)確認しろ。 関数名から何がやりたいか想像はつくが、もう少し経験をつんでからやることを強く勧める。
836 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:42:32 ] つーか無理にLoadLibraryでやらんでもいいことだけどな
837 名前:デフォルトの名無しさん [2007/04/14(土) 10:47:16 ] そりゃまあごもっともです
838 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 10:48:32 ] >>800 >>インポートライブラリを通しての呼び出しには成功したのですが。 が本当なら、そのヘッダーファイルでの関数プロトタイプ宣言(は正しいはずだからこれ)にあわせろ。 おれもお前には、Hookは10年早いと思う。
839 名前:800 mailto:sage [2007/04/14(土) 12:15:58 ] >>834-838 レスありがとうございます。 マウスフックを使ったプログラムを作成しています。システムフックにより 他のウィンドウのタイトルを変更することには成功しました。そのため、 フックの処理自体には問題が無いと考えているのですが。 VCで実行してみたのですが、SetHook内で処理が中断しました。 インポートライブラリを使用した場合、何も問題は起きなかったのですが。(?_?)
840 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 13:02:13 ] SetWindowTextでタイトルが変わらないとか騒いでた奴か。 やっぱりおまえには早いと思うぞ
841 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 15:40:25 ] DLL や EXE に含まれているリソースの番号だけって取得できますか? たとえばこの DLL の STRINGTABLE には、1000番 1001番の STRING が含まれています、という感じの API です。
842 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 15:45:04 ] FindResoource?
843 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 15:45:31 ] EnumResourceNames()
844 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 16:57:55 ] 「普通ないだろ」が生む○○問題
845 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:00:38 ] >>825 Cだとコンパイルできる C++だとコンパイルできない
846 名前:デフォルトの名無しさん [2007/04/14(土) 18:26:15 ] なんで最近そんなことになってんだろうね C言語でコンパイルできたソースが普通にC++で通らん
847 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:37:39 ] [アニメ DVD] ヤミと帽子と本の旅人 第04話 「マリエル」 (640x480 DivX511).avi
848 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:40:03 ] >>846 C++は、例えCとの互換性を失ってでも危険な香りがする暗黙の型変換を禁止した。 これだけは譲れないというやつ。
849 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:42:44 ] 思いややりが無い朝鮮人的な思考だ
850 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:48:31 ] つーか、すっぱりと別言語にしちゃえば良かったのに 中途半端に互換性を持ってるからすごいカオスに
851 名前:デフォルトの名無しさん [2007/04/14(土) 18:52:09 ] unsigned char*とchar*の代入なんてエラーにするほど危険かなぁ なんか言語潔癖症的変な奴いるじゃないかなぁ おかげで意味のないキャストをプチプチ入れてく無駄作業 こんなとこ明示的にキャストしたところでどうだというのか・・・
852 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:01:27 ] C++って型キャストが必須なんだっけか 俺Cメインだからうろ覚えだぜ
853 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:12:04 ] >>851 reinterpret_castが必要な場面ってそんなにある?
854 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:13:26 ] やっぱCがいいな。
855 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:16:32 ] C++で生のWin32 APIを使うとreinterpret_castだらけ。 Win32 APIは所詮Cを念頭において作ったという感じ。 >>849-851 それはC++作ったBjarneに言ってやれ。 静的型付けで強い型安全性でプログラマを守るというのがC++。
856 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:48:33 ] >>850 今までに何千人のプログラマが同じことを思っただろうな… すべてが今更の話だが…
857 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:03:28 ] >>850 ゲイツ・ビルに言ってやってくれ
858 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:05:41 ] >>857 ビル・ゲイツの出した解がC#では? いやビルが実際作ったわけではないけどさ。
859 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:13:34 ] C#もヤバい方向にいってると思うけどな varってJavaScriptみたい
860 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:15:39 ] ヴァー
861 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:15:57 ] そうか? 型推論や関数型プログラミング的な機能を取り入れるのは最近の流行だよ。
862 名前:デフォルトの名無しさん [2007/04/14(土) 21:29:34 ] 所詮学者の独りよがりだよな 明らかになにも作ったことがないグズが言語仕様を決めてる気がする
863 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:50:53 ] おまえに32ビットの羅列ほいと渡して何型の変数か分かるのか?
864 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:55:46 ] >>862 言語の一つでも作ってみろよグズ
865 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:56:26 ] 型推論はソースの冗長性を削る意味で有用だろうが。
866 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:56:41 ] >>862 みたいにブツクサ独りよがりで文句を言うだけで、 かといって別に妙案も何にも持っていない奴を色んなところでよく見かける。
867 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:58:49 ] つーか、議論したけりゃ他所でやれ。
868 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:01:50 ] varをVariant型とかObject型と勘違いして拒否反応示している奴が結構いるみたいだな。 あとC++のテンプレート関数が型推論やってくれてるの知らない奴も多杉。
869 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:30:25 ] >>851 signed char が-128〜127の整数の集合 unsigned char が0〜255の整数の集合 例えば前者の変数を作成して 「リンゴをA店で100個、B店で155個買いました。 全部で何個でしょう」 という問題を解いて、答えが-1個だったらおかしいでしょう。 あまり問題だと思わないのは、先に16進ありき、だからじゃないかな。
870 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:39:53 ] もう止めようぜ お前らこそ冗長にもほどがある
871 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:40:11 ] Dのautoキーワードの場合で書くと、 HogeClass obj = new HogeClass(); を auto obj = new HogeClass(); みたいに書ける ジェネリックプログラミングとかで 型がよく分からない時なんか更に便利 多分C#も同じ感じかと
872 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:42:06 ] >>870 リロードしてなかった すまん
873 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:48:00 ] ザ・スレチガイ
874 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:53:41 ] (´ω`)
875 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 23:13:38 ] SuspendThread(this);
876 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 23:20:36 ] 解決方法がわからないので教えてください。 MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _memmove はすでに LIBCMTD.lib(memmove.obj) で定義されています というエラーが15個出ます(まったく同じlib同士なので制限の関係で割愛します) どちらかをunloadすればいいかとおもってプロジェクトの設定からやってみたんですが、どちらを行った場合でも、Libファイルがないためのエラーが出ます。 どうかおねがいします。
877 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 23:42:19 ] >>876 おちつけ。大体意味は分かるが。
878 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 00:03:44 ] どちらかをunload→どちらか一方とリンクする という意味じゃないのか? プロジェクトの中に、誰かが作ったライブラリ(スタティックリンクしちゃったやつ)が混じっているんじゃないか? 1.プロジェクトの設定−一般−MFCのスタティックライブラリを使用 2.プロジェクトの設定−C/C++−[カテゴリ]コード生成−[使用するランタイムライブラリ]マルチスレッド (デバッグ) に設定したらビルドできるか?(EXEでなくてDLLを作る場合は マルチスレッド (DLL、デバッグ)) あと、↑の例はVS6だが、環境も知らせておくように。
879 名前:デフォルトの名無しさん [2007/04/15(日) 00:29:00 ] GDI+のファイルの書き出しについて保存です。 読み込み、書き出しそのもの情報はあるのですが、Graphics→Imageにする方法がわかりません。 Imageにファイルを読み込んで、別の形式で保存するというのはあるのですが。 猫でもわかる〜を見ても読み込みまでしかかかれていないもので・・・ Graphics graphics(hdc); //描画処理 このGraphicsをImageに変換するにはどうしたらいいのでしょうか?
880 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 00:37:17 ] >>878 ありがとうございます。できました
881 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 00:48:12 ] >>879 GDI+の扱いは分からんのだけども GraphicsからBMPオブジェクト作ってImage.FromBitmapじゃ駄目?
882 名前:881 mailto:sage [2007/04/15(日) 00:51:32 ] 不安になってMSDN見てみたらそんなメンバ無かったw 忘れてくれ
883 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:04:10 ] >>881 わざわざ調べていただいてありがとうございます。こちらでも確認したのですが、 Graphicの方にしかありませんでした。
884 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:06:28 ] 間違ってました。Graphicsの方にもなかったです(汗 あるのはGraphics::FromImageですね。
885 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:08:59 ] それ何語?
886 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:10:16 ] エスペラント語でないことだけは確かだ
887 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:24:28 ] 謎語を適当に喋ってみるテスト Bitmapを作ってそこからGraphics:FromImage(bmp)で作ったGraphicsに hdcをソースにして描画すればいいんじゃね このスレ的にはhdcからBitBltするのかな?
888 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:32:04 ] >>887 ありがとうございます。その方法でいけました。 BitmapがImageと同じように使えるんですね。
889 名前:デフォルトの名無しさん [2007/04/15(日) 02:40:09 ] ハンドル(CreateFileが返す値)から、元のファイルのフルパスを取得することができるAPIってありますか。
890 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 02:41:52 ] CreateFileで開いてフルパスじゃ無いって事は カレントディレクトリパス+CreateFileに渡したパスで良いと思うけどどうかね?
891 名前:デフォルトの名無しさん [2007/04/15(日) 04:52:59 ] 他のアプリのフォーカスがあるコントロールへデータを送りたいのですが 以下の様なコードだと、アプリによっては正しくデータが送れません。 またブラウザで表示された、HTML領域のコントロールへも データが送れたらなと思うのですが、どういう方法がありますでしょうか? DWORD myid = ::GetWindowThreadProcessId(m_hWnd, NULL); DWORD toid = ::GetWindowThreadProcessId(::GetForegroundWindow(), NULL); ::AttachThreadInput(myid, toid, TRUE); //::SendMessage(::GetFocus(), WM_PASTE, 0, 0); //←貼り付けの場合は当り前だけど全て無問題 ::SendMessage(::GetFocus(), WM_SETTEXT, 0, (long)"TEST STRINGS!!!"); ::AttachThreadInput(myid, toid, FALSE);
892 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 04:55:36 ] HANDLE からもとのファイル名が知りたいって事じゃね? 俺はそんなAPI知らないけど。
893 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 04:57:23 ] 送り先が間違っているんだろ
894 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 05:07:56 ] 俺も送り先が間違っているに一票 他にもたまにウィンドウがフォーカス持ってないように見えてフォーカス持ってたり フォーカス持ってるようしか見えないのにフォーカス持ってなかったりする場合がある フック使ってフォーカスの移動でも見てみればいい
895 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 05:14:12 ] >>891 ブラウザは良く知らんが↓が参考になるかも試練 k-gensai.hp.infoseek.co.jp/tools/hige2ch/kowaza.html#list2 Webのフォームはウィンドウじゃないから普通に操作すんのは無理
896 名前:デフォルトの名無しさん [2007/04/15(日) 05:59:00 ] >>893-894 アプリの種類によっては、エディットではなく タイトルバーの文字列が設定されてしまう場合とかあるんですよね。。 完全にエディットにフォーカスがあるのを確認して、SendMessage()しているのですが… もう少し試行錯誤してみます。 >>895 やっぱりフォームのコントロールへのデータ送信は ちょっとややこしそうですね。 また自分でも色々と調べてみますね。 解決したらご報告致します。
897 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 06:04:32 ] >>889 GetFileInformationByHandleEx Vista以外では www.microsoft.com/downloads/details.aspx?familyid=1DECC547-AB00-4963-A360-E4130EC079B8&displaylang=en をインストールする必要があるけど。 Win9xでは公開された方法は存在しない
898 名前:896 mailto:sage [2007/04/15(日) 06:13:25 ] 具体的にいうとこんな感じなんですけどね。。 メモ帳のエディット部に送信 → 無事設定される サクラエディタのエディット部に送信 → タイトルバーに設定される Firefoxのアドレスバーに送信 → 無反応。。 やっぱり見た目にフォーカスがあっても 内部ではフォーカスが無い場合ってのがあるんでしょうね。
899 名前:896 mailto:sage [2007/04/15(日) 06:15:07 ] IEのアドレスバーには問題なく設定できるようです。 とりあえずどうしようもないので調べます。
900 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 06:19:13 ] あ、Fileextd.libはスタティックだからインストールが必要なのは開発者のほうだけね
901 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 06:23:19 ] >>898 Windows標準のエディットコントロールはWM_SETTEXTを独自に処理してるので エディット部に設定される それ以外のほとんどのウィンドウはWM_SETTEXTを処理しないのでデフォルト処理で タイトルバーへの設定が行われる 子ウィンドウでタイトルバーが表示されていなければ無反応に見える エディットコントロール(のように見えるもの)にテキストを設定する汎用的な方法は 存在しない
902 名前:896 mailto:sage [2007/04/15(日) 06:40:29 ] >>901 なるほど〜 確かにWM_SETTEXTで設定出来るのは どれもオーソドックスなエディットだけですね。 う〜ん、困ったなぁ。。。
903 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 06:58:58 ] そもそも WM_SETTEXT は外から使うことを考慮していない。使えるように実装されているだけ。 文字を送るだけなら他の方法がある。
904 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 07:06:10 ] でも使えるように実装するのが普通だよな 今FireFox見てみたけどおかしな作りだな
905 名前:896 mailto:sage [2007/04/15(日) 07:25:30 ] 別アプリのWebFormのコントロールに データを設定する事なんて果たして可能なのかなぁ。。
906 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 07:48:59 ] IWebBrowser2で検索すると参考になりそうなサイトは沢山ある が、理解できるかは知らんよ
907 名前:896 mailto:sage [2007/04/15(日) 07:50:37 ] >>906 情報ありがとうございます。 頑張って調べるしかないですね。
908 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 08:04:31 ] IEなんかは一見標準コントロールを使っているように見えるが あれは全て自前描画のフルスクラッチだから、普通の コントロールのように扱うのは無理だよ。
909 名前:896 mailto:sage [2007/04/15(日) 08:09:08 ] >>908 MSのアプリってそういうの多いみたいですね。。 あとAdobeのものとかも自作コンポーネントとかが沢山で。 ウェブフォームの方は、情報が色々と出てきて どうにかなりそうな気がしてきました。 助言を下さったみなさま、ありがとうございました。
910 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:22:07 ] Windows Presentation Frameworkのコントロールも全部(API的には)自前描画だな アンマネージなアプリから設定するのは結構骨が折れる
911 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:24:23 ] Windows Presentation Foundationだった .NET Frameworkと微妙に混ざった あとJavaのSwingアプリとか(AWTやSWTはプラットフォームのコントロールを使ってる)
912 名前:889 [2007/04/15(日) 10:35:31 ] >>897 ありがとう。 GetFileInformationByHandleEx の FileNameInfo で99%できた。 しかし、ドライブレターが無いのだ。 つまり、L"\\Windows\\System32\\ntdll.dll" みたいなのが返ってくる。 C: の部分はどうやったら良いかもお願いします。
913 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 11:04:30 ] >>912 VistaならGetVolumeInformationByHandleW 2000/XPだとGetFileInformationByHandle(Exじゃないほう)と FindFirstVolume/FindNextVolume/FindVolumeClose/GetVolumeInformationの ボリュームシリアル番号を付き合わせる、くらいしか思いつかない。
914 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:31:07 ] おにいさま…涙が…止まりません
915 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:06:53 ] 辛子明太子を食べろ
916 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:23:52 ] エディットボックスで英数字だけ使うのってできないんだっけ
917 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:32:53 ] エディットボックスでWM_CHAR引っ掛ければ余裕
918 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:50:32 ] クリップボード経由でペーストされたら?
919 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:52:15 ] WM_PASTE見張ってれば良いじゃん 頭使ってる?
920 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:20:42 ] WM_SETTEXTとかEM_REPLACESELとかも見張る必要あるだろ
921 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:21:09 ] 見張ればいいじゃん。 労力使ってる?
922 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:24:53 ] 他にもワナがありそうだな。 EditBoxのあるダイアログのOKボタンが押されたときにでも、 データが適切であるかを確認する方がよほど楽だろうな。
923 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:26:46 ] 頭も使う労力も無い人に金言を授けよう 駄 目 な 奴 は 何 を や っ て も 駄 目
924 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:28:52 ] 本人から言われると重みがあるな
925 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:30:53 ] あれ、英数字ってなかったっけ? 俺の気のせいか
926 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:31:52 ] 数字だけならあったけどな
927 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:32:54 ] >>925 MFCのDDXならデジットチェックあるんだよ。 だけどここはWin32APIだから。
928 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:46:22 ] DDXも入力はできちゃう
929 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:55:15 ] って EM_CHANGE / EM_UPDATE じゃいかんのけ?
930 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 23:52:12 ] >>929 いいんとちゃう?
931 名前:912=889 [2007/04/16(月) 00:58:15 ] >>913 OSはXPです。 FindFirstVolume/FindNextVolume/FindVolumeClose だと "\\?\Volume{GUIDっぽい文字列}\" みたいな文字列で、どう扱ってよいか分からず断念。 ドライブレターありきで、割り切ることにしました。 マウントでも破綻するかもしれないですが、これも割り切り。 (1) ファイルのハンドルを GetFileInformationByHandle に渡して、ファイルのボリュームシリアル番号を得て、 (2)GetLogicalDriveStrings の結果を GetVolumeInformation に渡して、各ドライブのボリュームシリアル番号を得て、 (3)上記(2)のボリュームシリアル番号のうち、(1)のボリュームシリアル番号に一致するのがファイルが居るドライブと判定。 という方法でとりあえずやりたいことはできるようになりました。 御礼を兼ねて報告。
932 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 01:24:18 ] >>931 こんなの見つけた。Win2kだとさらにやり方が違うみたい www.ultrasync.net/yofune/?%A5%DC%A5%EA%A5%E5%A1%BC%A5%E0%A4%F2%C6%C0%A4%EB もし非公開API使ってもいいならNtQueryVolumeInformationFileがたぶん使える
933 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 01:39:17 ] あーどっちにしろ"\\?\Volume{GUIDっぽい文字列}\"からドライブ名への変換は 必要か。じゃあGetLogicalDriveStringsからたどるのが一番簡単だな
934 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 12:04:45 ] どうでもいいけど、>890の方法はダメだな。 カレントディレクトリパスなんてファイルダイアログを開くだけで変わってしまう。 APIを駆使する方法以外では、素直にCreateFile時にフルパスを保存しておくしかないね。
935 名前:デフォルトの名無しさん [2007/04/16(月) 14:28:11 ] wParamとlParamについてどなたか やさしく教えてください。
936 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:44:33 ] >>935 最早その名前に何の意義も無いので、適当に使い分けましょう。
937 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:44:42 ] メッセージに追加の情報を付加するためのもので、メッセージ毎に意味が違う。 個々のメッセージ毎にどういう意味を持つかはMSDN Libraryに書いてある。
938 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:46:00 ] イベントが呼ばれたときに設定される変数で 意味はそのイベントによって異なる。
939 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:46:01 ] >>936 使い分けだったら、ポインタはlParam、ハンドルはwParamに入れられる傾向にある。 Win16で、ハンドルとwParamが16ビット、FarポインタとlParamが32ビットだった名残だが。
940 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:50:40 ] lParamのlってlongのこと? じゃあwはword?
941 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:56:05 ] l w
942 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 15:09:26 ] >>940 そうだよ。Win16では当初ウィンドウプロシージャもこういう宣言だった。 LONG FAR PASCAL WindowProc(HWND, unsigned, WORD, LONG); Win16後期になってくると、LRESULT/UINT/WPARAM/LPARAMが出てきて、 現在のWin32でも通用する形になった。 LRESULT FAR PASCAL WindowProc(HWND, UINT, WPARAM, LPARAM);
943 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 16:54:13 ] リソースの STRINGTABLE の最大文字列長は何バイトですか?
944 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 17:41:21 ] >>943 ちょっと的を得てなくて申し訳ないんだが、 リソースも所詮ファイルなので、リソース全体ではNTFSの2TB弱が限界だろうか。 この辺ウラとってなくて申し訳ない。 Win32APIだとLoadString関数を使う事になるが、これは文字数にintを使ってる。 さらに、32bitのWindows2000系でのユーザーメモリ空間は2GBなので、 VC/VC++6.0では1回で使える文字列は2GB弱が限界だと思われる。 #VB6.0のString型はUNICODEで32766文字。
945 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 17:48:28 ] >>944 >VB6.0のString型はUNICODEで32766文字。 便乗でスマソ BSTR型は、ポインタの一つ前に文字長が入っているんだっけ?
946 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 17:54:15 ] >>943 WCHAR形式で格納されていて、最大0xFFFF文字(NULL文字を含まない)
947 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 17:55:20 ] >>945 文字長ではなく終端を含まないバイト数
948 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:16:07 ] RASCALってなんですか?
949 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:17:10 ] アライグマ
950 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:49:44 ] Helphiじゃないの
951 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:51:13 ] RASICかもしれん
952 名前:944 mailto:sage [2007/04/16(月) 20:54:53 ] >>943 さっきは適当な事を言ってすみません。 ttp://blogs.msdn.com/michkap/archive/2007/01/15/1466291.aspx この、(2007年1月頃の)ページでは、「ヘルプで明文化されている最大値の最低限は4097バイトである」 (つまり、デフォルトで4097バイトまでは問題ない) 「しかも、他の地域版のMSDNヘルプでは限界すら書いてない。本当の限界を調べてみないか?」とあるが、 レスは「そんな意味の無い事を・・・」とにべもない。 フォーマット的には>>946 でしょうが、このアーティクルが本当なら サードパーティツールを考慮して4097バイト(2047文字)に抑えた方が良さそうです。 #VB6のString型は、最大32767文字なのですが、最大まで使ってしまうと #ヌルターミネータ(文字列最後の0)が入らないまま保存されます。 #VC/VC++6.0では、最も重要なCComBSTRですら文字列長プレフィックスを考えてません。 #だから、安全にプログラムするなら32766文字が良いです。
953 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:25:15 ] Acronis True Imageのtibのマウントみたいな仮想的な ドライブを作りたいのですが、DDKが必要なんでしょうか?
954 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:27:40 ] たたき台になるサンプルがあれば良いのですが…
955 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:51:07 ] ここで質問する程度の人はそんなものに手を出さないでくださいお願いします
956 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 10:23:19 ] 仮想フォルダレベルで良いならcabviewのソースがサンプルにある DDKやIFSならスレ違い
957 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:52:02 ] Win32 APIオフィシャルリファレンス改訂3版 グラフィック/GUI編 ttp://www.amazon.co.jp/Win32-API%E3%82%AA%E3%83%95%E3%82%A3%E3%82%B7%E3%83%A3%E3%83%AB%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E6%94%B9%E8%A8%823%E7%89%88-%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF-Ascii-books/dp/4756137482 この本の評価どなたかよろ。
958 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:55:15 ] COMスレかDDKスレでどうぞ
959 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 18:24:32 ] >>948 AppleのMacintoshが出た当時に結構出回ってた開発言語。 ってこれはWin32APIは関係ないね
960 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 18:48:25 ] Win2k以降でネットワークアダプタの現在のリンク速度とDuplexを取得する汎用的な方法ってあるんでしょうか?
961 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:11:38 ] WMIで取れたっけ?
962 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:46:16 ] CIM_NetworkAdapter, Win32_NetworkAdapterあたり? 全二重とかはソック叩くんだっけ?
963 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 20:04:25 ] DDK
964 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:40:23 ] >>940 l (lol w (w
965 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:52:40 ] wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
966 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:54:27 ] WORD wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww; do{ wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww = GetAsyncKeyState( VK_SPACE ); }while( !wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww );
967 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:57:06 ] >>960 GetIfTable
968 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 00:15:59 ] /: : : : : : : : : : : : : : : : : `丶、 / : : : : : : : : ‐- : :、: : : : :ヽ: : : : \ {  ̄: : : : : : : : : : : : : : :ヽ、: : : ヘ: : : : : ヽ ,.ヘ: : : : : : : `丶 : : : : : : : : `く/ ヘ: : : : : :', /: : ヽ: : \: : : : : \: : -―: : : :`く: : '.,: : : : :l ,': {: : : \: : :ヽ、: : : : :\ー‐、: : : :ヽ:\: ヽ : : :| l: :l : : : l \: : : \‐=V弋芝圷\: \l\l : : :| |: :l: :: : {xく´_\`ヽ:ヽ Vヘソ |: : |: : }: :./i l: :l:ヽ : ヽ仗圦 \ ゞ''´ ノ: /l: :ハ/ 、ノN ヽヘ: :\ ヽVヘ:} // j/-j/ 乂 ノ: :j 丶\: ヽ: ゞ'' 、 ハ! : : :ヽj、_,ヘヘi彡' `ヘ> - ' / V廴V-へ∠`´__ ヽ、_ / ヽ/ ̄/ '⌒ヽ `丶 \ミ、ー:- -イ / / / ヽ \ ヽ:八{\少} / / / ∨ \ '′_>' /’ __,/ / / | \ ,イ /、 ´/ /´ | \ /l│ / __/ / / | / /│| /V / / / | _/ ││{ / /V / r'´ ノ¨ ̄´ | ヘ ∨ ∨ ̄ ̄/ } /
969 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 00:20:20 ] ┌─‐「][] _,ィ ´ ̄`ヽ、  ̄ ̄} | _ /:.ゝ-─‐<> r─' ノ 「Y {´ ̄`ン':.:.:.:.:.:.:.:.:.:.:.:.:}{  ̄ Lハj_, ィ'´⌒⌒ヽ、:.:.:.ィ、ハ [[] 「} _/∠二ニニニ¬、_ハ:.:.:.ヽヽ', rー'_ノ //´ 了~~~⌒~`ヽ.弋゙Tl:.:.:.:_j」 l { { { j} }士ぅ'´:.:_〉| い、__ >、___ __, ィ人 ヽく_:./:.〉ゝ ィ ⌒ >'/ い 〉~~〉T~~T< ヽハ 〈_:.く ( _ イ `7 ハ⊥__j_i___〉 ,}イ 〈_/ ( _) ハ__厶>ー‐一_7 /´ ゝ ___,ノ /ーY):::ノ ` ̄´厶.、/_ {::::::::/ /⌒ー'::::::}  ̄´ {:::::::::;: ィ
970 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:48:13 ] ちょっと早いけど、埋めモードに入ってるっぽいんで新スレ立てておくよ
971 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:55:01 ] 51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/ 50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/ 49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/ 48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/ 47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/ 46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/ 45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/ 44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/ 43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/ 42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/ 41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/ 40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/ 39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/ 38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/ 37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/ 36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/ 35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/ 34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/ 33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/ 32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/ 31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
972 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:55:27 ] 誤爆したw 新スレはこちら Win32API質問箱 Build52 pc11.2ch.net/test/read.cgi/tech/1176828891/
973 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 02:37:36 ] 970前から埋めは気が早すぎないかw
974 名前:デフォルトの名無しさん [2007/04/18(水) 02:53:30 ] 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜
975 名前:デフォルトの名無しさん [2007/04/18(水) 02:54:00 ] 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜 〜(^o^)〜
976 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 04:00:25 ] ume
977 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 08:14:35 ] 埋め埋め ところで、国内の治安も悪くなったねー
978 名前:960 mailto:sage [2007/04/18(水) 09:08:30 ] >961 WMIだと未実装らしくてNULLが入ってますorz
979 名前:960 [2007/04/18(水) 09:17:31 ] >967 MIB_IFROW.dwSpeedで速度は取れるようですが、Duplexは無いようです。 このあたりはメーカー独自のレジストリ構造だし、泥臭くいくしかないのか・・・ 最終的には設定までやりたいんですが、 手持ちのNIC調べただけでもメーカーごとに全部違うようで SpeedDuplex/ConnectionType/ConnectionType_A
980 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 11:56:37 ] ume
981 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 12:33:32 ] 膿め
982 名前:デフォルトの名無しさん [2007/04/18(水) 13:51:52 ] 俺様は産む機械ィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィ!!!11!!
983 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:39:08 ] 梅
984 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:39:06 ] だからドライバから取れって
985 名前:デフォルトの名無しさん [2007/04/18(水) 16:57:05 ] マイナスですかプラスですか?
986 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 17:54:21 ] 生め
987 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:03:08 ] マイナスでもプラスでもありません
988 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:07:55 ] 運転手だよね
989 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:42:35 ] IEやエクスプローラと同一の履歴の取得ってどうやるのでしょうか?
990 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:04:17 ] ume
991 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:09:13 ] ここまでテンプレ
992 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:16:37 ] // ここから怒涛のテンプレ
993 名前: ◆iwOQ5dadXo mailto:sage [2007/04/18(水) 21:26:29 ] 993なら長門は俺の嫁
994 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:29:15 ] 994だったら1000まで行かずにdat落ち
995 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:46:29 ] >>989 shell:history のことか?
996 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:57:01 ] >>995 いえ、アドレスバーの履歴です。 デスクトップやブックマークも補完されると思うのですが、あれと同じものを作りたいのです
997 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:08:03 ] ゆのっちって何でこんなにかわいいんだろ
998 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:10:21 ] >>989 IUrlHistoryStg2とIEnumSTATURLで検索すれば幸せになれると思う。 つーか、これURLどころか最近使ったファイルも全部ひっかかるんだけど・・
999 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:10:59 ] >>996 まったく同じモノでいいのか? だったら、[ SHAutoComplete ]を調べてみろ ちなみにShellのバージョン5.0以上な
1000 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:11:49 ] 30秒程度の差で先を越された俺が埋め
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。