tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルGetClassNameで困ってます。
記事No16058
投稿日: 2015/01/13(Tue) 09:03
投稿者田村
はじめまして。

GetClassNameでクラス名を取得すると右端の1文字欠けませんか?
右端の一番大事な数字が欠けてしまいます。
同じコントロールがあるとユニークなワードとして識別できません。

欠けない方法知っておられる方教えてください。

テキストボックス2つおいて下記のコードを実行すると、ThunderTextBoxとしか表示されません。
でも他のビューアなどで見ると、コントロールが複数ある場合はThunderTextBox1,ThunderTextBox2・・・となるようです。
ちなみに.netで試してみても同じようになりました。

Private Sub Command1_Click()
    Dim nName As String
    Dim nLeng As Long
    Dim Ret As Long

    'バッファを確保
    nName = String(250, Chr(0))
    nLeng = Len(nName)

    Ret = GetClassName(Text2.hwnd, nName, nLeng)
    Text1.Text = nLeng
    MsgBox Left(nName, InStr(nName, vbNullChar) - 1)
        
End Sub


'標準モジュール
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

[ツリー表示へ]
タイトルRe: GetClassNameで困ってます。
記事No16059
投稿日: 2015/01/13(Tue) 10:43
投稿者YK
> はじめまして。
>
> GetClassNameでクラス名を取得すると右端の1文字欠けませんか?
> 右端の一番大事な数字が欠けてしまいます。
> 同じコントロールがあるとユニークなワードとして識別できません。

こんにちは。
クラス名はコントロールタイプが同じなら全部同じクラス名ですよ。
他のビューアでは多分見やすくするために奏しているでしょう。
SPY++で確認されては

[ツリー表示へ]
タイトルRe^2: GetClassNameで困ってます。
記事No16060
投稿日: 2015/01/13(Tue) 21:25
投稿者田村
そうだったのですか。AHKという言語でいちいち確認していて、同タイプのコントロールに通し番号ついていたのでそれが普通だと思っていました。素早いご回答ありがとうございました。助かります。

[ツリー表示へ]