gpt4 book ai didi

vb.net - 模块中的 Me.Handle - 替代方案?

转载 作者:行者123 更新时间:2023-12-02 22:49:42 25 4
gpt4 key购买 nike

我目前正在编程,但遇到了一个小问题,即:

使用 Me.Handle在将用作 CodeDom-Compiler 源的模块中。

我想要或者更确切地说需要在以下过程中使用它:

Private Const APPCOMMAND_VOLUME_MUTE As Integer = &H80000
Private Const WM_APPCOMMAND As Integer = &H319
Declare Function SendMessageW Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

Private Sub Mute()
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, CType(APPCOMMAND_VOLUME_MUTE, IntPtr))
End Sub

你明白了,我想静音系统声音。我或多或少在寻找某种做事方式
这没有使用 Me.Handle ,因为由于某种原因它在我的模块中不起作用......

任何帮助表示赞赏,在此先感谢大家!

最佳答案

SendMessage 需要一个表单句柄,而您在模块或标准类中没有该句柄。

三个选项可以传递对这样一个表单的引用:

Private Sub Mute(formRef As Form)
SendMessageW(formRef.Handle, WM_APPCOMMAND, formRef.Handle, CType(APPCOMMAND_VOLUME_MUTE, IntPtr))
End Sub

或者使用集合中第一个表单的句柄:
Private Sub Mute()
SendMessageW(Application.OpenForms(0).Handle, WM_APPCOMMAND, Application.OpenForms(0).Handle, CType(APPCOMMAND_VOLUME_MUTE, IntPtr))
End Sub

或者使用对 MainWindowHandle 的引用:
Private Sub Mute()
SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, CType(APPCOMMAND_VOLUME_MUTE, IntPtr))
End Sub

关于vb.net - 模块中的 Me.Handle - 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445769/

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