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/