Interface is obtained and method is called:
IFileOpenDialog *pFileOpen;
CoCreateInstance(__uuidof(FileOpenDialog), NULL, CLSCTX_INPROC_SERVER,IID_PPV_ARGS(&pFileOpen));
pFileOpen->Show(NULL);
In assembly it is:
mov eax,pFileOpen
mov ecx,dword ptr [eax]
mov edx,pFileOpen
push edx
mov eax,dword ptr [ecx+ offset_Show]
call eax
That is ecx is pointer to VMT, [ecx + offset_Show] is method Show. How to get offset_Show, desirably as in high level as possible. pFileOpen->Show as pointer is not compilable.