远程桌面退出全屏/不能全屏/全屏切换的技巧 笔记本电脑没有Break键怎么办?

在使用Windows远程桌面功能时,有时候为了操作方便,我们希望它全屏,也不显示下图的浮动工具栏:
这里写图片描述
如何设置为不显示上图的浮动工具栏呢?
连接前设置一下显示选项卡,去掉“全屏显示时显示连接栏”的勾选状态。
这里写图片描述
有连接栏的情况可以通过点击左侧的按钮控制它是自动隐藏还是始终显示。
这里写图片描述

进入正题
当你点了最大化(向下还原)按钮后,再怎么点都回不到全屏状态了,应该怎么办呢?
又或是你去掉了“全屏显示时显示连接栏”的勾选状态,没有连接栏了,无法退出全屏状态了,应该怎么办呢?

方法是按下“Ctrl+Alt+Break”组合键;

不错,这个对于用普通键盘的用户确实管用!
但是我用的是笔记本啊,找不到Break键在哪,键盘上根本就没有,
我就郁闷了,各种组合键的尝试,还是没有找到!

还是求助于搜索引擎吧!
Fn键的功能很强大啊,可以通过“Fn+b”键实现Break键的功能;

用笔记本的同学,方法是按下“Ctrl+Alt+Fn+b”组合键;

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要在 C# WinForms 应用程序中录制全屏视频,可以使用 Windows API 中的 GDI+ 和 DirectShow 库。下面是一个简单的示例代码,演示如何使用 GDI+ 和 DirectShow 来录制全屏视频: ```csharp using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; using DirectShowLib; namespace ScreenRecorder { public partial class MainForm : Form { private IFilterGraph2 filterGraph; private ISampleGrabber sampleGrabber; private IMediaControl mediaControl; private IBaseFilter grabberFilter; private int stride; public MainForm() { InitializeComponent(); stride = 4 * ((Screen.PrimaryScreen.Bounds.Width * 32 + 31) / 32); } private void button_start_Click(object sender, EventArgs e) { // 创建 FilterGraph 对象 filterGraph = (IFilterGraph2)new FilterGraph(); // 创建 SampleGrabber 对象 sampleGrabber = (ISampleGrabber)new SampleGrabber(); // 设置 SampleGrabber 参数 AMMediaType mediaType = new AMMediaType(); mediaType.majorType = MediaType.Video; mediaType.subType = MediaSubType.RGB32; mediaType.formatType = FormatType.VideoInfo; sampleGrabber.SetMediaType(mediaType); sampleGrabber.SetBufferSamples(true); // 添加 SampleGrabber 到 FilterGraph 中 grabberFilter = (IBaseFilter)sampleGrabber; filterGraph.AddFilter(grabberFilter, "Grabber"); // 枚举视频输入设备,选择第一个全屏设备 DsDevice[] devices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); for (int i = 0; i < devices.Length; i++) { if (devices[i].Name.ToLower().Contains("screen capture")) { // 创建 VideoCapture 对象,并将其添加到 FilterGraph 中 IBaseFilter videoCapture = (IBaseFilter)new VideoCapture(); filterGraph.AddFilter(videoCapture, "Video Capture"); // 连接 VideoCapture 和 SampleGrabber IPin captureOut = DsFindPin.ByDirection(videoCapture, PinDirection.Output, 0); IPin grabberIn = DsFindPin.ByDirection(grabberFilter, PinDirection.Input, 0); filterGraph.Connect(captureOut, grabberIn); // 设置采集视频的大小和位置 VideoInfoHeader videoInfo = new VideoInfoHeader(); videoInfo.BmiHeader.Width = Screen.PrimaryScreen.Bounds.Width; videoInfo.BmiHeader.Height = Screen.PrimaryScreen.Bounds.Height; videoInfo.BmiHeader.BitCount = 32; videoInfo.BmiHeader.Compression = 0; videoInfo.BmiHeader.ImageSize = videoInfo.BmiHeader.Width * videoInfo.BmiHeader.Height * videoInfo.BmiHeader.BitCount / 8; videoInfo.BmiHeader.Planes = 1; videoInfo.AvgTimePerFrame = 333333; sampleGrabber.SetMediaType(mediaType); sampleGrabber.GetConnectedMediaType(mediaType); Marshal.PtrToStructure(mediaType.formatPtr, videoInfo); videoInfo.SrcRect.Right = videoInfo.SrcRect.Left + Screen.PrimaryScreen.Bounds.Width; videoInfo.SrcRect.Bottom = videoInfo.SrcRect.Top + Screen.PrimaryScreen.Bounds.Height; videoInfo.TargetRect.Right = videoInfo.TargetRect.Left + Screen.PrimaryScreen.Bounds.Width; videoInfo.TargetRect.Bottom = videoInfo.TargetRect.Top + Screen.PrimaryScreen.Bounds.Height; sampleGrabber.SetMediaType(mediaType); sampleGrabber.SetOneShot(false); sampleGrabber.SetBufferSamples(true); sampleGrabber.SetCallback(new SampleGrabberCallback(this)); sampleGrabber.SetMediaType(mediaType); sampleGrabber.GetConnectedMediaType(mediaType); Marshal.StructureToPtr(videoInfo, mediaType.formatPtr, false); sampleGrabber.SetMediaType(mediaType); // 创建 MediaControl 对象,并开始录制 mediaControl = (IMediaControl)filterGraph; mediaControl.Run(); break; } } } private void button_stop_Click(object sender, EventArgs e) { // 停止录制 if (mediaControl != null) mediaControl.Stop(); // 释放资源 if (mediaControl != null) Marshal.ReleaseComObject(mediaControl); if (grabberFilter != null) Marshal.ReleaseComObject(grabberFilter); if (sampleGrabber != null) Marshal.ReleaseComObject(sampleGrabber); if (filterGraph != null) Marshal.ReleaseComObject(filterGraph); } private class SampleGrabberCallback : ISampleGrabberCB { private MainForm parent; private Bitmap bitmap; public SampleGrabberCallback(MainForm parent) { this.parent = parent; } public int SampleCB(double sampleTime, IMediaSample sample) { return 0; } public int BufferCB(double sampleTime, IntPtr buffer, int bufferLength) { // 将采集到的视频数据转换为位图 if (bitmap == null) bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, parent.stride, System.Drawing.Imaging.PixelFormat.Format32bppRgb, buffer); else bitmap = new Bitmap(bitmap.Width, bitmap.Height, parent.stride, System.Drawing.Imaging.PixelFormat.Format32bppRgb, buffer); // 在窗口中显示录制的视频 parent.pictureBox.Image = bitmap; return 0; } } } } ``` 在上面的示例代码中,我们创建了一个 MainForm 窗口,并在窗口中添加了两个按钮和一个 PictureBox 控件。单击“开始”按钮时,程序会枚举视频输入设备,并选择第一个全屏设备。然后,程序会创建 FilterGraph 对象,并将 VideoCapture 和 SampleGrabber 添加到其中。最后,程序会创建 MediaControl 对象,并开始录制视频。单击“停止”按钮时,程序会停止录制,并释放所有资源。 需要注意的是,上面的代码只是一个简单的示例,可能存在一些问题。例如,程序可能无法正确识别视频输入设备,或者无法正确处理某些视频格式。如果您想要实现更高级的功能,可以参考 MSDN 上的相关文档,或者使用开源的视频录制库(如 FFmpeg)。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值