Есть ли способ узнать, когда процесс зависает? есть ли для этого вызов win32?
Вы отправляете это WM_NULL с SendMessageTimeout(). Если время ожидания истекает через секунду или три, оно не отвечает (хотя, возможно, в конечном итоге, конечно).
WM_NULL
SendMessageTimeout()
Только для проходящих мимо людей: может быть проще использовать IsHungAppWindow .