سلام دوباره
این کد اگر window handle مشخص باشه مشکلی نداره صرفنظر از این که parent اون چی باشه.
فکر کنم وقتی رخداد window shown اجرا میشه هنوز پروسه p کاملا اجرا نشده و بنابراین window handle اون مشخص نیست.
برای اطمینان 2 راه هست:

1- کد رو بجای window shown در یک button click بذارین و نتیجه رو چک کنین.
اگر اجرا شد مشکل همینه

2- در ابتدای رخداد window shown و قبل از کد اصلی، کد زیر رو اضافه کنین و window handle رو چک کنین:
debug.print (p.mainwindowhandle)

اگر 0 باشه مشکل همینه

اگر مشکل همین مشخص نبودن window handle بود کد زیر رو قبل از کد اصلی اضافه کنین - باحتمال زیاد برطرف میشه.
do while p.mainwindowhandle=0
loop