One easy solution is to install 7-zip (or some other third-party tool, but 7-zip in particular is well-maintained and free and supports regular zip files as well as other formats.)
And on installation be sure the option is checked to make it the default handler for zip which will make it the handler for that compress files function also. But what really makes this a good solution IMO is it includes several configurable context menu options, including one for compress to a folder in a set location.
Another more difficult option if you don't want to use 7zip might be to create a batch file to zip from the command line then move to the right location. Then add this bat file to the context menu manually.
Editing and updating based on comments
The built-in compression utility is called "windows compressed folders" and is run using a very limited-functionality "zipfldr.dll" that does not include such capability as-is via rundll32.exe. However, there does seem to be a vbscript interface for it.
Also I should add that if you are looking to distribute an application or something like that without requiring a user to download another app, another possibility would be to include 7zip's dll as part of your own package, with the caveat that you'd need to adhere to the same gpl for your app.