### Godot version

4.0.3; 4.1.0

### System information

windows 10

### Issue description

Only palm input method can't input Chinese, other input methods such as Microsoft Pinyin, Sogou Pinyin, qq Pinyin, Google Pinyin all work.
Through git bisect, I found that it was introduced from #75881.
By adding `CoInitialize(nullptr)` to `OS_Windows()` in platform/windows/os_windows.cpp I can get it to work, but I'm not sure if it causes other problems.

![fix](https://github.com/godotengine/godot/assets/45038185/1f2b137c-a5cc-4c10-aa04-1a8c19ba02c3)

<details><summary>git bisect log details</summary>
<p>

```
# bad: [abbdf806435aad401f2a7b6ce09838c8e4d5cbcb] GDScript: Don't fail when freed object is return
# good: [e1c0df70485266e0385aed4962934bb26cb325e9] Fix typo and slightly reword in @GDScript.xml
git bisect start 'abbdf806435aad401f2a7b6ce09838c8e4d5cbcb' 'e1c0df70485266e0385aed4962934bb26cb325e9'
# good: [87b8eea9f6c516b4a362f8b80095e3a037ade225] Merge pull request #75904 from Calinou/colorpicker-constructor-round-values
git bisect good 87b8eea9f6c516b4a362f8b80095e3a037ade225
# bad: [db1302637023168f7becceb1c4ce13228e1b2a43] i18n: Sync translations with Weblate
git bisect bad db1302637023168f7becceb1c4ce13228e1b2a43
# good: [7b6c0a8b43a4cdbbab3ea68f717937aca547c966] Merge pull request #76186 from pkowal1982/double_the
git bisect good 7b6c0a8b43a4cdbbab3ea68f717937aca547c966
# good: [c4dba9a5efdbd84b67f87def16f7b51321209697] Merge pull request #75880 from bruvzg/win_tts_queue_fix
git bisect good c4dba9a5efdbd84b67f87def16f7b51321209697
# bad: [c01b11ec8176c94a1b26ab3ed3b311e4fecd51be] Merge pull request #76229 from KoBeWi/out_of_control
git bisect bad c01b11ec8176c94a1b26ab3ed3b311e4fecd51be
# bad: [5bb46d60648ddfac4ab91a11ae4a9e568f8f66a5] Merge pull request #76176 from YuriSizov/editor-extracted-interface-commencing
git bisect bad 5bb46d60648ddfac4ab91a11ae4a9e568f8f66a5
# bad: [df0ad7502d3d9a55197d7f20c220df82706129ba] Merge pull request #76114 from ajreckof/prevent_packedArray_cast_to_array
git bisect bad df0ad7502d3d9a55197d7f20c220df82706129ba
# bad: [c2edf14faf3abdaba9a82651f202dd102703f041] Merge pull request #75881 from bruvzg/win_coinit
git bisect bad c2edf14faf3abdaba9a82651f202dd102703f041
# bad: [83dc545ea2599458fab4f4aaf46ab61d8ca98fbd] [Windows] Cleanup COM library initialization/uninitialization.
git bisect bad 83dc545ea2599458fab4f4aaf46ab61d8ca98fbd
# first bad commit: [83dc545ea2599458fab4f4aaf46ab61d8ca98fbd] [Windows] Cleanup COM library initialization/uninitialization.
```

</p>
</details> 


### Steps to reproduce

1.Install the palm IME from [winget](https://winget.run/pkg/360/PalmInput)(Chinese name is "手心输入法").
2.Enter any character in Chinese mode.
3.Try to see if Microsoft Pinyin works.

### Minimal reproduction project

N/A
loaded_image.FileHeader = nt_header;
					loaded_image.Sections = (PIMAGE_SECTION_HEADER)((LPBYTE)&nt_header->OptionalHeader + nt_header->FileHeader.SizeOfOptionalHeader);
					loaded_image.NumberOfSections = nt_header->FileHeader.NumberOfSections;
					loaded_image.SizeOfImage = GetFileSize(file, nullptr);
					loaded_image.Characteristics = nt_header->FileHeader.Characteristics;
					loaded_image.LastRvaSection = loaded_image.Sections;
					loaded_image.fSystemImage = false;
					loaded_image.fDOSImage = false;
					loaded_image.Links.Flink = &loaded_image.Links;
					loaded_image.Links.Blink = &loaded_image.Links;
					ULONG size = 0;
					const IMAGE_IMPORT_DESCRIPTOR *import_desc = (const IMAGE_IMPORT_DESCRIPTOR *)ImageDirectoryEntryToData((HMODULE)loaded_image.MappedAddress, false, IMAGE_DIRECTORY_ENTRY_IMPORT, &size);
					if (import_desc) {
						for (; import_desc->Name && import_desc->FirstThunk; import_desc++) {
							char16_t full_name_wc[MAX_PATH];
							const char *name_cs = (const char *)ImageRvaToVa(loaded_image.FileHeader, loaded_image.MappedAddress, import_desc->Name, 0);
							String name = String(name_cs);
							if (name.begins_with("api-ms-win-")) {
								r_checked.insert(name);
							} else if (SearchPathW(nullptr, (LPCWSTR)name.utf16().get_data(), nullptr, MAX_PATH, (LPWSTR)full_name_wc, nullptr)) {
								debug_dynamic_library_check_dependencies(p_root_path, String::utf16(full_name_wc), r_checked, r_missing);
							} else if (SearchPathW((LPCWSTR)(p_path.get_base_dir().utf16().get_data()), (LPCWSTR)name.utf16().get_data(), nullptr, MAX_PATH, (LPWSTR)full_name_wc, nullptr)) {
								debug_dynamic_library_check_dependencies(p_root_path, String::utf16(full_name_wc), r_checked, r_missing);
							} else {
								r_missing.insert(name);
							}
						}
					}
				}
				UnmapViewOfFile(mapping);