締切済み hWnd → Windowクラス名を取得するAPI関数は? 2003/05/16 09:28 名前を思い出せません。 みんなの回答 (1) 専門家の回答 みんなの回答 noname#4564 2003/05/16 09:35 回答No.1 GetClassName (詳細はMSDN等を参照) 通報する ありがとう 0 広告を見て他の回答を表示する(0) カテゴリ パソコン・スマートフォンソフトウェアオフィス系ソフト 関連するQ&A HWNDの取得について 環境:WinXP, VS2005 例えばウィンドウプロシージャで LRESULT WINAPI WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) などとHWND型の変数hWndがありますよね。 このhWndをウィンドウプロシージャの外から取得することは可能でしょうか? クラス名が取得できない 質問させていただきます VBAで計算した結果を、外部プログラムでグラフを書き、計算するたびにグラフを更新したいと考えています。 Call Shell("開くプログラム名 開くファイル名", vbNormalFocus) hwnd = FindWindow("クラス名", vbNullString) 計算をする 計算したファイルの出力 postmessageでグラフを更新する命令の出力 (最後の3行を繰り返す) そこで、HandleXというソフトを使いクラス名を取得しようと考えましたが、[classname]という所が毎回変化してしまい、取得できませんでした。 対処法があれば教えてください。お願いします。 hModuleからhWnd取得 CUIプログラム(main関数ではじまる)でhWndを取得すればその動作しているプロンプトのhWndが取得できますよね? そこで、hModuleは簡単に取得できるのですが、hWndが取得できません。 APIなどでいい関数ないでしょうか。。 フォルダー名とクラス名が被らないようにしたい C#3.5を使用しています。 同じプロジェクト下に「Class1」というフォルダと「Class1」というクラスを 作成してコンパイルすると 「名前空間 'Test' に 'Class1' の定義が既に含まれています。」 というエラーになって、 つまりどちらかの名前を変えれば(例えばClass1のクラス名のほうを「Test_Class1」に変更するなど)問題ないのですが、 できればフォルダの方の名前も、クラスの方の名前も、それぞれの配置位置も変えたくありません。 そういうふうにやるのは不可能なのでしょうか? 意味を教えてください:クラス名& メンバ関数名/クラス名 & メンバ関数名 Windowsのタスクから起動し、シリアル接続した組み込み用マイコン(PIC)に、コマンドを送るプログラムを作ろうと、勉強中です。シリアル通信ActiveXが全てのPCで使えるという状況では無いため、どうせAPIを使うなら,この機会にc++を勉強しようと考えました。当方のスキルはPIC用のCで、ちょっとした制御が出来る程度です(PCで使用しているのは主にVBAですが、毎回Excel起動では重すぎて...)。軽く・小さくしてやろうと、VC++2005Express + WIN32SDKを使っています。主にWEBで勉強させていただいておりますが、参考に海外サイトからダウンロードした、シリアル通信用クラスがさっぱり解読できず困っています。(VBやVBAでのクラスの使い方は一応知っています)。本質問のタイトル付けにも困りましたが、適当なキーワードが分からず、WEB検索もうまくいきませんでした。 1.COMPortという名前をつけたクラスのヘッダーファイルに private: COMPort (const COMPort &); COMPort& operator= (const COMPort &); とありますが、既にここから分かりません。二つの文はどういう意味なのでしょうか? 2.クラスの.cppファイルに、 //こちらは頭のCOMPortと&の間にスペース無し COMPort& COMPort::setState () { if (!SetCommState ( (HANDLE) thePortHandle, (LPDCB) theDCB)) { throw runtime_error ("COMPort: could not modify serial port state."); } return *this; } というのとか、 //こちらは頭のCOMPortと&の間にスペースあり COMPort & COMPort::write ( const char inChar ) { char buffer = inChar; DWORD charsWritten = 0; if ( !WriteFile ( (HANDLE(thePortHandle)), &buffer, sizeof(char), &charsWritten , NULL)) { throw runtime_error ("COMPort: write failed."); } return *this; } があって、やっている事自体はAPIを実行しているだけと思いますが、質問タイトルの”クラス名& メンバ関数名/クラス名 & メンバ関数名”という記述はどういう意味なのでしょうか?教えていただけると幸いです。 プロセス内のAPI関数名を知りたい プロセスに読み込まれているAPIモジュールの名称一覧は、CreateToolhelp32SnapshotでTH32CS_SNAPMODULEとプロセス番号を指定すれば得られます 同じようにプロセスに読み込まれているAPI関数名の一覧表を簡単に得る方法はありますか? ---------------------------------------- 上述のごとくCreateToolhelp32Snapshotで得たモジュール一覧表がありますのでプログラムではなく、モジュール内の関数名を手操作・手調べでも結構ですから簡単に知る方法をご教授ください 【理想を言えばプログラム的に知る方法です お願いします】 APIの関数名と定数の調べ方を教えてください VBAから Windows32APIの学習を始めたばかりの初心者です。作成しようとするプログラムに必要なAPI関数名とその関数を使用するにあたっての設定すべき定数名を調べる方法(辞書などの本やWebは問いません)がありましたら教えてください。よろしくお願いします。 保育園、幼稚園のクラス名 幼稚園や保育園のクラス名って、 花の名前、 たとえば、 さくら、ひまわり、ちゅーりっぷなどや 動物のなまえ りす、ひよこなど いろいろありますよね。 皆さんが通われたあるいはお子さんが通っている幼稚園あるいは保育園ではどのような名前のクラスがありますか? 教えてください。 クラスのインスタンス名をクラス内で取得できますか? クラスのインスタンス名をクラス内で取得できますか? 今VC++6.0を使っています。例として下記のクラスのコンストラクタで CTest::CTest() { TRACE("%s",typeid(this).name()); } としておいて、 別なクラスで CTest testInst; を生成すると デバッグエリアに 「class CTest *」 と表示することはできました。 これが出来るのなら、インスタンス名 testInst をCTestクラスの内部から 取得することは出来ないのかと思ったのですが、 取得することは可能なのでしょうか? 関数名の取得 http://blog.livedoor.jp/dankogai/archives/51759681.html こちらでは、 getFunctionName = function(f){ return !f ? f /* like document.constructor in IE */ : 'name' in f ? f.name : f.name = (''+f).replace(/^\s*function\s*([^\(]*)[\S\s]+$/im, '$1'); }, このような関数を定義されていますが、 !f ? f /* like document.constructor in IE */ は一体どのような意味なのでしょうか。 少し調べてみたところ、 ブラウザ , document.constructor , typeof(document.constructor) , !document.constructor IE5 - 7 , undefined , undefined , true IE8 , [object HTMLDocument] , object , false IE9 - 10 , [object Document] , object , false ということで、こういった対策が必要な所はないと思うのですが。。 それとも、持っていないIEのバージョンでバグでもあったのでしょうか。 クラス名の「~Factory」って何? クラス名が「~Factory」というクラスをよく見かけるのですが、 どういった役割をもったクラスのときにこの名前を付けるのですか? API関数について WM_CAP_SEQUENCE_NOFILE の使い方をサンプルコードなどでご教授いただけないでしょうか? 私が知りたい目的は、ビデオキャプチャに必要かもしれない・・・と思ったからです。 よろしくお願いします!!!!! API関数で教えて下さい。 APP.タイトル関数では、文字数が足りません そこでAPI関数で、できると聞いたのですが ぜんぜんわかりません。 すみませんがよろしくお願いします。 クラス名一覧の取得 指定したパッケージ内にあるクラス名を取得する方法はないでしょうか? ただし、jarの場合もあります。 よろしくお願いします。 どのようなクラス名をつけた方が良いのでしょうか? C#でクラスライブラリを自作しようと考えているのですが、 入力された値などをチェックするバリデーションクラスを作りたいと思っています。 プログラム言語「PHP」のフレームワークで 「zend framework」というのがありまして、C#のライブラリでもそのような構造にしたいと思いまして、 そこで次のような構造で ┬ Mylibrary(ライブラリ名) │└ Validateフォルダ │ ├Alpha.css(アルファベットかチェック) │ ├Date.css(日付かチェック) ├Validate.css(各種のバリデーションを繋げて、一括でチェックする、または管理するクラス) というふうに考えていたのですが、コンパイルすると「Validate.css」で次のような 「名前空間 'Mylibrary' に 'Validate' の定義が既に含まれています。」 と名前がバッティングするようなのです・・・ なので仕方なく、「Validate.css」ファイルの方を、 「ValidateManager.css」(←この違いも自分の中では曖昧ですが・・・→)「ValidationManager.css」 や単に 「Validationt.css」 にしたり、それかValidateフォルダ(「namespace Mylibrary.Validate」)の方を 「Validations」(「namespace Mylibrary.Validations」) にしようか迷っています・・・ みなさんなら(このようなライブラリを作るか否かも含めて)どのような名前を付けるのか アドバイスを頂けないでしょうか? フレーム名の取得は・・・? 上下に分割されたフレームページがあります。 上のフレームの名前は既知(仮に「A」とします) 下のフレームの名前は読み込まれたアプリケーションによって 変更されている場合にこれをAの位置から取得することは 可能でしょうか。 A(自分自身)はwindow.nameで取得できるのですが、Aから見た別の フレームの名前を取得する方法がわかりません。 配列クラスのクラス名 配列クラスのクラス名 配列クラスのクラス名を教えてください。 配列はクラスですよね。そこまでは分かります。 こんなコードを実行しましたが System.out.println((new int[0]).getClass()); System.out.println((new boolean[0]).getClass()); System.out.println((new String[0]).getClass()); System.out.println((new Integer[0]).getClass()); 親切にこのような結果を出力してくれます。 class [I class [Z class [Ljava.lang.String; class [Ljava.lang.Integer; 結果として配列が何というクラスなのかは分かりません。 (もしかして『[I』『[Z』『[L』という名前のクラスでしょうか?) 昔Javaのソースを読んだときに、配列クラスのファイルも 読んだことがあるような気がするのですが、 なんと言うクラスだったか忘れてしまいました。 パッケージ名+クラス名を教えてください。 よろしくお願いします。 APIの非奨励クラス? 失礼致します。 質問させてください。 今、java.util.regex.PatternをインポートしてPattern下のquoteメソッドを使ったところ「java.lang.NoSuchMethodError: java.util.regex.Pattern.quote(Ljava/lang/String;)Ljava/lang/String;」 というエラーが出ました。 ローカルではこのメソッドを使い、問題なく動いているにもかかわらずです。PatternクラスはAPIに掲載されているのですがquoteはありませんでした。このメソッドは削除されたのでしょうか?誰かご存知の方、教えて頂けますでしょうか? 継承したクラス側のクラス名の取得 C#3.5を使用しています。 BaseClassはStackTraceを使ってクラス名を取得できるメソッドを持っています。 それを継承したDerivedClass側でそのクラス名「DerivedClass」を取得したいのですが、 次のようなやり方では「BaseClass」が取得されてしまいます・・・ あくまでBaseClass側に記述したメソッドのままで、DerivedClass側のクラス名を取得するには どのようにしたら良いのでしょうか? public class BaseClass { public string className; public string ClassName { get { if (className == null) { StackTrace st = new StackTrace(false); StackFrame sf = st.GetFrame(0); className = sf.GetMethod().ReflectedType.Name; } return className; } set { className = value; } } } public class DerivedClass : BaseClass { } var c = new DerivedClass(); MessageBox.Show(c.ClassName);// BaseClassと表示される クラス名やモジュール名の競合について プログラミング言語のRubyでプログラムを作っていて疑問に思った事がありますので どなたかご存知の方が居れば教えてください。 Rubyにおいては同じクラス名やモジュール名であっても モジュール内に対象クラスやモジュールを定義する事で 「モジュール名::クラス名」等と言う参照が可能になっていますよね そこで気になったのですが、同名のクラスAとモジュールAがある場合に (つまりクラスAの名前=モジュールAの名前) class モジュールA::クラスB # コンストラクタ def initialize @prop = クラスA.new end end 等と記述すると、コンストラクタの内部の記述において クラスAの名前とモジュールAの名前が競合するので、クラスBの生成時にエラーが発生します。 この様なケースにおいて、コンストラクタの内部でクラスAのインスタンスを 正しく生成する方法はあるのでしょうか? 勿論前提として、クラスAは他のモジュールに含まれたクラスではありません。 Javaの様にパッケージ概念があって、全てのクラスについて何らかのパッケージに所属している等の 仕組みが無いので、時々この様な命名をしてしまい困る事があるので この様なケースを回避する方法についてご存知の方が居れば、教授ください。 よろしくお願いします。