Это не о производительности. Это о том, что делает хороший первичный ключ. Уникальный и неизменный со временем. Можно думать, что объект, такой как код страны никогда не изменяется со временем и был бы хорошим кандидатом на первичный ключ. Но горький опыт, это редко так.
INT AUTO_INCREMENT встречается "уникальный и неизменный со временем" условие. Следовательно предпочтение.
Используйте для этого автоматизацию пользовательского интерфейса - попытка вручную имитировать ввод с помощью оконных сообщений - это обычная ошибка, как попытка начать сухопутную войну против России.
Ваша стратегия в целом разумна, но для того, чтобы отправить сообщение в окно, принадлежащее другому процессу, вы должны сначала зарегистрировать сообщение.
Вот статья, объясняющая весь бизнес . К сожалению, пример кода написан на VB, но я уверен, что это вас не остановит.
Я настоятельно рекомендую выбрать маршрут UIAutomation. Вы создаете AutomationElement с помощью дескриптора окна. Подойдите к кнопке и активируйте ее. Я просто хотел бы знать, как вам удалось заставить работать ввод с клавиатуры. Я сейчас пытаюсь решить обратную проблему. Как получить окно WPF (мне удалось получить к нему hWnd через вызовы Win32), чтобы отвечать на сообщения виртуальной клавиатуры. Я зарегистрировал ++ шпионские сеансы в указанном окне и безуспешно воспроизвел его ввод.