sieben
그는 물었다 12년 전
27

39, & # 39 웨브로저 비활성화합니다 Sound& 따라하기 name 을 클릭합니다. in your app 만

39, & # 39 는 sound& 클릭합니다. 실제로 시스템에 문제가 있는 와이드 기본 도왔으매 싶단 비활성화해야 redhat. 응용 프로그램 종료 후 때 우리 언제 애플리케이션 포커스가 재활성화할 / 유실됩니다 초점을 맞춥니다.

원래, 내가 하고 싶은 일, 여기 있는 이 질문을 스택 오버플로 하지만 제가 아직 베타. 그래서 구글링 답변 및 it 에 대한 정보를 찾기 위해 뒤에을 조금 지었지 만 하고 난 다음, 여기에 게시물로의 이제 I& # 39 만 베타.

using System;
using Microsoft.Win32;

namespace HowTo
{
    class WebClickSound
    {
        /// <summary>
        /// Enables or disables the web browser navigating click sound.
        /// </summary>
        public static bool Enabled
        {
            get
            {
                RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current");
                string keyValue = (string)key.GetValue(null);
                return String.IsNullOrEmpty(keyValue) == false && keyValue != "\"\"";
            }
            set
            {
                string keyValue;

                if (value)
                {
                    keyValue = "%SystemRoot%\\Media\\";
                    if (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor > 0)
                    {
                        // XP
                        keyValue += "Windows XP Start.wav";
                    }
                    else if (Environment.OSVersion.Version.Major == 6)
                    {
                        // Vista
                        keyValue += "Windows Navigation Start.wav";
                    }
                    else
                    {
                        // Don't know the file name so I won't be able to re-enable it
                        return;
                    }
                }
                else
                {
                    keyValue = "\"\"";
                }

                // Open and set the key that points to the file
                RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current", true);
                key.SetValue(null, keyValue,  RegistryValueKind.ExpandString);
                isEnabled = value;
            }
        }
    }
}

위의 코드에서 양식을 다음 주 에 우리가 사용하는 이 3 가지 이벤트:

  • 활성화됨
  • 비활성화되었습니다
  • 포르마크로싱

private void Form1_Activated (object sender, 브렌타리스 e) { 이 프로그램은 사운드 비활성화합니다 때 포커스가 // 웹클릭소운스나블데 = false; }

private void Form1_Deactivate (object sender, 브렌타리스 e) { 이 프로그램은 때 사운드를 활성화하십시오 초점이 // 웹클릭소운스나블데 = true. }

private void Form1_FormClosing (object sender, 포르마크로싱번타리스 e) { App 의 사운드 활성화하십시오 종료하십시오 // 웹클릭소운스나블데 = true. }

내가 보고 있는 한 가지 문제는 그들이 만약 프로그램이 없는 won& # 39 는 현재 충돌, 클릭 사운드의 새로운 오픈 보살피되 그들이 내 애플리케이션, 그들은 wouldn& # 39, 그렇게 할 수 있을지 알 수 없다.

뭘 보세요들 것 아닐까요? 이 방법은 좋은 해결책입니까? 어떤 개선 효과를 볼 수 있었다.

Cristo
그는 7년 전 댓글을 달았습니다
0

내가 선 이 문제가 있었다. 이젠베르트 = value.

39, ve 그냥 i& 그런이야길 되어 있다고 하지만 무슨 말을 했는지

답변 5 개

const int FEATURE_DISABLE_NAVIGATION_SOUNDS = 21;
const int SET_FEATURE_ON_PROCESS = 0x00000002;

[DllImport("urlmon.dll")]
[PreserveSig]
[return: MarshalAs(UnmanagedType.Error)]
static extern int CoInternetSetFeatureEnabled(int FeatureEntry,
                                              [MarshalAs(UnmanagedType.U4)] int dwFlags,
                                              bool fEnable);

static void DisableClickSounds()
{
    CoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS,
                                SET_FEATURE_ON_PROCESS,
                                true);
}

Markus Safar
Rajeev
그는 9년 전 댓글을 달았습니다
2

사실은 이 +1 의 InterOp 방식으로 작동합니다!

blez
그는 9년 전 댓글을 달았습니다
0

Thank you I, 필요한 이유다.

Josh
그는 8년 전 댓글을 달았습니다
1

이 같은 놀라운 매력, 그리고 오직 비활성화합니다 작동됨 딱 네 앱과 doesn& # 39 의존하고, t 형 초점을 맞춥니다.

m.qayyum
그는 7년 전 댓글을 달았습니다
0

니스 (nice) 솔루션, 작동됨 완벽하게.

39, ve i& 웨브로스리도쿠멘스트라이트 웨브로스리도쿠멘테스트 doesn& # 39 를 사용하는 경우 그 사실을 알고 아닌 사운드, t 일어날 수 있습니다.

그래서 대신 이:

webBrowser1.DocumentText = "<h1>Hello, world!</h1>";

이거 드세요.

webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write("<h1>Hello, world!</h1>");

Stefan Koell
그는 11년 전 댓글을 달았습니다
2

그러나 할 수 있는 노이즈를 on the other side 를 너회의 제안됩니다 제어 솔루션을 통해 이 문제를 집중 외곽진입 등으로 인해 심각한 제어할 수 있습니다. 내 경우 웨브로저 제어입니다 뒤로를 도루 부문 끝에 루프지 이벤트 # 39 의 there& 최대한 내가 말할 수 있는 문제에 대한 해결 방법이 없습니다. 저의 경우는 내가 필요한 afaq 백됩니다 도쿠멘테스트 솔루션 - 그래도 I& 찾고 있는 비활성화하기 # 39 m, 귀찮게 사운드. 다른 생각?

Stefan Koell
그는 11년 전 댓글을 달았습니다
2

방금 알았고, 그 제임스랬나 여기있을 스레드할: ie7 과 ie8 위한 최적의 솔루션 (http://stackoverflow.com/questions/393166/how-to-disable-click-sound-in-webbrowser-control) 는 - 적어도. 내가 사용할 수 없는 문제를 집중 도쿠멘테스트 속성, 무엇보다도, 저는 전혀 사운드를 클릭합니다.

Internet Explorer 레지스트리 값이 탐색 사운드 NULL&quot &quot 변경하여 비활성화해야 있습니다;;:

Registry.SetValue("HKEY_CURRENT_USER\\AppEvents\\Schemes\\Apps\\Explorer\\Navigating\\.Current","","NULL");

이 사운드 탐색 및 활성화하십시오 변경하여, 탐색, Internet Explorer 레지스트리 값이 &quot C:\Windows\Media\Cityscape\Windows Start.wav&quot.

Registry.SetValue("HKEY_CURRENT_USER\\AppEvents\\Schemes\\Apps\\Explorer\\Navigating\\.Current","","C:\Windows\Media\Cityscape\Windows Navigation Start.wav");

user2612427
ObieMD5
그는 7년 전 댓글을 달았습니다
0

심지어 이 질문에 대한 적용하십시오 않습니다.

교체하십니까 사용하려면 윈도우 레지스트리 사용.

// backup value
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current");
string BACKUP_keyValue = (string)key.GetValue(null);

// write nothing
key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current", true);
key.SetValue(null, "",  RegistryValueKind.ExpandString);

// do navigation ...

// write backup key
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current", true);
key.SetValue(null, BACKUP_keyValue,  RegistryValueKind.ExpandString);

그러나 일부 수행됨 말해둘꼐요 feels like a 해킹, 이미 오래 전에 이 연구를 통해 최상의 내기하죠 아닌 다른 솔루션을 찾는 것이다.

아직 더 많은 귀찮게 할 수 있도록 설계, t # 39 doesn& 약간만이라도 응용 프로그램에 페이지를 다시 로드합니다. 예를 들어, 새로 고침, re iframe 업데이트를 확인할 수 있는 # 39 you& 서버에서 사용할 스믈하트프리퀘스트 를 사용할 수 있습니다. (Can you tell that I was back in the 며칠 전에 이 문제를 다루는 용어는 AJAX&quot "; 는 말을?)