До сих пор я сделать окно - активным, чтобы отправить текст с помощью SendKeys
, но я хочу сделать это в фоновом режиме, используя SendMessage
user32.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");
Но переименовывает название окна для «Hello». Похоже, мне нужно найти дочернее окно, но не могу узнать о lpszClass
.
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
В Winspector нажмите и перетащите туда, где говорится «нажмите и перетащите», а затем перетащите перекрестье в текстовое поле. Какую информацию вы получаете? – NineBerry
@NineBerry показан на изображении. 00030BA: CVIRTLVDChild00400000 «Код метки (сканирование)» –
Используйте System.Windows.Automation, чтобы все: найти окно, найти текстовое поле и ввести текст. – andlabs