You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否调用API启动预填搜索文本的Windows 11内置搜索?

Windows 11 唤起内置搜索并预填内容的实现方案

Windows 11确实支持通过两种可靠方式实现你的需求,无需复杂的系统级API调用,就能达到和官方开始菜单一致的搜索触发效果:

1. 使用ms-search URI方案(推荐)

这是最简单直接的方法,Windows原生支持通过ms-search协议唤起内置搜索界面,并自动预填指定的查询内容。该方案兼容Win32、.NET(WPF/WinForms)等多种程序框架,且完全遵循系统搜索设置(包括你偏好的禁用网页搜索配置)。

示例代码

C++(Win32)

#include <windows.h>
#include <shellapi.h>
#include <swprintf.h>

void TriggerWindowsSearch(const wchar_t* searchText) {
    wchar_t uriBuffer[1024];
    wchar_t escapedQuery[1024];
    // 转义特殊字符避免URI解析错误
    if (!UrlEscape(searchText, escapedQuery, ARRAYSIZE(escapedQuery), URL_ESCAPE_UNSAFE)) {
        lstrcpyW(escapedQuery, searchText);
    }
    swprintf_s(uriBuffer, L"ms-search:query=%s", escapedQuery);
    ShellExecuteW(NULL, L"open", uriBuffer, NULL, NULL, SW_SHOWNORMAL);
}

C#(.NET)

using System.Diagnostics;
using System;

public static void LaunchWindowsSearch(string searchQuery) {
    string encodedQuery = Uri.EscapeDataString(searchQuery);
    Process.Start(new ProcessStartInfo {
        FileName = $"ms-search:query={encodedQuery}",
        UseShellExecute = true
    });
}

调用时只需传入用户输入或粘贴的字符串,即可直接唤起内置搜索并预填内容。

2. 模拟系统搜索快捷键(备选方案)

如果需要更贴近“按下Win+S后输入内容”的原生体验,可以先发送Win+S快捷键唤起搜索框,再通过API模拟输入文本:

C++示例代码

#include <windows.h>

void SendKey(WORD keyCode, bool isExtended = false) {
    INPUT input = {0};
    input.type = INPUT_KEYBOARD;
    input.ki.wVk = keyCode;
    input.ki.dwFlags = isExtended ? KEYEVENTF_EXTENDEDKEY : 0;
    SendInput(1, &input, sizeof(INPUT));

    input.ki.dwFlags |= KEYEVENTF_KEYUP;
    SendInput(1, &input, sizeof(INPUT));
}

void TypeText(const wchar_t* text) {
    for (size_t i = 0; text[i] != L'\0'; ++i) {
        INPUT input = {0};
        input.type = INPUT_KEYBOARD;
        input.ki.wScan = text[i];
        input.ki.dwFlags = KEYEVENTF_UNICODE;
        SendInput(1, &input, sizeof(INPUT));

        input.ki.dwFlags |= KEYEVENTF_KEYUP;
        SendInput(1, &input, sizeof(INPUT));
    }
}

void TriggerSearchWithText(const wchar_t* searchText) {
    // 发送Win+S唤起搜索框
    SendKey(VK_LWIN);
    SendKey('S');
    SendKey(VK_LWIN, true);

    // 等待搜索框加载(可按需调整延迟)
    Sleep(100);

    // 输入预填文本
    TypeText(searchText);
}

该方案完全模拟手动操作,但需处理窗口加载延迟,兼容性略逊于URI方案。


内容的提问来源于stack exchange,提问作者Jacob Stamm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:42:50