Windows на экране ошибка позиционирования клавиатуры при использовании настройки с двумя экранами C#C#

Место общения программистов C#
Anonymous
 Windows на экране ошибка позиционирования клавиатуры при использовании настройки с двумя экранами C#

Сообщение Anonymous »

Вот проблема:
Когда я сначала взаимодействую с сборщиком DateTime, клавиатура появляется на вторичном экране, что ожидается. главный экран вместо того, чтобы оставаться на вторичном экране.
Аналогично, если я сначала взаимодействую с текстовым поле, клавиатура появляется на вторичном экране, но когда я тогда взаимодействую с выводом DateTime, она переключается на Основной экран.
Кроме того, когда клавиатура появляется на вторичном экране во второй раз, она остается там всего на несколько секунд, прежде чем вернуться к основному экрану.
Это поведение является непоследовательным и неожиданным Полем В идеале, клавиатура должна оставаться на вторичном экране при взаимодействии с полями ввода на этом экране. < /P>

Код: Выделить всё

IntPtr keyboardHandle = FindWindow("IPTip_Main_Window", null);
Screen[] screens = Screen.AllScreens;
if (keyboardHandle == IntPtr.Zero)
{
var startInfo = new ProcessStartInfo
{
FileName = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe",
UseShellExecute = true
};
Process oskProcess = Process.Start(startInfo);
if (screens.Length < 2)
{
return;
}
System.Threading.Thread.Sleep(1000);
keyboardHandle = FindWindow("IPTip_Main_Window", null);
}
Screen secondaryScreen = null;

for (int i = 0; i < screens.Length; i++)
{
if (!screens[i].Primary)
{
secondaryScreen = screens[i];
break;
}
}
var workingArea = secondaryScreen.WorkingArea;
SetWindowPos(keyboardHandle, IntPtr.Zero,
(int)(workingArea.Left * 1.05),
(int)(workingArea.Height * 0.5),
(int)(workingArea.Width), // 100% of screen width
(int)(workingArea.Height * 0.8), // 80% of screen height
SWP_NOZORDER | SWP_NOACTIVATE);
}
пытался изменить SetWindowpos с разными флагами, он не работает

Подробнее здесь: https://stackoverflow.com/questions/794 ... setup-c-sh

Вернуться в «C#»