Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 以编程方式关闭Windows虚拟触摸板/轨迹板_Winapi_Uwp_Windows 10_Registry_Touchpad - Fatal编程技术网

Winapi 以编程方式关闭Windows虚拟触摸板/轨迹板

Winapi 以编程方式关闭Windows虚拟触摸板/轨迹板,winapi,uwp,windows-10,registry,touchpad,Winapi,Uwp,Windows 10,Registry,Touchpad,我试图弄明白如何通过C++/#或Windows脚本以编程方式启动Windows 10附带的新虚拟触摸板,它应该是一个通用Windows平台应用程序 在一些注册表黑客攻击之后,我发现我可以启动Touchpad,如下所示: “%SystemRoot%\system32\LaunchWinApp.exe”ms virtualtouchpad:“ 我在这把钥匙上找到了这些信息: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTW

我试图弄明白如何通过C++/#或Windows脚本以编程方式启动Windows 10附带的新虚拟触摸板,它应该是一个通用Windows平台应用程序

在一些注册表黑客攻击之后,我发现我可以启动Touchpad,如下所示:

“%SystemRoot%\system32\LaunchWinApp.exe”ms virtualtouchpad:“

我在这把钥匙上找到了这些信息:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad]
@="URL:Virtual Touchpad"
"EditFlags"=dword:00200000
"URL Protocol"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad\Shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad\Shell\Open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad\Shell\Open\Command]
@=hex(2):22,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4c,00,\
  61,00,75,00,6e,00,63,00,68,00,57,00,69,00,6e,00,41,00,70,00,70,00,2e,00,65,\
  00,78,00,65,00,22,00,20,00,22,00,25,00,31,00,22,00,00,00
"DelegateExecute"="{54058896-4775-4C34-8B62-789FB2E263A4}"
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{54058896-4775-4C34-8B62-789FB2E263A4}]
@="VirtualTouchpadFlow Class"

[HKEY_CLASSES_ROOT\CLSID\{54058896-4775-4C34-8B62-789FB2E263A4}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,00,77,00,\
  69,00,6e,00,75,00,69,00,2e,00,70,00,63,00,73,00,68,00,65,00,6c,00,6c,00,2e,\
  00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Both"
(默认)
值为
REG\u EXPAND\u SZ
%SystemRoot%\system32\LaunchWinApp.exe“%1”

DelegateExecute
与此键相关:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad]
@="URL:Virtual Touchpad"
"EditFlags"=dword:00200000
"URL Protocol"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad\Shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad\Shell\Open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ms-virtualtouchpad\Shell\Open\Command]
@=hex(2):22,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4c,00,\
  61,00,75,00,6e,00,63,00,68,00,57,00,69,00,6e,00,41,00,70,00,70,00,2e,00,65,\
  00,78,00,65,00,22,00,20,00,22,00,25,00,31,00,22,00,00,00
"DelegateExecute"="{54058896-4775-4C34-8B62-789FB2E263A4}"
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{54058896-4775-4C34-8B62-789FB2E263A4}]
@="VirtualTouchpadFlow Class"

[HKEY_CLASSES_ROOT\CLSID\{54058896-4775-4C34-8B62-789FB2E263A4}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,00,77,00,\
  69,00,6e,00,75,00,69,00,2e,00,70,00,63,00,73,00,68,00,65,00,6c,00,6c,00,2e,\
  00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Both"
(默认)
值为
REG\u EXPAND\u SZ
%SystemRoot%\system32\twinui.pcshell.dll

因此,对于我的非UWP应用程序或脚本,我已经启用了它。然后问题就变成了将其关闭。因此,如果它是一个UWP应用程序,我假设我需要让它处于挂起状态,或者以某种方式发送它终止

关于
LaunchWinApp
我看不到太多的文档,我也没有注意到任何类似于
Close
/
Suspend
/
Terminate
的名称

我可以用另一种方式启动虚拟触摸板,但据我所知,目前还没有关于以编程方式启动虚拟触摸板的Q&A


我应该如何继续?

< P>这是一个C++操作代码示例,用于切换触摸板打开,对于任何感兴趣的人关闭。我相信你需要一个触摸屏来显示触摸板。我无法让它在我的触摸桌面上工作

#include <Windows.h>
#include <iostream>

int main()
{    
    ShellExecute(0, 0, "ms-virtualtouchpad:", 0, 0, SW_HIDE);
    Sleep(1500);

    HWND uwp_wnd = HWND();
    uwp_wnd = FindWindowEx(0, uwp_wnd, "ApplicationFrameWindow", 0);
    if (uwp_wnd)
    {
        HWND tpad_wnd = HWND();

        tpad_wnd = FindWindowEx(uwp_wnd, tpad_wnd, "Windows.UI.Core.CoreWindow", "Windows Shell Experience Host");
        if (tpad_wnd != 0)
        {
            SendMessage(tpad_wnd, WM_CLOSE, 0, 0);
            return 0;
        }
    }

    return 1;
}
#包括
#包括
int main()
{    
ShellExecute(0,0,“ms virtualtouchpad:”,0,0,SW_HIDE);
睡眠(1500);
HWND uwp_wnd=HWND();
uwp_wnd=FindWindowEx(0,uwp_wnd,“ApplicationFrameWindow”,0);
如果(uwp_wnd)
{
HWND tpad_wnd=HWND();
tpad_wnd=FindWindowEx(uwp_wnd,tpad_wnd,“Windows.UI.Core.CoreWindow”,“Windows Shell体验主机”);
如果(tpad_wnd!=0)
{
发送消息(tpad_wnd,WM_CLOSE,0,0);
返回0;
}
}
返回1;
}

@KayleeFrye\u onDeck,很抱歉回复晚了


最后,我可以启动ms virtualtouchpad。原因是我的设备在x64操作系统上运行,我的x86程序应该在
C:\Windows\Sysnative
下访问
LaunchWinApp.exe
,而不是像上面所说的
C:\Windows\System32
。那就行了!感谢您事先的研究

您应该能够创建自定义URI,然后稍后终止该进程。并不是说这一定是个好主意……这怎么可能,@petertorrmsft?我可能误解了你的指导意图
LaunchWinApp.exe
是用于启动UWP应用程序的进程,但LaunchWinApp不会持续,并且生成的进程(如COM代理)在杀死它们后不会关闭Windows虚拟触摸板。您应该能够执行任何已注册的方案处理程序。在我的机器上,我尝试了
Start->Run->ms virtualtrackpad:
,但什么也没发生,但是我的电脑上没有触摸屏。我没有看到这方面的文档,所以可能无论如何都不支持它。考虑在@ PeTrTrr.MSFT中提供反馈,我最终通过间谍+ +找到窗口和类名,并使用Win32 API来使用<代码> SeDeMeins>代码>。我不能通过这个代码运行(切换到)虚拟触摸板,但是隐藏/关闭它是有效的。<代码> ShellExecute(0, 0,“MS虚拟触摸板:”,0, 0,SWIOK HOLD);<代码>对我不起作用。@jeft。你能告诉我你用的是什么版本的Windows吗?当RedStone 3上线时,我以为它停止工作了,但我刚刚重建并在RS3 1709版(OS Build 16299.371)上成功运行了它;您可以通过运行
winver
Hi@kayleeFrye_onDeck快速获取此信息,我在OS Build 16299.371上运行了它,但它仍然无法工作。我也试过
WinExec()
system()
。两者都不起作用,甚至我运行了一个包含
启动ms virtualtouchpad:
的bat脚本。但是如果我手动单击运行一个包含
启动ms virtualtouchpad:
的bat脚本,它就可以启动了。不知道Windows 10如何阻止用户以编程方式启动它。