Вообщем изучил я оба варианта и для себя окончательно уяснил чтоб использовать в dll переменные объявленные в exe необходимо их постоянно за собой "тянуть в аргументах функции". Причем в каждой функции в Dll.
Меня такой вариант не устраивает, поэтому я решил переделать структуру программы.
В exe вызывается ловушка из DLL, считывается нажатие клавиши на клавиатуре - запускается функция keyctrl в exe которая уже производит мат операции со всеми нужными мне переменными.
Все это сделал, все функции успешно вызываются, но опять облом... внутри keyctrl опять все переменные равны нулю... конечно я не объявлял их в аргументах и не тянул все 35 переменных в dll и обратно в exe хотябы из соображения безопасности. Почему переменные обнуляются.. ведь они используются внутри одного PASа в главной программе...