- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 WPF 和 C# 的新手。我在一个简单的 WPF 应用程序中使用 MediaElement 来播放循环视频,使用 Storyboard。
现在在这个项目中我遇到了一个大问题。 MediaElement 中播放的视频阻止屏幕保护程序启动。但就我而言,我需要正常的 Windows 行为。 (自动屏保和自动注销等。)
即使我的 MediaElement 中正在播放视频,我怎样才能让正常的屏幕保护程序再次出现?
代码很简单:主窗口:
<Window x:Name="BrutusView" x:Class="BRUTUS_Panel_View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BRUTUS_Panel_View"
mc:Ignorable="d"
Title="3nb BRUTUS Side Panel Player" Height="320" Width="256" HorizontalAlignment="Center" VerticalAlignment="Center" Left="0" Top="0" Deactivated="BrutusView_Deactivated" LostFocus="BrutusView_LostFocus" Loaded="BrutusView_Loaded" WindowStyle="ToolWindow" ResizeMode="CanResize" Icon="F:\Dokumente\Visual Studio 2015\Projects\BRUTUSConfig\BRUTUSConfig\3nb.ico" Topmost="True" ShowInTaskbar="False" ShowActivated="False" Visibility="Visible">
<Grid>
<MediaElement x:Name="myMediaElement" LoadedBehavior="Manual" HorizontalAlignment="Center" VerticalAlignment="Center" IsMuted="True" Stretch="UniformToFill">
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<MediaTimeline Source="C:\Animations\1.mp4" Storyboard.TargetName="myMediaElement" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
</Grid>
</Window>
C#:
using System;
using System.Linq;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Threading;
namespace BRUTUS_Panel_View
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void BrutusView_Loaded(object sender, RoutedEventArgs e)
{
}
private void BrutusView_Deactivated(object sender, EventArgs e)
{
BrutusView.Topmost = true;
}
private void BrutusView_LostFocus(object sender, RoutedEventArgs e)
{
BrutusView.Topmost = true;
}
}
}
最佳答案
Answer 包含两个解决方案:(i) 基于 UWP DisplayRequest
类,(ii) 基于更通用的自定义 ScreenSaverManager
类。
<强>1。 UWP DisplayRequest
类
Windows 提供直接方法来请求暂停屏幕保护程序并成功调用它保证屏幕保护程序不会因用户不活动而启动,即在媒体播放期间。可以使用再次启用屏幕保护程序的方法进行相反的操作。这两种方法在 Windows 10(UWP 运行时)中都可用,并且可以通过 Windows.System.Display.DisplayRequest
类访问。下面发布了如何在 UWP 应用程序之外(在 WPF 桌面应用程序中)使用它的示例。
在使用代码之前,有必要将以下引用添加到在 Visual Studio 中从模板创建的标准 WPF 应用程序:(i) Windows.winmd
来自目录:C:\Program文件 (x86)\Windows Kits\10\UnionMetadata
和 (ii) System.Runtime.WindowsRuntime.dll
来自目录:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5.1
(或 v4.5)。
在播放过程中挂起或启用屏幕保护 Hook 开始和停止播放事件到相关方法。
using System;
using System.Windows;
using System.Windows.Controls;
using Windows.System.Display;
namespace SuspendScreenSaverWpf
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private DisplayRequest mDisplayRequest;
public MainWindow()
{
InitializeComponent();
}
private void SuspendButton_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
try
{
if (mDisplayRequest == null)
{
// This call creates an instance of the displayRequest object
mDisplayRequest = new DisplayRequest();
}
}
catch (Exception ex)
{
this.MessageBoard.Content = $"Error Creating Display Request: {ex.Message}";
}
if (mDisplayRequest != null)
{
try
{
// This call activates a display-required request. If successful,
// the screen is guaranteed not to turn off automatically due to user inactivity.
mDisplayRequest.RequestActive();
this.MessageBoard.Content = $"Display request activated - ScreenSaver suspended";
this.EnableButton.IsEnabled = true;
this.SuspendButton.IsEnabled = false;
}
catch (Exception ex)
{
this.MessageBoard.Content = $"Error: {ex.Message}";
}
}
}
}
private void EnableButton_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
if (mDisplayRequest != null)
{
try
{
// This call de-activates the display-required request. If successful, the screen
// might be turned off automatically due to a user inactivity, depending on the
// power policy settings of the system. The requestRelease method throws an exception
// if it is called before a successful requestActive call on this object.
mDisplayRequest.RequestRelease();
this.MessageBoard.Content = $"Display request released - ScreenSaver enabled.";
this.SuspendButton.IsEnabled = true;
this.EnableButton.IsEnabled = false;
}
catch (Exception ex)
{
this.MessageBoard.Content = $"Error: {ex.Message}";
}
}
}
}
}
}
<Window x:Class="SuspendScreenSaverWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SuspendScreenSaverWpf"
mc:Ignorable="d"
Title="MainWindow ScreenSaver management demo" Height="350" Width="525">
<Grid>
<Button x:Name="SuspendButton" IsEnabled="true" Content="Suspend ScreenSaver" HorizontalAlignment="Left" Margin="73,250,0,0" VerticalAlignment="Top" Width="150" Click="SuspendButton_Click"/>
<Button x:Name="EnableButton" IsEnabled="False" Content="Enable ScreenSaver" HorizontalAlignment="Left" Margin="298,250,0,0" VerticalAlignment="Top" Width="150" Click="EnableButton_Click"/>
<Label x:Name="MessageBoard" Content="Example project demonstrating how to disable ScreenSaver on Windows 10" HorizontalAlignment="Left" Height="78" Margin="73,39,0,0" VerticalAlignment="Top" Width="375"/>
</Grid>
</Window>
有关引用程序集以访问 Windows 10 UWP API 的另一说明可在 UwpDesktop NuGet package 的网页上找到. UwpDesktop 包本身似乎不会在至少最近两次 Windows 10 Creators 更新期间得到维护,但如果针对 10.0.14393 API,它仍然有用。
有关如何从 C/C++ 代码使用此方法的示例,请参阅 SDL Library 的 repo
<强>2。自定义 ScreenSaverManager
类
问题中具有挑战性的部分与 System.Windows.Controls.MediaElement
控件的未记录行为有关,该控件在媒体播放期间暂停屏幕保护程序。尽管从用户观看电影的角度来看,防止激活屏幕保护程序是一个很好的做法,但有些应用程序并不理想。出于安全原因或当播放媒体不是最重要的应用程序功能时强制禁用屏幕保护程序或工作站锁定不是一个好的做法。 Microsoft 应该提供可用于控制此功能的公共(public)属性 o 方法。
为了避免任何黑客攻击,我尝试仅使用 Win32 和 .NET/WPF 公共(public) API 来解决问题。最简单但最有效的解决方案是基于创建我们自己的 ScreenSaverManager
,它复制操作系统功能并按需强制执行原始屏幕保护程序行为(自动屏幕保护程序和自动注销等 ).首先 ScreenSaverManager
读取当前 session 设置,并根据它们开始执行 session 策略绕过方法,这些方法用于阻止 MediaElement
的屏幕保护程序和 session 锁定。
using System;
using System.Timers;
namespace ManageScreenSaver.MediaElementWpf
{
public class ScreenSaverManager
{
private static ScreenSaverManager _Manager;
public static ScreenSaverManager Instance
{
get
{
if (_Manager != null)
return _Manager;
_Manager = new ScreenSaverManager();
return _Manager;
}
}
private TimeSpan _ScreenSaverTimeout;
private bool _IsScreenSaverSecure;
private Timer _Timer;
protected ScreenSaverManager()
{
_ScreenSaverTimeout = NativeMethods.ScreenSaverTimeout;
_IsScreenSaverSecure = NativeMethods.IsScreenSaverSecure;
_Timer = new Timer(_ScreenSaverTimeout.TotalMilliseconds/2);
_Timer.AutoReset = false;
_Timer.Elapsed += Timer_Elapsed;
_Timer.Start();
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
var lastInput = NativeMethods.GetLastUserInputTimeInterval();
MainWindow.Console.WriteLine($"Last user input interval: {lastInput}");
if (lastInput >= _ScreenSaverTimeout)
{
StartScreenSaver();
}
else
{
_Timer.Interval = _ScreenSaverTimeout.Subtract(lastInput).TotalMilliseconds + 100;
_Timer.Start();
}
}
private void StartScreenSaver()
{
if (_IsScreenSaverSecure)
{
NativeMethods.LockWorkStationSession();
}
else
{
var result = NativeMethods.SendMessage((IntPtr) 0xffff, (uint) WindowMessage.WM_SYSCOMMAND, (uint) WmSysCommandParam.ScSCREENSAVE, 0);
}
}
}
}
Interop 方法在单独的类 NativeMethods
中定义:
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
namespace ManageScreenSaver.MediaElementWpf
{
public static class NativeMethods
{
public const uint SPI_GETSCREENSAVETIMEOUT = 0x000E;
public const uint SPI_SETSCREENSAVETIMEOUT = 0x000F;
public const uint SPI_GETSCREENSAVEACTIVE = 0x0010;
public const uint SPI_SETSCREENSAVEACTIVE = 0x0011;
public const uint SPI_SETSCREENSAVERRUNNING = 0x0061;
public const uint SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING;
public const uint SPI_GETSCREENSAVERRUNNING = 0x0072;
public const uint SPI_GETSCREENSAVESECURE = 0x0076;
public const uint SPI_SETSCREENSAVESECURE = 0x0077;
public const uint SPIF_UPDATEINIFILE = 0x0001;
public const uint SPIF_SENDWININICHANGE = 0x0002;
public const uint SPIF_SENDCHANGE = SPIF_SENDWININICHANGE;
[DllImport("user32.dll", CallingConvention = CallingConvention.Winapi, PreserveSig = true, SetLastError = true)]
internal static unsafe extern bool SystemParametersInfo(uint uiAction, uint uiParam, void* pvParam, uint fWinIni);
[DllImport("user32.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true)]
internal static extern IntPtr DefWindowProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled);
[DllImport("user32.dll", SetLastError = true)]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
[DllImport("User32.dll", SetLastError = true)]
internal static extern int SendMessage(IntPtr hWnd, uint msg, uint wParam, uint lParam);
[DllImport("user32.dll", SetLastError = true)]
internal static extern bool LockWorkStation();
public static TimeSpan GetLastUserInputTimeInterval()
{
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = (uint)Marshal.SizeOf(lastInputInfo);
if (!GetLastInputInfo(ref lastInputInfo))
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
uint ticks = (uint)Environment.TickCount;
var idleMiliseconds = ticks - lastInputInfo.dwTime;
return idleMiliseconds > 0 ? TimeSpan.FromMilliseconds((double)idleMiliseconds) : default(TimeSpan);
}
public static void LockWorkStationSession()
{
if (!LockWorkStation())
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
public static bool IsScreenSaverActive
{
get
{
bool enabled = false;
unsafe
{
var result = SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, &enabled, 0);
if (!result)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
return enabled;
}
}
}
public static bool IsScreenSaverRunning
{
get
{
bool enabled = false;
unsafe
{
var result = SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &enabled, 0);
if (!result)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
return enabled;
}
}
}
public static bool IsScreenSaverSecure
{
get
{
bool enabled = false;
unsafe
{
var result = SystemParametersInfo(SPI_GETSCREENSAVESECURE, 0, &enabled, 0);
if (!result)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
return enabled;
}
}
}
public static TimeSpan ScreenSaverTimeout
{
get
{
int timeout = 0;
unsafe
{
var result = SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &timeout, 0);
if (!result)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
return TimeSpan.FromSeconds(timeout);
}
}
}
}
[Flags]
public enum WindowMessage : uint
{
WM_COMMAND = 0x0111,
WM_SYSCOMMAND = 0x0112,
}
public enum WmSysCommandParam : uint
{
ScSIZE = 0xF000,
ScMOVE = 0xF010,
ScMINIMIZE = 0xF020,
ScMAXIMIZE = 0xF030,
ScNEXTWINDOW = 0xF040,
ScPREVWINDOW = 0xF050,
ScCLOSE = 0xF060,
ScVSCROLL = 0xF070,
ScHSCROLL = 0xF080,
ScMOUSEMENU = 0xF090,
ScKEYMENU = 0xF100,
ScARRANGE = 0xF110,
ScRESTORE = 0xF120,
ScTASKLIST = 0xF130,
ScSCREENSAVE = 0xF140,
ScHOTKEY = 0xF150,
ScDEFAULT = 0xF160,
ScMONITORPOWER= 0xF170,
ScCONTEXTHELP = 0xF180,
ScSEPARATOR = 0xF00F,
}
}
最后有一个关于如何在 WPF 应用程序中使用 ScreenSaverManager
的例子:
<Window x:Class="ManageScreenSaver.MediaElementWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ManageScreenSaver.MediaElementWpf"
mc:Ignorable="d"
Title="MainWindow" Height="570" Width="550" MinHeight="570" MinWidth="550" MaxHeight="570" MaxWidth="550">
<Grid Margin="0,0,0,0">
<MediaElement x:Name="myMediaElement" Width="530" Height="270" LoadedBehavior="Manual" HorizontalAlignment="Center" VerticalAlignment="Center" IsMuted="True" Stretch="Fill" Margin="10,52,10,197" >
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<MediaTimeline Source="..\..\BigBuckBunny_320x180.mp4" Storyboard.TargetName="myMediaElement" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
<Button x:Name="SuspendButton" IsEnabled="true" Content="Suspend ScreenSaver" HorizontalAlignment="Left" Margin="74,489,0,0" VerticalAlignment="Top" Width="150" Click="SuspendButton_Click" RenderTransformOrigin="0.501,2.334"/>
<Button x:Name="EnableButton" IsEnabled="true" Content="Enable ScreenSaver" HorizontalAlignment="Left" Margin="302,489,0,0" VerticalAlignment="Top" Width="150" Click="EnableButton_Click" RenderTransformOrigin="0.508,1.359"/>
<Label x:Name="MessageBoard" Content="Example project demonstrating how to disable ScreenSaver on Windows 10" HorizontalAlignment="Left" Height="25" Margin="44,10,0,0" VerticalAlignment="Top" Width="432"/>
<TextBox x:Name="TextBox" Text="" HorizontalAlignment="Center" HorizontalContentAlignment="Left" Height="110" Margin="10,342,10,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="510"/>
</Grid>
</Window>
using System;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
using Windows.System.Display;
namespace ManageScreenSaver.MediaElementWpf
{
public partial class MainWindow : Window
{
private DisplayRequest mDisplayRequest;
internal static TextBoxWriter Console;
private static ScreenSaverManager _ScreenSaverManager;
public MainWindow()
{
InitializeComponent();
Console = new TextBoxWriter(this.TextBox);
_ScreenSaverManager = ScreenSaverManager.Instance;
PrintSSaverStatus(" MainWindow.ctor");
}
private void PrintSSaverStatus(string apendedText = "")
{
Console.WriteLine(GetScreenSaverStatusMessage() + apendedText);
}
private void SuspendButton_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
EnsureDisplayRequest();
if (mDisplayRequest != null)
{
try
{
// This call activates a display-required request. If successful,
// the screen is guaranteed not to turn off automatically due to user inactivity.
mDisplayRequest.RequestActive();
this.MessageBoard.Content = $"Display request activated - ScreenSaver suspended";
this.EnableButton.IsEnabled = true;
this.SuspendButton.IsEnabled = false;
}
catch (Exception ex)
{
this.MessageBoard.Content = $"Error: {ex.Message}";
}
PrintSSaverStatus(" SuspendButton_Click");
}
}
}
private void EnsureDisplayRequest()
{
try
{
if (mDisplayRequest == null)
{
// This call creates an instance of the displayRequest object
mDisplayRequest = new DisplayRequest();
}
}
catch (Exception ex)
{
this.MessageBoard.Content = $"Error Creating Display Request: {ex.Message}";
}
}
private void EnableButton_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
EnsureDisplayRequest();
if (mDisplayRequest != null)
{
try
{
// This call de-activates the display-required request. If successful, the screen
// might be turned off automatically due to a user inactivity, depending on the
// power policy settings of the system. The requestRelease method throws an exception
// if it is called before a successful requestActive call on this object.
mDisplayRequest.RequestRelease();
this.MessageBoard.Content = $"Display request released - ScreenSaver enabled.";
this.SuspendButton.IsEnabled = true;
this.EnableButton.IsEnabled = false;
}
catch (Exception ex)
{
this.MessageBoard.Content = $"Error: {ex.Message}";
}
PrintSSaverStatus(" EnableButton_Click");
}
}
}
private string GetScreenSaverStatusMessage()
{
string message = $"Screen Saver is: \"{{0}}\", \"{{1}}\", timeout: \"{{2}}\" {DateTime.UtcNow}";
message = String.Format(message,
NativeMethods.IsScreenSaverActive ? "active" : "inactive",
NativeMethods.IsScreenSaverSecure ? "secure" : "not secure",
NativeMethods.ScreenSaverTimeout);
return message;
}
}
}
仍然缺少 WPF 控制台的小实用程序:
using System;
using System.IO;
using System.Text;
using System.Windows.Controls;
namespace ManageScreenSaver.MediaElementWpf
{
public class TextBoxWriter : TextWriter
{
private TextBox _TextBox;
private string _NewLine = "\n";
public TextBoxWriter(TextBox target)
{
if (target == null)
throw new ArgumentNullException(nameof(target));
_TextBox = target;
}
public override Encoding Encoding => new UTF8Encoding(false);
public override string NewLine { get => _NewLine; set => _NewLine = value; }
public override void Write(string value)
{
_TextBox.Dispatcher.InvokeAsync(
() => _TextBox.AppendText(value)
);
}
public override void WriteLine(string value)
{
_TextBox.Dispatcher.InvokeAsync(
() => _TextBox.AppendText(value + NewLine)
);
}
}
}
注意:这不是生产就绪代码。有必要实现错误处理、系统和监视器电源事件处理、登录和注销处理:工作站 session 开始和结束、 session 屏幕保护程序配置更改。
此方法有一些限制,在通过 RDP 连接到远程计算机时不起作用,但在通过控制台连接到 Hyper-V 中的 Windows VM 时有效。
关于c# - 在媒体播放期间从 C# 中的 WPF 应用程序在 Windows 上启用屏幕保护程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063185/
我是 C 语言新手,我编写了这个 C 程序,让用户输入一年中的某一天,作为返回,程序将输出月份以及该月的哪一天。该程序运行良好,但我现在想简化该程序。我知道我需要一个循环,但我不知道如何去做。这是程序
我一直在努力找出我的代码有什么问题。这个想法是创建一个小的画图程序,并有红色、绿色、蓝色和清除按钮。我有我能想到的一切让它工作,但无法弄清楚代码有什么问题。程序打开,然后立即关闭。 import ja
我想安装screen,但是接下来我应该做什么? $ brew search screen imgur-screenshot screen
我有一个在服务器端工作的 UDP 套接字应用程序。为了测试服务器端,我编写了一个简单的 python 客户端程序,它发送消息“hello world how are you”。服务器随后应接收消息,将
我有一个 shell 脚本,它运行一个 Python 程序来预处理一些数据,然后运行一个 R 程序来执行一些长时间运行的任务。我正在学习使用 Docker 并且我一直在运行 FROM r-base:l
在 Linux 中。我有一个 c 程序,它读取一个 2048 字节的文本文件作为输入。我想从 Python 脚本启动 c 程序。我希望 Python 脚本将文本字符串作为参数传递给 c 程序,而不是将
前言 最近开始整理笔记里的库存草稿,本文是 23 年 5 月创建的了(因为中途转移到 onedrive,可能还不止) 网页调起电脑程序是经常用到的场景,比如百度网盘下载,加入 QQ 群之类的 我
对于一个类,我被要求编写一个 VHDL 程序,该程序接受两个整数输入 A 和 B,并用 A+B 替换 A,用 A-B 替换 B。我编写了以下程序和测试平台。它完成了实现和行为语法检查,但它不会模拟。尽
module Algorithm where import System.Random import Data.Maybe import Data.List type Atom = String ty
我想找到两个以上数字的最小公倍数 求给定N个数的最小公倍数的C++程序 最佳答案 int lcm(int a, int b) { return (a/gcd(a,b))*b; } 对于gcd,请查看
这个程序有错误。谁能解决这个问题? Error is :TempRecord already defines a member called 'this' with the same paramete
当我运行下面的程序时,我在 str1 和 str2 中得到了垃圾值。所以 #include #include #include using namespace std; int main() {
这是我的作业: 一对刚出生的兔子(一公一母)被放在田里。兔子在一个月大时可以交配,因此在第二个月的月底,每对兔子都会生出两对新兔子,然后死去。 注:在第0个月,有0对兔子。第 1 个月,有 1 对兔子
我编写了一个程序,通过对字母使用 switch 命令将十进制字符串转换为十六进制,但是如果我使用 char,该程序无法正常工作!没有 switch 我无法处理 9 以上的数字。我希望你能理解我,因为我
我是 C++ 新手(虽然我有一些 C 语言经验)和 MySQL,我正在尝试制作一个从 MySQL 读取数据库的程序,我一直在关注这个 tutorial但当我尝试“构建”解决方案时出现错误。 (我正在使
仍然是一个初学者,只是尝试使用 swift 中的一些基本函数。 有人能告诉我这段代码有什么问题吗? import UIKit var guessInt: Int var randomNum = arc
我正在用 C++11 编写一个函数,它采用 constant1 + constant2 形式的表达式并将它们折叠起来。 constant1 和 constant2 存储在 std::string 中,
我用 C++ 编写了这段代码,使用运算符重载对 2 个矩阵进行加法和乘法运算。当我执行代码时,它会在第 57 行和第 59 行产生错误,非法结构操作(两行都出现相同的错误)。请解释我的错误。提前致谢:
我是 C++ 的初学者,我想编写一个简单的程序来交换字符串中的两个字符。 例如;我们输入这个字符串:“EXAMPLE”,我们给它交换这两个字符:“E”和“A”,输出应该类似于“AXEMPLA”。 我在
我需要以下代码的帮助: 声明 3 个 double 类型变量,每个代表三角形的三个边中的一个。 提示用户为第一面输入一个值,然后 将用户的输入设置为您创建的代表三角形第一条边的变量。 将最后 2 个步
我是一名优秀的程序员,十分优秀!