2010-12-12 4 views
1

ここに私の機能:ウィンドウからテキストを取得するにはどうすればよいですか?

def getEditText(hwnd): 
    result = [] 
    bufferlength = struct.pack('i', 255) 
    linecount = win32gui.SendMessage(hwnd, win32con.EM_GETLINECOUNT, 0, 0) 
    print"--- linecount :",linecount 

    for line in range(linecount): 
     linetext = bufferlength + "".ljust(253)   
     linelength = win32gui.SendMessage(hwnd, win32con.EM_GETLINE, line, linetext) 
myLigne=linetext[:linelength] 
print" ",myLigne 
     result.append(myLigne) 
    return result 
resultat=getEditText(hwmdTexte) 

私はウィジェットからテキストを取得したいが、これは動作しません。 私のアプリケーションのウィジェットにはいくつかの行がありますが、linecount = 0、もちろんテキストはありません。 私を助けてください。

+1

1.書式設定が壊れているようです。 2. GUIツールキットなど、どのウィジェットがありますか? – delnan

+0

まず、 'hwnd'がエディットコントロールを参照していることを確認します(エディットコントロールを含むウィンドウなどではありません)。 Spy ++または類似のツールを使用して、前提条件を確認してください。 – atzz

+0

あなたの答えをありがとう。私はまた、コントロールに問題があると思う。しかし、私は2つの異なるツール(WinIDとAutoIt)でチェックしました。コントロールの名前はTEXTEです。さらに、私はforループを試しました。コントロールの中のハンドル、名前、クラスのために: resultat = GetTex(handle)私が理解できない別のことがあります:なぜWinIDとAutoItを使っていくつかのアプリケーションのテキストを取得できますが、 – chris33

答えて

0

ご回答ありがとうございます。私はちょうど試してみた

GetText(hwnd): 
    buf_size = 1 + win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH, 0, 0) 
    buffer = win32gui.PyMakeBuffer(buf_size) 
    win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, buf_size, buffer) 
    return buffer[:buf_size]  

しかし、これは私のウィジェットのテキストを取得しません。この関数はNULを返します。

関連する問題