1 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:07:21 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build84 pc12.2ch.net/test/read.cgi/tech/1259478896/
809 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 18:08:19 ] うちのブラウザです
810 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 19:33:04 ] うちのブラウジャーですごめんなさい
811 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 20:52:20 ] うちの妹のです
812 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 00:35:58 ] そのブラウザい
813 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:13:12 ] ぶらぶら
814 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 12:23:14 ] Rich じゃない Edit control で、文字列の特定個所をハイライト表示させる ことはできるのでしょうか??
815 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 13:42:53 ] ●
816 名前:814 mailto:sage [2010/01/28(木) 14:12:16 ] EM_POSFROMCHAR で取得(すればよいのか?)した領域の ・バックカラーを変更するのは、どうすればよいでしょうか? (・д・)
817 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:23:28 ] 当該領域を選択すればよいと思われますが
818 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:36:29 ] ということは、領域を選択する前に (1)SetBkColor(黄色) (2)領域を選択 (3)SetBkColor(オリジナル色) とすれば良いのですかね?
819 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:43:26 ] 黄色って何? どこから出てきた?
820 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:46:26 ] つまり、選択した領域のバックグランドカラーを任意に変えたいのです。
821 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:46:32 ] ハイライト表示 が いつのまにか指定色背景のブロック塗り にカワットル
822 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:59:19 ] 素直に Rich Edit おすすめ
823 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 03:51:35 ] WM_PAINTでBitBltしてビットマップ表示してるとき そのビットマップの上でボタンとか置いてると 再描画したときにボタン消えるのはどうすればいいの? 多分上書きされて見えなくなってるんだと思うんだけど
824 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 03:57:01 ] クリッピング
825 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 08:28:47 ] ボタンを再描画させる。
826 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 10:52:30 ] WS_CLIPCHILDREN
827 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:08:34 ] 32 bit プロセス内で DuplicateHandle(..., process_handle_of_64bit_process, &target_handle, ...) して 64 bit プロセスに target_handle をプロセス間通信で渡したんだけど、そのまま使って問題無い? 16bit → 32bit: WOWHandle32 で変換しなさい。 32bit → 64bit: WOWHandle64 …らしきものは見つけられなかった。 実は HANDLE は下位 32 bit に収まっていて、上位 bit を 0 で埋めればおkとか?
828 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:06:04 ] 32bitのハンドルを64bitのプロセスでDuplicateHandleすれば、 64bitプロセスで使えるハンドルが得られる、ような気がする。 あまり具体的に書かれていないので、実際に試さないと分からないが。
829 名前:827 mailto:sage [2010/01/29(金) 21:22:49 ] > 32bitのハンドルを64bitのプロセスでDuplicateHandleすれば、 > 64bitプロセスで使えるハンドルが得られる、ような気がする。 つまりこうですか? --code_for_x64.cpp-- DWORD handle_32; // sizeof(DWORD) == 4 HANDLE handle_64; // sizeof(HANDLE) == 8 ReadFile(pipe等, &handle_32, sizeof(DWORD), ...); DuplicateHandle(static_cast<HANDLE>(handle_32), process_handle_of_32bit_process, &handle_64, GetCurrentProcess(), ...); > あまり具体的に書かれていないので、実際に試さないと分からないが。 実際のところ、HANDLE は 32bit で表現できない値にはならなそうだけど…。 やはり具体的な記述が欲しいですね。 MSDN に x86 x64 共存 FAQ とかないかな。
830 名前:デフォルトの名無しさん [2010/01/29(金) 21:52:09 ] ファイルの更新時間を変更したくてSetFileTime関数を使おうと考えています。 ただ、この関数を使うためにはCreateFileでGENERIC_WRITEを使ってHANDLEを 取得する必要があります。 問題は、ReadOnlyのファイルの更新時間を変える場合に、GENERIC_WRITEを使ってハンドルが取得できない点です。 ReadOnlyなファイルの更新時間はcygwinのtouchで変更できるのでなにか方法はあると思うのですがWin32APIを使う方法が分かりません。 どーしたらいいの?
831 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:00:21 ] attribe -r
832 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:07:18 ] readonlyを一旦外せばいいのでは?
833 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:19:54 ] >>829 msdn.microsoft.com/en-us/library/ms724251 (VS.85).aspx > DuplicateHandle can be used to duplicate a handle between > a 32-bit process and a 64-bit process. The resulting handle > is appropriately sized to work in the target process.
834 名前:827 mailto:sage [2010/01/29(金) 23:31:42 ] >>833 おお、ありがとう! 普通に書いてありましたね。
835 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 03:44:16 ] >>823 BitBltの前にボタンの位置とサイズでExcludeClipRectすると少しだけよくなることなら知ってる
836 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 06:56:21 ] >>823 ビットマップの上にボタンを置かなければよい。 仕様が間違っている。
837 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 07:02:22 ] >>836 お前のアホさがとても残念だ
838 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 09:32:30 ] WS_CLIPCHILDRENがあるじゃない
839 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:58:56 ] GetPrivateProfileString でバッファサイズが足りないと戻り値がnSize-1になるみたいなんですが 切り捨てられたか、文字数がピッタリ一致してただけなのかを区別することはできますか?
840 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:25:45 ] バッファサイズを1文字余分に取る
841 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:04:29 ] HWND h; SHELLEXECUTEINFO sei = { 0 }; sei.cbSize = 60; sei.nShow = SW_SHOW; sei.fMask = SEE_MASK_NOCLOSEPROCESS; sei.lpFile = "notepad.exe"; ShellExecuteEx(&sei); Sleep(3000); h = FindWindowEx(sei.hProcess, NULL, TEXT("Edit"), NULL); SendMessage(h, WM_SETTEXT, 0, (LPARAM)("test")); ShellExecuteExでメモ帳を起動させて3秒後に"test"を エディットに表示させたいんだけど FindWindowExがNULLを返す模様。どうしたらいいの?
842 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:29:07 ] >>840 あなたは天才ですね! ありがとうございました!
843 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 14:18:08 ] >>841 FindWindowExにメモ帳の「ウィンドウ」ハンドルを渡す。 プロセスハンドル渡しても無意味でんがな。
844 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:14:29 ] FindWindowExってウィンドウ見つけるんじゃないの? 初めからあるものをどうやって見つけるんだ
845 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:16:37 ] >>844 お前バカじゃないの?MSDN読んでるか? HWND FindWindowEx( HWND hwndParent, // 親ウィンドウのハンドル HWND hwndChildAfter, // 子ウィンドウのハンドル LPCTSTR lpszClass, // クラス名 LPCTSTR lpszWindow // ウィンドウ名 ); パラメータ hwndParent 検索する子ウィンドウの親ウィンドウのハンドルを指定します。 NULL を指定すると、デスクトップウィンドウが親ウインドウとして使われ、デスクトップの子ウィンドウが探されます。
846 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:20:09 ] プロセスハンドルが分かるのだから プロセスを作成する ↓ ウィンドウを列挙する ↓ ウィンドウを作成したプロセスIDを取得する ↓ プロセスハンドルとプロセスIDの紐付け ↓ ( ^ν^ )
847 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:25:52 ] 顔文字キモイ。
848 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:02:46 ] νは口なのか鼻なのかはっきりしろ
849 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:14:52 ] EnumChildWindows の戻り値の説明って間違ってないですか?
850 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 21:47:30 ] Win7だと、EnumWindowsと同じような返し方をして来るな。 OSのバージョンによっては妙な値が返してくるやつもあるのか?
851 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:20:52 ] Vistaでした
852 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:42:02 ] メインウィンドウのダイアログから CreateDialogParam() で、検索 popup ダイアログを 開いたのですが、キー・バインドなどが働きません。MSDNを見ると、 ”To support keyboard navigation and other dialog box functionality, the message loop for THE DIALOG BOX MUST CALL THE IsDialogMessage() FUNCTION.” と、あります。キー・バインドが利かないのも、これが原因と思われますが、 メインウィンドウのメッセージ・ループ以外で IsDialogMessage() を実装しろ という意味なのでしょうか??? ここがよく分かりません。 IsDialogMessage() をどこで、どうやって実装すればよいのか教えてください。
853 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:56:02 ] FindWindowEx()で、検索対象のウィンドウに、複数のEDITが有り、 検索クラス名がEDITだった場合、一番最初のEDITのハンドルしか取れないけど、 2つめ3つめのEDITのハンドルを取得するにはどうしたらいいのでしょう?
854 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:57:46 ] hwndChildAfter 子ウィンドウのハンドルを指定します。Z オーダーでこのウィンドウの次にくる子ウィンドウから検索が開始されます。
855 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 00:05:09 ] LineTo君に続いて FindWindowEx君も死ねよ 二度と来るな
856 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 00:11:18 ] 落ちつけよ。
857 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 00:13:41 ] おっかないインターネッツですね
858 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 05:13:07 ] >>852 そこは、書いてあるとおりダイアログを処理するメッセージループで。 普通メッセージループなんて1つしかないだろうから、そこでいい。