相关疑难解决方法(0)

如何从PowerShell中静音/取消静音

尝试编写一个PowerShell cmdlet,它将在开始时静音,除非已经静音,并在最后取消静音(仅当它没有静音时才开始).找不到我可以使用的任何PoweShell或WMI对象.我正在使用像auxGetVolumeauxSetVolume这样的Win32函数,但是无法让它工作(如何从IntPtr中读取值?).

我正在使用V2 CTP2.有什么想法吗?

谢谢!

powershell winapi volume mute

18
推荐指数
6
解决办法
4万
查看次数

Web浏览器禁用所有音频输出 - 从在线广播到youtube

我的网络浏览器:

XAML:

//...
xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
//...
<my:WindowsFormsHost Name="windowsFormsHost"/>
Run Code Online (Sandbox Code Playgroud)

C#背后的代码:

System.Windows.Forms.WebBrowser Browser = new System.Windows.Forms.WebBrowser();
windowsFormsHost.Child = Browser;
Run Code Online (Sandbox Code Playgroud)

我的问题是如何禁用所有音频输出.

我找到了这个:

C#:

private const int Feature = 21; //FEATURE_DISABLE_NAVIGATION_SOUNDS
private const int SetFeatureOnProcess = 0x00000002;

[DllImport("urlmon.dll")]
[PreserveSig]
[return: MarshalAs(UnmanagedType.Error)]
static extern int CoInternetSetFeatureEnabled(int featureEntry,
  [MarshalAs(UnmanagedType.U4)] int dwFlags, 
  bool fEnable);
Run Code Online (Sandbox Code Playgroud)

它很好,但是这段代码只能禁用"咔嗒"声,所以在这种情况下它的那种无用.

我只想从我的应用程序100%静音,没有声音.

我已经读过,在这个webbrowser中,它需要通过Windows Sounds来完成,但我真的不知道我在代码中无法做到这一点.

c# browser wpf

11
推荐指数
1
解决办法
5718
查看次数

什么是P/Invoke使用的"APPCOMMAND"变量?

我正在StackOverflow上搜索,找到了C#中静音音量的答案.我不明白答案是怎么回事.我从来没有深入到Marshaling或P/Invoke.我之前使用过它们但从未明白我在做什么.

所以这就是我困惑的事情:

private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;
Run Code Online (Sandbox Code Playgroud)
  • 在声明这些内容时,它们的名称是否重要,或者它们只是被视为任何整数,无论​​它们被称为什么?

  • 你在哪里的价值观0x800000x319从何而来?

c# pinvoke sendmessage

7
推荐指数
1
解决办法
868
查看次数

如何检查系统主卷是静音还是取消静音?

我正在使用此代码来静音/取消静音系统主音量:

const
  APPCOMMAND_VOLUME_MUTE = $80000;
  WM_APPCOMMAND = $319;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // toggle mute/unmute
  SendMessageW(Handle, WM_APPCOMMAND, Handle, APPCOMMAND_VOLUME_MUTE);
end;
Run Code Online (Sandbox Code Playgroud)

(从/sf/answers/10788991/获取代码)

它在XP上工作正常(还没有在Win7上测试它).
我需要一种方法来检查(获取)当前的"静音"状态?它是否静音.
有任何想法吗?


更新:对于XP,我最终使用了这里的代码:如何在Windows XP中获取主卷?(感谢@Sertac Akyuz)

我不得不改变一行:

mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
Run Code Online (Sandbox Code Playgroud)

至:

mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
Run Code Online (Sandbox Code Playgroud)

返回值为0(不是静音)或1(静音).

delphi winapi volume

6
推荐指数
1
解决办法
3956
查看次数

为什么WM_APPCOMMAND LPARAM必须乘以65536

我正在尝试控制主音量.我能够成功地做到这一点:

HWND mainhwnd = CreateWindow(szWindowClass, _T("window-noit-ext-profilist"), 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, wcex.hInstance, NULL);
if (!mainhwnd) {
    MessageBox(NULL, _T("Profilist: Call to CreateWindow failed!"), _T("window-noit-ext-profilist"), NULL);
    return 1;
}


SendMessage(mainhwnd, WM_APPCOMMAND, (WPARAM)mainhwnd, (LPARAM)(APPCOMMAND_VOLUME_MUTE * 65536)); // mute

SendMessage(mainhwnd, WM_APPCOMMAND, (WPARAM)mainhwnd, (LPARAM)(APPCOMMAND_VOLUME_DOWN * 65536)); // vol down

SendMessage(mainhwnd, WM_APPCOMMAND, (WPARAM)mainhwnd, (LPARAM)(APPCOMMAND_VOLUME_UP * 65536)); // vol up
Run Code Online (Sandbox Code Playgroud)

为什么我要乘以65,536?文档没有说明这一点.如果我不繁殖,那么它不起作用.

winapi

3
推荐指数
1
解决办法
394
查看次数

如果explorer.exe没有运行,可以使用SendMessageW(...)?

我正在尝试使用标准SendMessageW() 方法从控制台应用程序取消静音.但是,我们有自己的应用程序作为shell运行,而不是explorer.exe.当我试图取消静音时,没有任何反应; 但是一旦我启动资源管理器它就可以了.是否必须运行资源管理器才能发送消息?
码:

private const int APPCOMMAND_VOLUME_MUTE = 0x80000; 
private const int WM_APPCOMMAND = 0x319;
SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
Run Code Online (Sandbox Code Playgroud)

返回值为SendMessageW()0.
如果需要资源管理器,是否有人知道另一种取消静音方法?

Side Note
我刚刚尝试使用vbs:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
Run Code Online (Sandbox Code Playgroud)

并得到了相同的结果.只有在explorer.exe运行时才取消静音.

c# explorer message-queue sendmessage

0
推荐指数
1
解决办法
948
查看次数