2017-10-17 216 views
0

我试图弄清楚如何通过C++ /#或Windows脚本以编程方式启动Windows 10附带的新虚拟触控板,该虚拟触控板应该是通用Windows平台应用程序。以编程方式切换Windows虚拟触控板/触控板

后一些注册表黑客,我想通了,我可以启动触摸板利用launch behavior with registered protocols,就像这样:

"%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}" 

(Default)值为REG_EXPAND_SZ"%SystemRoot%\system32\LaunchWinApp.exe" "%1"

T帽子DelegateExecute是与此相关的关键:

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,我可以看到,我没有注意到任何类似的命名为Close/Suspend/Terminate

我很好地以另一种方式启动虚拟触摸板,但据我所知,目前还没有Q & A甚至以编程方式启动。

我该如何继续?

+0

你应该只能够['ShellExecuteEx'(https://msdn.microsoft.com/en-us/library/windows/desktop/bb762154(V = vs.85)的.aspx)的自定义URI,然后稍后终止该过程。这并不是说这是一个好主意...... –

+0

@ PeterTorr-MSFT怎么可能?我可能误解了你的教学意图。 'LaunchWinApp.exe'是用于启动UWP应用程序的过程,但LaunchWinApp不会持续,并且有些被屏蔽的生成过程(如COM代理)在杀死它们之后不会关闭Windows虚拟触摸板。 –

+0

您应该能够执行任何注册方案处理程序。在我的机器上,我尝试了'开始 - >运行 - > ms-virtualtrackpad:'并没有发生任何事情,但是在这台PC上没有触摸屏。我没有看到这个记录,所以它可能不会被支持。考虑在http://wpdev.uservoice.com上提供反馈 –

回答

0

下面是一个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; 
} 
相关问题