Значение lParam.vkCode не является простым типом типа int, поэтому я не думаю, что вы можете увеличить его таким образом.
как только вы получите ключевой объект ...
Keys key = (Keys)lParam.vkCode;
Вы должны иметь возможность делать что-то вроде получения значения байта и увеличивать его.
int keyVal = Encoding.ASCII.GetByte(key.KeyCode);
keyVal++;
Я думаю, что vkCode - это не фактический код ключа, а, возможно, указатель или что-то в этом духе, присваивая его переменной Key .Net извлекает это значение и с помощью преобразования приводит к типу управляемого ключа.
Конечно, я могу ошибаться ...