首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式切换Windows虚拟Touchpad / Trackpad

以编程方式切换Windows虚拟Touchpad / Trackpad
EN

Stack Overflow用户
提问于 2017-10-17 23:43:03
回答 2查看 672关注 0票数 2

我试图弄清楚如何通过C++/#或Windows脚本以编程方式启动Windows 10附带的新的Virtual,Windows 10本应是一个通用Windows平台应用程序。

经过一些注册黑客攻击之后,我发现我可以启动Touchpad,利用已注册协议的启动行为,如下所示:

"%SystemRoot%\system32\LaunchWinApp.exe" "ms-virtualtouchpad:"

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

代码语言:javascript
复制
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}"

它的(Default)值是REG_EXPAND_SZ"%SystemRoot%\system32\LaunchWinApp.exe" "%1"

DelegateExecute与此键相关:

代码语言:javascript
复制
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"

它的(Default)值是REG_EXPAND_SZ%SystemRoot%\system32\twinui.pcshell.dll

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

我所看到的关于LaunchWinApp的文档并不多,我也没有注意到任何类似于LaunchWinApp的名字

我很乐意以另一种方式启动Virtual,但据我所知,目前还没有以编程方式发布的问答。

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-04 01:29:31

这里有一个C++工作代码示例,用于切换触控板打开,关闭为任何感兴趣的人。我相信你需要一个触控显示器才能让触控板出现。我一直无法让它在我的非接触式桌面上工作。

代码语言:javascript
复制
#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;
}
票数 2
EN

Stack Overflow用户

发布于 2018-05-24 10:10:08

@KayleeFrye_onDeck,很抱歉回复得太晚了。

最后,我可以启动ms虚拟触摸屏。原因是我的设备运行在x64操作系统上,我的x86程序应该访问C:\Windows\Sysnative下的LaunchWinApp.exe,而不是这里所说的C:\Windows\System32。这样就行了!谢谢你事先的研究!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46800770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档