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/
641 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:49:03 ] フラグでも何でも使ってリターンさせりゃいいだろ
642 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:51:07 ] ここはAPIスレなのでAPI使って回答しなさい
643 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:51:36 ] あ”?
644 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:54:56 ] あぴ♥
645 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:05:34 ] >>637 じゃあWM_CLOSEは?
646 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:55:08 ] WM_CREATEやWM_DESTROYはOSが送ってくるメッセージであって プログラマが送るメッセージではない
647 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 01:02:34 ] 頭が固いと640みたいな発想になるのかな
648 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 04:27:25 ] JScriptとJavaScript 昔はWSH専用コードがJScript HTMLに埋め込まれているのがJavaScriptで ほぼ通った。 しかし.NETが出て10年以上経つた現在 JScriptとはほぼJScript.NETのことを指す でいいんじゃね?(つまりWSH専用コード もJavaScriptと統一。同じ文法なんで)
649 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 04:58:58 ] コテつけろや キチガイ
650 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:42:55 ] >>647 頭が固いのではなくプリエンプティブマルチタスクOSに関する基礎知識がないものと思われる
651 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:49:12 ] >TerminateThreadを不用意に使うとメモリリークが起こったりする 原因になる 「夕焼けが出ると明日は快晴」 と同じ信頼レベルで概ね正しいが、100%正しいわけではない。 脳軟化症気味だから、ちょっとコ難しい横文字が出ると 100%正しいことなんだと、右辺と左辺を等式で 結んでしまうんじゃ?
652 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 08:04:50 ] このツンデレめ。下3行が「べ、べつにあなたの〜」に対応するわけだな。
653 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:30:41 ] HTMLに埋め込まれてるのもIEの場合JScript
654 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:34:37 ] msdn.microsoft.com/en-us/library/d1et7k7c (VS.85).aspx を見れば、MSのECMAScript実装が「JScript」である、ってことぐらいわかると思うんだけどな・・・。 当然、ブラウザだからどう、なんてのは関係ない。
655 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:51:14 ] 関係はあるだろ MSの実装がJScriptならMSのブラウザならJScriptということになる
656 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:00:07 ] なんでIEでは<script lang='JavaScript'>なんてHTML 読むと一見正常動作するように見えて実は... というデマが流れたりしかねないんでさ そういう些細な話はもうやめたら?
657 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:02:53 ] 文脈の読めない馬鹿乙。
658 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:10:34 ] ▄▄ ▄▄▄ █ ▄█ ▄██▄▄ ▄▄▄▄▄ ▀▀▀▀▀▀█▄▄▄▄▄ █ ▄█▄▄▄▄ ▀ █ ▀▀▀▀▀▀ █ █ █▄ █ ▀▀▀▀ ▀▀▀█▀▀▀ █ █▄ █ ▄█ █▀▀█ █ █▄ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀▀ ▄▄▄▄▄▄ ▄▄▄ ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀ █ █▀ █ ▀▀█▀ ▀▄ █ █▀▀▀ █ █▄ ▀ █▄▄▄ █ ▄▄▄ ▀▀ ▀ ▀▀▀
659 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:24:09 ] JScriptとJScript.NETは違うんだから、後者を指したいなら JScript.NETと明示的に言うか、そうでなければ、誤解の起こらない それなりの文脈のもとでJScriptといわなければだめだろう
660 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:25:33 ] 一緒だと考えてるのはMVPくらいだろ?
661 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:28:05 ] >>640 終了用のEventを用意したり PostThreadMessageで終了用メッセージを投げたり
662 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:40:56 ] 何?JavaScriptとJScript.NETが違うって? 常識じゃん。それって
663 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:43:10 ] JavaScriptとJScriptも違うのは常識だけどな
664 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:10:53 ] SpiderMonkeyもV8もJavaScriptとは違うと言えるな。
665 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:12:58 ] SpiderMonkeyはJavaScriptだけどな。
666 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:24:06 ] JavaScriptは言語仕様であり、かつその実装のこと ECMAScriptとはJavaScriptやJScript等の言語を共通化するために作られた言語仕様 SpiderMonkeyはJavaScriptの実装のコード名 JScriptはECMAScript互換の言語仕様及び実装のこと まとめると SpiderMonkeyはJavaScript JScriptはJavaScriptではない ECMAScriptはJScriptではないが、JScriptはECMAScriptの一種 ECMAScriptはJavaScriptではないが、JavaScriptはECMAScriptの一種
667 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:29:41 ] ▄▄ ▄▄▄ █ ▄█ ▄██▄▄ ▄▄▄▄▄ ▀▀▀▀▀▀█▄▄▄▄▄ █ ▄█▄▄▄▄ ▀ █ ▀▀▀▀▀▀ █ █ █▄ █ ▀▀▀▀ ▀▀▀█▀▀▀ █ █▄ █ ▄█ █▀▀█ █ █▄ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀▀ ▄▄▄▄▄▄ ▄▄▄ ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀ █ █▀ █ ▀▀█▀ ▀▄ █ █▀▀▀ █ █▄ ▀ █▄▄▄ █ ▄▄▄ ▀▀ ▀ ▀▀▀
668 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:30:19 ] APIと何の関係があるまとめなんだ?>>MVP
669 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:54:24 ] バージョンが違うだけ
670 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:03:36 ] OpenProcessで開いたプロセスの処理速度を2倍、3倍などの任意の速度へ変えたいのですが 何かそれっぽいAPIがありましたら教えてください。
671 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:14:26 ] 処理速度?優先度の間違いだよな…? 優先度ならSetPriorityClassとか CreateToolhelp32Snapshotでスレッド列挙してからSetThreadPriorityとか… CreateToolhelp32Snapshotは今は別な方法あったような気がする あったはず 覚えてないけど
672 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:27:03 ] いや優先度じゃなくて、よく処理速度です。 フリーのソフトを例に出すと「Ragud Mezegis」でやっているような処理です
673 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:41:55 ] dependency walkerでRagud MezegisとDLLを見た感じでは タイマーAPIのフックしてるだけみたいだ SetWindowsHookEx辺りで対象プロセスに侵入して ImageDirectoryEntryToData辺りでインポートアドレステーブルを探して VirtualProtectで書き換え可能にして 参照アドレス書き換えればいい
674 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:43:41 ] なんか難しそうですがありがとうございました
675 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/18(月) 03:50:54 ] ファイル→プロパティ→セキュリティで表示される、 user のアクセス許可を許可、あるいは拒否 をプログラムから変更するにはどうすればよいのでしょうか? 環境は Visual C++ 2005, Windows XP です
676 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:03:15 ] aclSetEntriesInAcl 既存のACL(アクセス制御リスト)に新しいアクセス制御情報、 または新しい監査制御情報を結合することで新しいACLを作成
677 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:05:59 ] >>675 つ ttp://www.geocities.jp/rasuxo/win32.html
678 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:18:31 ] 昼間は糞みたいなレスしかしないくせに 夜間は頑張るじゃないか君達
679 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:34:37 ] 朝ですが
680 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/18(月) 05:13:39 ] >>676-677 ありがとう! 挑戦してみます
681 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:11:45 ] >>641 >>661 そのスレッドでメッセージループみたいな ブロッキング関数をwhileで回してた場合はどうするの?
682 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:29:03 ] ブロックしない方法にしたらいいじゃないか
683 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:31:41 ] 何がブロックしてるかによって解決方法は違うんじゃね。 GetMessageだったらPostすればいいし、 イベントオブジェクトなら持ってる奴が所有権放せばいい。 ブロッキング関数なら非ブロッキング関数使うなり。 万能解を求めるから強引になるんじゃないの? 頭やわらかく行こうぜ。
684 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 02:07:31 ] standby listに無理やり読み込ませるAPIみたいなものってないの?
685 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 02:44:41 ] 無いね。
686 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:21:42 ] エディットやリストボックスを画面上から消すにはどうすればいいんだ? DestroyWindowてのを試したが何も起きなかった
687 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:55:04 ] >>686 エディットやリストボックスのウィンドウハンドルが合っているか確認する。 エディットやリストボックスがDestroyWindowを呼び出すスレッドに属しているか確認する。
688 名前:デフォルトの名無しさん [2010/01/19(火) 21:30:27 ] >エディットやリストボックスがDestroyWindowを呼び出すスレッドに属しているか確認する。 どういうこと?コントロールを生成したスレッドじゃないと消せないってことなの?
689 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:54:05 ] 別のスレッドで作成したウィンドウを DestroyWindow 関数で破棄することはできません。
690 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 09:09:42 ] ウィンドウのサイズ変更で、 縮小できるサイズを制限する方法教えてください
691 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 09:45:30 ] GETMINMAXINFO
692 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 20:01:14 ] CreateWindow関数をでテキストボックスを作成し SetWindowTextでボックスに文字を入れたいのですが ボックス内をクリックしないとSetWindowTextで入れた文字が画面に描画されません InvalidateRect関数で再描画をしてみたのですがやはり反映されないようです・・・ どのようにすれば、テキストボックス内に文字をすぐ描画することができますか?
693 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 21:14:49 ] >>692 SetWindowTextだけで反映するよ static HWND hEdit;//or グローバルでHWND hEdit; ・・・ hEdit = CreateWindow... ・・・ SetWindowText(hEdit,"....."); 確認してみて。
694 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 21:38:30 ] >>693 ちょっとやってみます。 ありがとうございます。
695 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:49:21 ] キーボードで左右上下に何かを移動させるようなゲームを作りたいんだけど キー入力がある度に背景のマップも再描画しないとならないの?
696 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:50:01 ] 無効じゃない領域は再描画しなくていいよ
697 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:05:35 ] スクロールするなら移動して背景について新たに表示が必要になった部分だけ描画する
698 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:27:13 ] IMEパッドみたいにマウスで文字を書くプログラムを作りたいんだけど MouseMoveと何を使えばいいですか? マウスで直線を描くプログラムならできるのですが・・・
699 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:31:45 ] >>698 直線で曲線を近似すればいいと思うよ。
700 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:54:23 ] >>699 マウスポインタの始点と終点をLineTo関数で繋ぐことしかできないんで・・・ どうすれば曲線の近似をかけますか?
701 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:04:42 ] >>700 俺とて素人だから大きなことは言えないが たとえば0.1秒ごとに点を取ってつなぐとか。
702 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:06:54 ] 試しにさぁ MouseMoveが来るたびにx,yにSetPixelしてごらんよ 点が集まれば線になることは分かるだろ 点をでかくするのもいいだろう
703 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:11:29 ] 本に書いてあった方法だが、>>702 のようにすると飛び飛びの点々になるだけだから、 MouseMoveでLineToを呼べばちゃんと繋がるとのこと
704 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:12:00 ] GDI+のGraphics::DrawCurveならスプラインが描画できるな。
705 名前:698 mailto:sage [2010/01/22(金) 00:45:09 ] timer使ったりしてるんですけどなかなかうまくいきません・・・ けど、いろいろ試そうと思います。 みなさん、ありがとうございます。
706 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 01:43:50 ] case WM_TIMER pt.x=LOWORD(lParam); pt.y=HIWORD(lParam); ってできないんだっけ?
707 名前:698 mailto:sage [2010/01/22(金) 02:42:09 ] あ、linetoを2回使ったらできました! 皆さんのおかげです。 ありがとうございました。
708 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 03:19:24 ] マウスで曲線描く場合 一般的には始点制御点終点の3点からベジエ曲線を描くと比較的簡単 ja.wikipedia.org/wiki/%E3%83%99%E3%82%B8%E3%82%A7%E6%9B%B2%E7%B7%9A
709 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 03:45:56 ] >>706 LPARAMは常にマウス座標が入ってんのか 面白いw
710 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:04:37 ] GetMessagePosとかなんとか
711 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 21:52:11 ] TRUEって打とうと思ったのにTERUってなっててワロタんですがどうしたらいいですか?
712 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 21:58:34 ] #define TERU TRUE
713 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:02:57 ] 座標xが0〜10yが0〜10 の範囲に線が引かれているかどうか確認するプログラムを作りたいのですが どうすればいいか思いつきません、誰か知恵を貸してください
714 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:17:54 ] お前センス無いからもう諦めた方がいい
715 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:37:44 ] そこをなんとか、頼みます
716 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:06:32 ] >>715 一度その線を描き GetPixelの類で(0,0)〜(10,10)までの座標の点色を1個1個確かめるという バカでもわかる方法があるけど まともなレスを求めるなら 線にも色々あるのでどんな線なのか 0〜10までの刻み幅はどの程度なのか 端数の処理方法はどうなってるのか このあたりは最低限欲しいところ。
717 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:25:02 ] すみません 線はLineTo関数で書く普通の線です。 例えば、100*100ピクセルの正方形内にどんな形でもいいので線が引かれていたら1を出力 線が引かれていなかったら0を出力するみたにしたいです。 説明が下手ですみません。
718 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:37:12 ] >>717 線数を数える変数でも作って、LineToで線を描くときにカウントするのは駄目なの? 正方形の範囲外にも線が引かれる可能性があるなら、線を描く時にマウスの座標で範囲チェックも実施するとか。
719 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:51:04 ] >>717 線分&矩形のあたり判定なので レーザーアリシューティングゲームのソースでも見なさい 速さや精度が必要ないなら いったん描画してGetPixelで調べるのがいちばん簡単
720 名前:717 mailto:sage [2010/01/23(土) 04:49:14 ] レスありがとうございます GetPixcelでやって見ようと思うんですが RGBの値をうまく取得できません。すべて255,255,255になってしまいます。 下のようにやったのですが、何がいけないのでしょうか? COLORREF color; hdc=BeginPaint(hWnd,&ps); color=RGB(0,0,255); SetPixel(hdc,10,10,color); int r=GetRValue(GetPixel(hdc,10,0)); int g=GetGValue(GetPixel(hdc,10,0)); int b=GetBValue(GetPixel(hdc,10,0)); wsprintf(buff,TEXT("%d %d %d"),r,g,b); MessageBox(NULL,LPWSTR(buff),NULL,MB_OK);
721 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 05:14:33 ] >>720 10,10 に 0,0,255をセットしつつも 10,0の座標を見てる
722 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 07:02:03 ] GetPixelが遅いのは.NET通したときだけで、API叩く分には速いの?
723 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 07:13:37 ] 遅い。 一端DIBに転送してからシステムメモリ上で確認した方がいい。
724 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:01:16 ] 出る質問全てが中学生クラスの質問レベルだったり単純な数字のミスだったりで萎える 小学生か?
725 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:14:37 ] >>7211 すみません、ありがとうございます >>724 すみません。。
726 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:15:29 ] 最近の小学生は中学生クラスの質問をするのか。 ゆとり教育を止めて正解だったようだな。
727 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:18:01 ] すまないと思うなら1日は自分で悩めよ低脳
728 名前:デフォルトの名無しさん [2010/01/23(土) 10:38:26 ] SHAutoCompleteを使わずにコンボボックスで入力補完を行う方法を教えてください。
729 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:52:11 ] >>728 CLSID_AutoCompleteで作ったAutoCompleteオブジェクトをどうこうする。 詳細は以下を参照。 User Interface - Windows Shell - Shell Developer's Guide - Application Support - Using Autocomplete
730 名前:デフォルトの名無しさん [2010/01/23(土) 11:08:47 ] >>729 蟻がd
731 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 12:31:17 ] テーマとかビジュアルスタイルを設定した、ボタン等のコントロールのイメージは、どのようにすれば取得できますか。
732 名前:デフォルトの名無しさん [2010/01/23(土) 12:32:35 ] レジストリの中で、Explorerのコンテキストメニューを作り出すための ファイルの「新規作成」メニュー用のキーとその扱い方について教えて ください、これの言語対応について。 WindowsXpまでは、この「新規作成」されるファイルのファイル名は日本語 バージョンのOSでは確かに日本語の名称になっていました。 たとえば、'.rtf' の場合、rtffile の「新規リッチテキストドキュメント」 でした。 ところが、Vistaですとこれが「Rich Text Document」といった英語名になっていて、 それでもExplorerではメニューは日本語の名称で現れ、かつ新規作成もされていました。 これはWin32APIで日本語に変換できるものか、それともどこかに言語別の対応データが レジストリにあるのでしょうか?
733 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:50:48 ] >>732 実データは実行ファイルやDLLの文字列リソースに入っていることが多いな。 レジストリにはそのリソースへの参照文字列が入っている。 FriendlyTypeNameとか、ShellNewのItemNameとか。 拡張子に関連付けられた名前なら、AssocQueryStringで取れた気がする。 これ以上は、世界のどこかにいる関連付けマイスターにでも訊いてくれ。 歴史的経緯もあってか複雑怪奇過ぎて、俺も詳しくは知らん。
734 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:19:36 ] >>732 成功した暁には、是非その操作を一つの関数にまとめ、貴方の謹作Win32APIとしてフリーに公開して下さると一同感激します。
735 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:23:35 ] 名前は GetNewDocumentDefaultNameWhenNewDocumentOfRightClickContextMenuOfExplorer辺りでしょうか?
736 名前:732 [2010/01/23(土) 14:47:39 ] >>733 >FriendlyTypeName, ShellNewのItemName, AssocQueryString など なるほど!そういえばVistaにはこれらのキーがありますね、これらを 取得して調べてみます。ありがとうございました!!
737 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:50:39 ] どこを見てるのかわからないけど、「@filename,resource」の形式なら、 SHLoadIndirectString() とかで取れるよね。
738 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:57:41 ] >>734-735 過去ログ見れとか検索しろとかいうよりか 2ch仕様のWin32APIとしてまとめてDLLをどっかの サイトにソースごと置いておいてくれると有り難いよ な。確かに。
739 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:00:56 ] GetPixelより早いの無いの?
740 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:10:10 ] LONG WINAPI GetPixel2ch( HBITMAP hmembitmap,int x,int y) C++用にはインポートされておらずマクロで定義されているので 早い。
741 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:43:37 ] >>739 GetDIBits
742 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:15:26 ] lineToの幅は何ピクセルか分かりますか?
743 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:17:00 ] 殺すぞ
744 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:19:38 ] >>742 デバイスコンテキストのペンを取得してGetObjectしてペンのスタイルと幅を見る。 ヒントは出したから後は自分で考えろ。
745 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:25:02 ] ヒントっていうかまんまだな
746 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 02:42:52 ] おかげさまでキラーアプリが出来上がりました。 明日、特許申請に行こうと思います
747 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:52:45 ] ノートPCに、USBキーボード指して使ってるんですが USBキーボードのキーを押しっぱなしにしていても ノートPCのキーボードが押されてないと判断するのか WM_KEYDOWNの直後に同じキーのWM_KEYUPが発生してしまうのですが。 アプリで標準の入力とみなすキーボードの選択って どうやるのか教えて頂ける方いましたら宜しくお願いします。
748 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:55:12 ] WM_KEYDOWN WM_KEYUP WM_KEYUP WM_KEYUP WM_KEYUP っていう意味ならオートリピートしてるだけじゃないの?
749 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:15:02 ] ノートPCに直接ついてるキーボードでAキー押しっぱなしにしても KEYUPは来ないんですが、USBキーボードでAキー押しっぱなしにすると 押しっぱなしにしてるのにKEYUPが来てしまうんです。 ↓のような感じです。 if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){ if(!GetMessage(&msg,NULL,0,0)){ break; } if(msg.message == WM_KEYUP) { break; ←USBキーボードだとキー押下だけで、引っかかる。 }
750 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:20:35 ] >>748 すいません見落としました。 調べてみます。有難うございました。
751 名前:747 mailto:sage [2010/01/24(日) 13:32:40 ] たびたびすみません。 PCのキーボード長押しの後、離すと WM_KEYDOWN このとき"lParam30ビット直前のキー状態" は0 WM_KEYDOWN このとき"lParam30ビット直前のキー状態" は1 WM_KEYDOWN このとき"lParam30ビット直前のキー状態" は1 ... WM_KEYUP となり、自分が想像してるオートリピートの処理となるのですが USBキーボードだと長押しだけで WM_KEYDOWN このとき"lParam30ビット直前のキー状態" は0 WM_KEYUP WM_KEYDOWN このとき"lParam30ビット直前のキー状態" は0 WM_KEYUP WM_KEYDOWN このとき"lParam30ビット直前のキー状態" は0 WM_KEYUP ...繰り返す となるようなのですが、 直前のキー状態が0になるので OSのキーリピートでなく、自動連打?のようなものが働いているのですが これはキーボードについてるオートリピート機能と OSのキーリピートは異なるのでしょうか。 これだけをアプリから無効化する手段は何か無いでしょうか。
752 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 13:47:05 ] 自動連打って何よ。 ゲームの連射機能みたいなもん?
753 名前:747 mailto:sage [2010/01/24(日) 14:00:51 ] キーボードの説明書とやらを見てもリピートみは触れてないし キーボードのプロパティで、速度を、一番長く遅くしても短く速くしても 似たタイミングで↑のようなことになるんだもの。 きっと下らない原因なんでしょうが。 押下中にKEYUPが起こってもらうわけには絶対いかないので 脳内でこれを自動連打と名付けて対処方法考え中なだけです。
754 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:16:50 ] Bingってみると、チャタリングによる不良とかPS/2->USB変換機絡みで そういう事が起きることもあるみたいだな。 USBキーボード側が腐ってるって事で良いんじゃね?
755 名前:747 mailto:sage [2010/01/24(日) 15:05:15 ] >>754 有難うございます。 手動ではありえないくらい短い時間で連続してKEYUP来たら それは無視する、とかでもう少し粘ってみます。
756 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 15:44:06 ] Viewを管理するクラスを作っているのですが フォントってウィンドウごとに設定されるのでしょうか?
757 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:03:26 ] USBキーボードを違うのに変えても結果はおなじ?
758 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:20:30 ] キーボードのドライバがなんかやってるんじゃないの?
759 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:27:54 ] ドライバじゃいと予想してみた。初心者がつくった怪しげな常駐ソフトとか。
760 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 17:26:29 ] USBキーボードだとそんなことあるのか。 うちでも実験してみるかな?
761 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:20:01 ] >>756 CS_OWNDCでウィンドウ毎にDCを持たせればそういう事も出来るが、 そうでない場合は設定とかは無い。 WM_GET/SETFONTも実装側で対応しないと何の効果も無かったはずだし。
762 名前:747 mailto:sage [2010/01/24(日) 20:12:57 ] >>757 見直したところ、 ノートPCに付けてたのは、PS2 キーボードを USB PS2変換ケーブル「Arvel AUO1PS」につないで、 USBに指して使ってました。 別にUSBキーボードと、別のPS2キーボード、 WindowsXPマシン、WindowsVistaマシン が丁度あったのでテストしてみました。 開発環境(Windows Vista) +USBキーボード = 未発生。 +PS2キーボードA + 変換ケーブル = 発生。 +PS2キーボードB + 変換ケーブル = 発生。 WindowsXP マシン +USBキーボード = 未発生。 +PS2キーボードA + 変換ケーブル = 発生。 +PS2キーボードB + 変換ケーブル = 発生。 Windows Vista マシン +USBキーボード = 未発生。 +PS2キーボードA + 変換ケーブル = 発生。 +PS2キーボードB + 変換ケーブル = 発生。
763 名前:747 mailto:sage [2010/01/24(日) 20:15:10 ] >>754 >>PS/2->USB変換機絡みで そういう事が起きることもあるみたい 自分はソースを見つけられなかったので 確証無く、単に自分の変換ケーブルが壊れているだけかもですが、 自分で勝手に作ってるソフトなので、これを信じ、 対処の処理を追加したいと思います。 的確な、ご指摘有難うございました。
764 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 04:01:24 ] 二次元配列の中身をメッセージボックスで並べて表示したいのですがどうすればいいですか?
765 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 04:06:02 ] どうすればって…空白と\n(改行)で繋いで表示するとかしたらいいんじゃないでしょうか
766 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:39:16 ] 可変幅フォントでカラムがずれるという事じゃないかな。 MessageBoxで揃える方法があるなら俺も知りたい。
767 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 12:07:13 ] >>766 ::MessageBox()のAPIフックして固定幅フォントをセットし直せばよいのではなかろうか
768 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 12:38:07 ] MessageBoxをCreateWindowしたいってことじゃないの?
769 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:52:47 ] そこまでやるならダイアログ作るんじゃないかw
770 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 14:17:11 ] メッセージボックスを一度に複数表示したいということかもしれない
771 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:03:15 ] 結局よく分からないな…
772 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:32:29 ] CreateStatusWindowで作るステータスバーに右から左に流れるメッセージを 表示するにはどうすればいい?
773 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:41:35 ] オーナードロー。
774 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:41:53 ] タイマーか何かで一文字ずつずらして表示すればいいんでは 1回目ABCDE 2回目BCDE 3回目CDE . . 6回目 7回目 A
775 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:48:50 ] >>774 そういう方向で実装するしかないんですか・・・めんどくさいな
776 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:00:20 ] ダイアログのクライアント領域にエディット・ボックスを縦に並べ、 最上部のウィンドウを開け閉めしてダイアログの高さを変更しようと してますが、うまくいきません。 ┌[ダイアログ]──────────┐ │┌─────────────┐│ ││ Edit Box1 ││ ││ ││ │└─────────────┘│ │┌─────────────┐│ ││ Edit Box2 ││ ││ ││ │└─────────────┘│ │┌─────────────┐│ ││ Edit Box3 ││ ││ ││ │└─────────────┘│ └───────────────┘ ShowWindow(1,SW_HIDE); MoveWindow(2); MoveWindow(3); MoveWindow(ダイアログ); では、ダイアログ・ウィンドウ内が真っ白になり、マウスでサイズ変更すると 1が消えているだけです。 こういう動作は、どんな手順ならよいのでしょ〜か?
777 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:19:03 ] ちゃんとRepaintフラグ送ってんですか?
778 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:21:35 ] BeginDeferWindowPos
779 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:38:25 ] >>775 せいぜい1時間くらいだよ 一回書けば使いまわし出来るだろ
780 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:40:19 ] では一時間後に >>779 がうpしてくれるのを楽しみに待つとしよう
781 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:13:06 ] ……。
782 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:36:00 ] wktk
783 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:47:02 ] 779ではないが。なんか書けたぞ。通るかも解らんが(笑) static int nNowPos = 0; static DWORD dwLastTime = 0; DWORD dwWork; char bufWork[256]; char bufHyouziString[256]; strcpy(bufWork,"ABCDEが流れると嬉しいな。 "); //前回より1秒経過してたら。更新 dwWork = timeGetTime(); if((dwLastTime + 1000) < dwWork){ //最後に更新した時間を更新 dwLastTime = dwWork; //今の文字が全角なら、次に進めるカウントは+2 if(bufWork[nNowPos] & 0x80 == 1){ nNowPos +=2; } else{ nNowPos ++; } //最後まできてたらまた最初 nNowPos = nNowPos % strlen(bufWork); } //進んだアドレスを先頭にして、文字列コピー strcpy(bufHyouziString,bufWork[nNowPos]); //ここまでで、bufHyouziString に来るんではないかね多分・・・
784 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:49:17 ] いろいろ間違えてるな。0x80 との比較結果は != 0だった。 まぁどうでもよいか。
785 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 01:25:17 ] とりあえず出来た もうすぐうp
786 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 02:02:44 ] おれなら char orig[]="ABCDEが流れると嬉しいな。 "; なら char tmpbase[]="\t\tABCDEが流れると嬉しいな。 ______________________";//_は半角スペースでステータスバーが埋まるだけの数 を用意して 定期的にtmpworkからtmpbaseをコピーして適切な位置に\0挿入する
787 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 11:42:26 ] ステータスバーが埋まる文字数。が常に固定であるかの 考慮忘れて発現してた。 GUIで食ってる人はこういう時の定石とかあるのかな。
788 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 12:28:58 ] そういうUIは嫌われるから作らないのが定石。
789 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 12:58:19 ] ステータスバーに文字が流れるのって昔見たなー、と思ったが あれはブラウザにjavascriptで書いてたんだったか
790 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 13:07:01 ] ずーーーっと見てないと何が書いてあるのかわからないのは時間の無駄
791 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 14:44:10 ] SB_SETPARTS にも対応してくだされ
792 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:00:16 ] >>787 こんなクソUI作らないのが定石です
793 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:15:08 ] 文字流す用のウィンドウ作ってそれをステータスバーの上に乗せればよくね
794 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:59:26 ] 作りたいもの作ればいいのよ やる気だけが自分を向上させてくれる
795 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:33:34 ] 同意
796 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:34:44 ] だ
797 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:45:42 ] 文字列が与えられたときにフォント(等幅・プロポーショナルとも)考慮して その文字列の画面上での表示幅を教えてくれるような関数ってWin32APIになかったっけ?
798 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:53:14 ] GetTextExtentPoint32
799 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:11:25 ] おおきに
800 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:16:25 ] >>791 SB_GETPARTS でパート数と座標が判るので書きたい場所に DrawText 汁 この方法だと GetTextExtentPoint32 使わなくても良くなると思う
801 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:03:47 ] ブラウザと同じように ツールバーの右に何かの進行状況を 表すゲージを表示させるにはどうしたらいいの?
802 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:05:38 ] ブラウザと同じようにやれば良い
803 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 08:06:24 ] ブラウザはどうやってるの?
804 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 08:23:41 ] そのブラウザ使ってググレカス
805 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 15:19:58 ] ブラウザのツールバーの右に進行状況を表すゲージってでたっけ? ステータスバーの右のこと?
806 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 16:56:00 ] 脳内変換しとけよ
807 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 16:57:57 ] はいや
808 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:07:40 ] どのブラウザだろう
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つしかないだろうから、そこでいい。