If a game wants it can easily distinguish between simulated and real mouse clicks. For example, a game can install low-level mouse hook (it will not require admin privileges) and look at
LLMHF_INJECTED flag in the
MSLLHOOKSTRUCT structure available inside LowLevelMouseProc callback function.
To deceive a game, you need a button press simulation being generated inside a HID driver.
For example, Logitech gaming series mice/keyboards have such a possibility: they execute user-written Lua scripts inside its official mouse/keyboard driver. The driver is native: it's written by Logitech and signed by Microsoft, it is bundled with GHub Logitech software. Simulated from a Lua script button clicks are indistinguishable from real clicks.
Another option is to use a self-made external hardware device: a USB mouse device that listens from another COM/USB-port what actions it should do. Since the device is a real mouse handled by a standard Microsoft HID driver, a game would be unable to detect the fake.
Button click timing is another problem when you are trying to avoid being banned for using any kind of mouse automation. You should use realistic delay intervals between simulated button press/release events without a repeatable pattern. In other words, you should use some randomization, in Logitech Lua scripts you can use
Sleep(math.random(min_delay, max_delay)) for this purpose.