gpt4 book ai didi

c# - 为什么我不能更改代码中的音量?

转载 作者:行者123 更新时间:2023-12-03 02:33:58 26 4
gpt4 key购买 nike

我正在尝试以编程方式更改 PC 上的音量,但使用此代码没有得到任何结果,我在此处遵循了另一个答案(How to programmatically set the system volume?)来执行此操作。没有错误,但是当我调用该函数时没有任何 react ,有人可以帮忙吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace UnRestrict.Forms
{

static class Sounds
{
//hexidecimal values for the values needed
private const int VOLUP = 0xA0000;
private const int VOLDOWN = 0x90000;
private const int VOLMUTE = 0x80000;
private const int APPCMND = 0x319;

[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

public static void VolumeUp()
{
SendMessageW(IntPtr.Zero, APPCMND, IntPtr.Zero, (IntPtr) VOLUP);
}

public static void VolumeDown()
{
SendMessageW(IntPtr.Zero, APPCMND, IntPtr.Zero, (IntPtr)VOLDOWN);
}

public static void VolumeMute()
{
SendMessageW(IntPtr.Zero, APPCMND, IntPtr.Zero, (IntPtr)VOLMUTE);
}

}
}

最佳答案

我修好了,我在某个地方读到了 SendMessageW()hwnd 没有任何作用和 wParam参数,你可以传递一个空指针(IntPtr.Zero)没有问题。这就是我错的地方。我将 IntPtr.Zero 值更改为 Process.GetCurrentProcess().Handle现在一切都很好!

奇怪的是,返回的值仍然不是“1”,但我也读到这可能是正常的。

最终代码:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UnRestrict.Forms
{

static class Sounds
{
//hexidecimal values for the values needed
private const int VOLUP = 0xA0000;
private const int VOLDOWN = 0x90000;
private const int VOLMUTE = 0x80000;
private const int APPCMND = 0x319;

[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

public static void VolumeUp()
{
int val = (Int32)SendMessageW(Process.GetCurrentProcess().Handle, APPCMND, Process.GetCurrentProcess().Handle, (IntPtr)VOLUP);
}

public static void VolumeDown()
{
SendMessageW(Process.GetCurrentProcess().Handle, APPCMND, Process.GetCurrentProcess().Handle, (IntPtr)VOLDOWN);
}

public static void VolumeMute()
{
SendMessageW(Process.GetCurrentProcess().Handle, APPCMND, Process.GetCurrentProcess().Handle, (IntPtr)VOLMUTE);
}

}
}

关于c# - 为什么我不能更改代码中的音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com