[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/21 21:33 / Filesize : 230 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build51



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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef