ウィンドウの最上位レベルのコンポーネント名をウィンドウハンドルから知りたいと思います。
これはそうではマネージドC++コードのように行われます。アンマネージコードのクラス名/コンポーネントタイプへのウィンドウハンドル(HWND)のバインド
//handle is the window handle as int
System::Windows::Forms::Control^ c = Control::FromHandle((System::IntPtr)System::Convert::ToInt32(handle));
System::Type^ t= c->GetType();
Console::WriteLine(t->FullName);//This is the top level name of the component.
しかし、私は私が開発する必要があり解決のためにマネージコードを使用することはできません。
GetClassName()
を同等のものとして使用しようとしましたが、これは私にWindowsForms10.STATIC. [...]
のジャンボジャンボを与えます:)
これは管理されていないコードでどのように行うことができますか?
C++はネイティブWinFormsのサポートを提供していませんが、私は正しい方法でポインタを取得したいと考えています。私はそれはいくつかの解決策で行わ見てきましたが、
は、事前にありがとう私のコードは:(作業を取得することができなかった
アンマネージコンポーネントに実際に名前がありますか? – Abyx
'Type'と' FullName'はマネージ世界だけに存在します。あなたが管理されていない世界にそれを公開するマネージコードを書かない限り、これを回避する方法はありません。 –
私が解析しているアプリケーションは、WinFormsを使って.NETで書かれています。私はマネージコードを使用できません。上記のコードスニペットを試してみると、私は実際のクラス名を取得します。 System.Windows.Forms.ComboBox。 GetClassNameは私が特定のコンポーネントタイプに反応する必要があるので、私には使えない質問に書かれているフォーマットしか与えません。 – prettyCode