1,谁能告诉我tabtip和osk键盘的区别?
2,我想知道如何使用C++来控制TabTip键盘的显示和关闭吗?

我试图通过关闭osk系统键盘来关闭tabtip.exe,但是没有用。

首先,我尝试使用FindWindow函数返回有效的窗口句柄,以查找需要关闭/最小化的窗口。然后通过调用SendMessage显示TabTip窗口。

if (HWND hwnd = FindWindow(L"IPTip_Main_Window", 0))
{
    SendMessage(hwnd, WM_SYSCOMMAND, SW_SHOW, 0);
}

最佳答案

试试下面的代码,它可以终止TabTip的进程,然后将其打开,这也可以满足您的需求。

#include "pch.h"
#include <iostream>
#include <windows.h>
#include <TlHelp32.h>
#include <tchar.h>
BOOL GetPidByProcessName(TCHAR *pProcess, DWORD *dwPid)
{
    HANDLE hSnapshot;
    PROCESSENTRY32 lppe;
    hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

    if (hSnapshot == NULL)
        return FALSE;
    lppe.dwSize = sizeof(lppe);
    if (!::Process32First(hSnapshot, &lppe))
        return FALSE;
    do
    {
        if (_tcscmp(lppe.szExeFile, pProcess) == 0)
        {
            *dwPid = lppe.th32ProcessID;
        }
    } while (::Process32Next(hSnapshot, &lppe));

    return TRUE;
}
BOOL KillProcess(DWORD ProcessId)
{
    HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
    if (hProcess == NULL)
        return FALSE;
    if (!TerminateProcess(hProcess, 0))
        return FALSE;
    return TRUE;
}
int main()
{
    HWND TabTip = FindWindow(L"IPTip_Main_Window", 0);
    if (!TabTip)
    {
        ShellExecute(NULL, L"open", L"C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe", NULL, NULL, SW_SHOW);
    }
    else
    {
        TCHAR a[256] = _T("TabTip.exe");
        DWORD b = 0;
        GetPidByProcessName(a, &b);
        KillProcess(b);
        ShellExecute(NULL, L"open", L"C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe", NULL, NULL, SW_SHOW);
    }


}

最好的祝福,

苏亚雷斯·周

关于c++ - 如何使用C++控制TabTip键盘的显示和关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57425730/

10-11 21:20