我想编写Windows服务(在c#中)或PowerShell脚本,将我的笔记本电脑自动连接(启动或组合键合)到我的MS无线显示适配器以进行屏幕镜像。在Windows 10中,我只能通过转到通知手动执行此操作,然后单击连接> MS无线适配器>连接。
我发现有一个Miracast API(https://msdn.microsoft.com/en-us/library/windows/hardware/dn265515(v=vs.85).aspx),但没有太多关于如何使用它的文档。
我也发现了这个http://filelog.net/file/MiraDisp.dll/2c279c8d57a47a9ca06aa279bd9e0e8e22c7c1c1,并且有两个函数OpenMiracastSession和CloseMiracastSession。
问题是我不知道如何在c#中使用这些函数。我知道我可能不得不使用pInvoke。有人能指出我正确的方向吗?
答案 0 :(得分:6)
首先,感谢@CodingGorilla对AutoHotkey的建议。在过去的几天里,我一直在玩这个游戏。
我使用了AutoHotkey路线,因为我找不到任何Windows 10 API的简单起点。各种各样的文件推送吐司通知,但我找不到任何控制行动中心的东西。 如果有人就此提出建议,请发布。
以下是我使用AutoHotkey的想法。非常简单但不是理想的解决方案,因为有一些变量。下面是我用来打开操作中心的AutoHotkey脚本代码,单击连接,然后单击列出最顶层的无线显示:
td
我还附上图片作为我所做的一个例子。 您需要制作自己的搜索图片。在制作这些图像之前,您还必须关闭操作中心的透明度,Windows 10中的“开始”和“任务栏” - “设置” - >“个性化 - &gt;颜色 - >开始,任务栏和操作中心透明 - &gt;关闭< / strong>即可。特别重要的是重做第二张图像作为我的图像列表&#34; Roku Stick&#34;在图像内。我不得不在我的桌面开发机器和MS Surface 3之间重做我的搜索图像。我正在运行这个脚本。决议等将在设备之间改变。按照如何在此处创建自己的搜索图像的说明进行操作:
https://autohotkey.com/docs/commands/ImageSearch.htm
最后,如果无线显示器已经连接,这可能不会起作用。在我的环境中连接无线显示器会导致平板电脑上的分辨率发生变化,因此无法在屏幕上找到图像。
答案 1 :(得分:5)
首先,我想说@jaredbaszler提供了一个非常好的解决方案。它像魅力一样工作,谢谢你:))
我也在玩AutoHotkey,因为我想知道是否有另一种方法可以做到这一点。过了一会儿,我想出了以下脚本:
Send #k ; Sends Windows button + K to open the Action Center Connect window
Sleep, 3000 ; Wait some time so the wireless display dongle can be found
Send {Enter} ; Send ENTER key to connect to wireless display dongle (works when only 1 is found)
Send {Esc} ; Send ESC key to close the Action Center Connect window
确定。现在让我解释一下这个脚本是如何工作的:
嗯,就是这样。这没什么特别但它有效。我已经使用我的平板电脑和无线显示加密狗(我有一个here)测试了这个脚本几次,它似乎工作得很好。 不幸的是,如果您同时启动并运行多个无线显示加密狗,我的脚本将无法按预期工作,因为我的脚本将只选择显示的第一个加密狗。 (这对我来说不是问题,因为我只有一个无线显示加密狗)
答案 2 :(得分:2)
这个问题有点老了,但目前我遇到了同样的问题。
我建议根据Advanced casting sample中的示例5 + 6使用ProjectionManager
类编写UWP App。
基本步骤是:
DevicePicker
类进行选择)ProjectionManager.StartProjectingAsync(newViewId, currentViewId, selectedDeviceInformation)
开始投影可以使用获取的(和保存的)deviceId调用DeviceInformation
来获取DeviceInformation.CreateFromIdAsync()
对象。
投影无论如何都可以将viewIds设置为0(或其他无效值)。
如果开始投影,则可以关闭该应用,而投影仍保持活动状态。
如果有人对该解决方案感兴趣,我会将代码上传到GitHub。
答案 3 :(得分:2)
这是我编写的AutoHotKey脚本;
Run, explorer.exe ms-settings-connectabledevices:devicediscovery
Sleep, 800
Send, {Tab}
Send,+{Tab}
Send,{Enter}
Sleep, 200
; then next Send command types the first few letters of the name of the WiDi adaptor
Send, Microsoft
Sleep, 200
Send, {Tab}
Sleep, 200
Send, {Enter}
答案 4 :(得分:0)
要自动化和控制Miracast,您想使用UWP
名称空间和Windows Universal Samples编写一个Windows.Media.Casting
应用。
它们可以用许多通用语言编写,包括C#,C ++,Javascript和Visual Basic。
Windows提供了两组功能示例程序,以演示您可以使用Miracast进行的操作,这些功能可以作为Visual Studio解决方案(.sln)打开和启动。
由于UWP应用旨在在Windows应用商店中提供,因此它们具有特定的功能要求和法规。 (我建议研究这些。)
也避免了我在开始编写通用程序,然后想知道Universal Windows库在哪里时遇到的陷阱:
答案 5 :(得分:0)
我最终从这里使用了基于 vbs 的解决方案: https://superuser.com/questions/1062789/how-to-connect-to-a-wireless-display-adapter-automatically-through-scripts-or-ta
虽然它基本上执行相同的步骤,但我发现它比其他解决方案更强大。更重要的是,vbs 在大多数 Win 机器上都可用(我认为)。