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

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知らないけど。






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

前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