какие проблемы... просто при старте процесса в длл-ку приходит дескриптор окна (читай: пишем сеттер из программы в переменную длл

засовываем DC и HANDLE)... а дальше длл-ка будет мониторить все что связано с этим окном (дескриптором) - именно по API теперь очень легко найти нужное окно и сделать с ним усе что угодно...
Вообще такие вещи ХУКами называют

и для этого удобно использовать обычный ХУК (хотя обычно ими стараются не пользоваться), зато гарантированно будет работать... читай про HOOKS