An IP address is not bound to a process itself or "given" to a process. The IP is bound to a certain network adapter. That being said, it doesn't really matter if it's a VM or a bare-metal system. And the flavor (VMware, MS, etc.) of the VM doesn't matter either.
Oversimplified the process requests to create a so-called socket in order to communicate, this is mostly done through the TCP/IP stack which is handled by the OS. This way many processes can use the same IP (on different ports though).
Which network adapter the socket will get assigned is also handled by the OS, at least mostly (think about a browser on a system with multiple network adapters). There are ways to force an application to a certain port (e.g. ForceBindIP) other applications will let you choose an adapter (e.g. Wireshark), but there is no general answer here. If you have a specific problem you should ask directly.