2011-02-13 7 views
0

私は32 apiで初心者です。私は画面上のキーボードを作成するために32 apiを使用してみてください。私はウィンドウとコンポーネントをクリックで処理することができますが、どのようにこれらの型を実現するのですか?テキストボックスと編集可能なコンポーネントにのみテキストを設定したいです。これはOSの再起動ごとにこの変更が行われるため、これはこの目標に完全には使用されません。GDIの種類を見つける方法

(クリックし、ウィンドウのハンドルです)

WINDOWINFOのPWI =新しいWINDOWINFO(); USER32INST.GetWindowInfo(クリック、pwi); if(pwi.atomWindowType!= -15891){setLastclick(クリック); } tnx

+0

私は理解しているとは思わないが、私が近くにいる場合は、['GetClassName'](http://msdn.microsoft.com/en-us/library/ms633582%28v=vs.85%29 .aspx)あなたを助けるかもしれません.. –

+0

テキストボックスとtextaraeとコンボのようないくつかのGDIは... classNameを編集してください。 GetClassNameはGDI専用です。私はWebブラウザのコンポーネントのようなすべての場所のためのソリューションが必要です。編集可能なコンポーネントのforftenアプリは他のクラス名を使用します。 –

+0

編集コントロールのタイプが重要である理由はわかりません。タイプすることができるものであれば、私はOTOHですが、非標準コントロールを使用する多くのアプリケーションで発生する難しさがあります。コントロールは、apiに関してウィンドウが最初から始まっていません。 AAMOF私はダビデの答えに同意します。 –

答えて

1

あなたが望むものを達成することはできませんが、完全に一般的には現実的に可能ではありません。

ウィンドウのタイプ(またはクラス)は基本的にはWndProcによって決まります。 GetClassNameとそのilkを使用すると、いくつかの標準的なウィンドウクラスを識別するのに役立ちますが、既に発見したように、ほとんどの現実世界のアプリケーションはこれらの標準クラスを使用しません。

理論上、実行時にWndProcの背後にあるコードを分析することはできますが、実際にはこれは遠隔実行可能ではありません。

+0

私は別の方法で自己質問をしてみてください。マイクロソフトの画面上のキーボードを見て、Webブラウザコンポーネントで使用してみてください。どのようにそれ???? ????? IE上のGoogleテキストボックスのクラス名は "Internet Explorer_server"で、mozillaは "MozillaWindowClass"で、AWT(Java Desktop)で生成されたコンポーネントのクラス名は "SunAwtFrame" _ ** APIでGoogle検索ボックスのテキストを設定する方法は? ** _SetWindowTextとSendMessage()はこの目標に対応できません。 –

+1

ほとんどのスクリーンキーボードは、SendInputと入力フォーカスを持つものに送信される偽の入力を呼び出すだけです。少なくともそれは私の理解です。 –

+0

フォーカスで作業し、GetFocusをクリックすると、ファイルの名前を変更するなどの安定したソリューションが得られません。主な問題は、ブラウザコンポーネントのハンドルを取得し、ブラウザなどのすべてのテキストボックスにテキストを設定する方法です。 –