[表示 : 全て 最新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などの質問はそれぞれの言語や開発環境スレで

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
今までに何千人のプログラマが同じことを思っただろうな…
すべてが今更の話だが…






[ 続きを読む ] / [ 携帯版 ]

前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