2016-10-16 9 views
1

これまでのところ、私は窓を作る - SendKeysを使用してテキストを送信するには、アクティブ、私は私のような何か試してみましたSendMessageuser32.dll。私はどのようにテキストボックスを見つけるのですか?

IntPtr main = FindWindow(null, "Label Code (Scan)"); 
if (!main.Equals(IntPtr.Zero)) 
    { 
     if (SetForegroundWindow(main)) 
     { 
      SendKeys.SendWait(code); 
      SendKeys.SendWait("{ENTER}"); 
      } 
    } 

使用してバックグラウンドでそれをやってみたい:

IntPtr main = FindWindow(null, "Label Code (Scan)"); 
SendMessage(main, 0x000C, 0, "Hello"); 

をしかし、それは名前を変更しますウィンドウのタイトルを「こんにちは」にします。私は子供の窓を見つける必要がありますが、約lpszClassを見つけることができないように見えます。

public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 

enter image description here

+0

Winspectorでは、「クリックしてドラッグ」と表示されている場所をクリックしてドラッグし、十字線をテキストボックス自体にドラッグします。あなたはどんな情報を得ますか? – NineBerry

+0

@NineBerry画像に写っています。 00030BA:CVIRTLVDChild00400000 "ラベルコード(スキャン)" –

+0

System.Windows.Automationを使用してすべてを実行します。ウィンドウを見つけ、テキストボックスを見つけてテキストを入力します。 – andlabs

答えて

2

ウィンドウ内のコントロールは、実際のWindowsのコントロールではありません。それらは、ウインチ・セルテルによって描画され、管理されます。ただし、ウィンドウは、コントロールとの対話を可能にするWindowsオートメーションフレームワークをサポートします。

ツールInspectを使用して、ウィンドウがWindows Automation APIをサポートしているかどうかを確認します。

もしそうなった場合は、検査ツールに表示される情報をclasses in System.Windows.Automationに入力してテキストを設定します。

関連する問題