/*--------------------------------------------------------------------------*/ static int playsound(wchar_t *wcFilename) { #ifdef _MSC_VER if (wcFilename) { /* Stop Playing*/ PlaySoundW(NULL, NULL, SND_PURGE); PlaySoundW(wcFilename, NULL, SND_ASYNC | SND_FILENAME); } #endif return 0; }
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message) { case WM_CREATE: PlaySoundW(L"hellowin.wav", NULL, SND_FILENAME | SND_ASYNC); return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); DrawTextW(hdc, L"Hello, Windows 98!汉字", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }
static void pidgin_sound_play_file_win32(const char *filename) { wchar_t *wc_filename = g_utf8_to_utf16(filename, -1, NULL, NULL, NULL); if (!PlaySoundW(wc_filename, NULL, SND_ASYNC | SND_FILENAME)) purple_debug(PURPLE_DEBUG_ERROR, "sound", "Error playing sound.\n"); g_free(wc_filename); }
static void test_sound(void) { if(!PlaySoundW(MAKEINTRESOURCEW(IDW_TESTSOUND), NULL, SND_RESOURCE | SND_ASYNC)){ WCHAR error_str[256], title_str[256]; LoadStringW(GetModuleHandleW(NULL), IDS_AUDIO_TEST_FAILED, error_str, sizeof(error_str) / sizeof(*error_str)); LoadStringW(GetModuleHandleW(NULL), IDS_AUDIO_TEST_FAILED_TITLE, title_str, sizeof(title_str) / sizeof(*title_str)); MessageBoxW(NULL, error_str, title_str, MB_OK | MB_ICONERROR); } }
static void finch_sound_play_file(const char *filename) { const char *method; #ifdef USE_GSTREAMER float volume; char *uri; GstElement *sink = NULL; GstElement *play = NULL; GstBus *bus = NULL; #endif if (purple_prefs_get_bool(make_pref("/mute"))) return; method = purple_prefs_get_string(make_pref("/method")); if (!strcmp(method, "nosound")) { return; } else if (!strcmp(method, "beep")) { beep(); return; } if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { purple_debug_error("gntsound", "sound file (%s) does not exist.\n", filename); return; } #ifndef _WIN32 if (!strcmp(method, "custom")) { const char *sound_cmd; char *command; char *esc_filename; GError *error = NULL; sound_cmd = purple_prefs_get_path(make_pref("/command")); if (!sound_cmd || *sound_cmd == '\0') { purple_debug_error("gntsound", "'Command' sound method has been chosen, " "but no command has been set."); return; } esc_filename = g_shell_quote(filename); if (strstr(sound_cmd, "%s")) command = purple_strreplace(sound_cmd, "%s", esc_filename); else command = g_strdup_printf("%s %s", sound_cmd, esc_filename); if (!g_spawn_command_line_async(command, &error)) { purple_debug_error("gntsound", "sound command could not be launched: %s\n", error->message); g_error_free(error); } g_free(esc_filename); g_free(command); return; } #ifdef USE_GSTREAMER if (gst_init_failed) /* Perhaps do beep instead? */ return; volume = (float)(CLAMP(purple_prefs_get_int(make_pref("/volume")), 0, 100)) / 50; if (!strcmp(method, "automatic")) { if (purple_running_gnome()) { sink = gst_element_factory_make("gconfaudiosink", "sink"); } if (!sink) sink = gst_element_factory_make("autoaudiosink", "sink"); if (!sink) { purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); return; } } else if (!strcmp(method, "esd")) { sink = gst_element_factory_make("esdsink", "sink"); if (!sink) { purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); return; } } else if (!strcmp(method, "alsa")) { sink = gst_element_factory_make("alsasink", "sink"); if (!sink) { purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); return; } } else { purple_debug_error("sound", "Unknown sound method '%s'\n", method); return; } play = gst_element_factory_make("playbin", "play"); if (play == NULL) { return; } uri = g_strdup_printf("file://%s", filename); g_object_set(G_OBJECT(play), "uri", uri, "volume", volume, "audio-sink", sink, NULL); bus = gst_pipeline_get_bus(GST_PIPELINE(play)); gst_bus_add_watch(bus, bus_call, play); gst_element_set_state(play, GST_STATE_PLAYING); gst_object_unref(bus); g_free(uri); #else /* USE_GSTREAMER */ beep(); return; #endif /* USE_GSTREAMER */ #else /* _WIN32 */ purple_debug_info("sound", "Playing %s\n", filename); { wchar_t *wc_filename = g_utf8_to_utf16(filename, -1, NULL, NULL, NULL); if (!PlaySoundW(wc_filename, NULL, SND_ASYNC | SND_FILENAME)) purple_debug(PURPLE_DEBUG_ERROR, "sound", "Error playing sound.\n"); g_free(wc_filename); } #endif /* _WIN32 */ }
extern "C" int playsound() { return PlaySoundW(L"TWEET", GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC); }
HRESULT WINAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags) { WCHAR szPath[MAX_PATH] = {0}, szBuffer[MAX_PATH]; DWORD dwSize, dwType, count; LONG ret; IShellFolder *pDesktop, *pRecycleBin; PIDLIST_ABSOLUTE pidlRecycleBin; PITEMID_CHILD pidl; HRESULT hr = S_OK; LPENUMIDLIST penumFiles; STRRET StrRet; TRACE("%p, %s, 0x%08x\n", hwnd, debugstr_w(pszRootPath), dwFlags); if (!(dwFlags & SHERB_NOCONFIRMATION)) { hr = SHGetDesktopFolder(&pDesktop); if (FAILED(hr)) return hr; hr = SHGetFolderLocation(NULL, CSIDL_BITBUCKET, NULL, 0, &pidlRecycleBin); if (FAILED(hr)) { pDesktop->Release(); return hr; } hr = pDesktop->BindToObject(pidlRecycleBin, NULL, IID_PPV_ARG(IShellFolder, &pRecycleBin)); CoTaskMemFree(pidlRecycleBin); pDesktop->Release(); if (FAILED(hr)) return hr; hr = pRecycleBin->EnumObjects(hwnd, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penumFiles); if (FAILED(hr)) { pRecycleBin->Release(); return hr; } count = 0; if (hr != S_FALSE) { while (penumFiles->Next(1, &pidl, NULL) == S_OK) { count++; pRecycleBin->GetDisplayNameOf(pidl, SHGDN_NORMAL, &StrRet); StrRetToBuf(&StrRet, pidl, szBuffer, _countof(szBuffer)); CoTaskMemFree(pidl); } penumFiles->Release(); } pRecycleBin->Release(); switch (count) { case 0: /* no files, don't need confirmation */ break; case 1: /* we have only one item inside the bin, so show a message box with its name */ if (ShellMessageBoxW(shell32_hInstance, hwnd, MAKEINTRESOURCEW(IDS_DELETEITEM_TEXT), MAKEINTRESOURCEW(IDS_EMPTY_BITBUCKET), MB_ICONEXCLAMATION | MB_YESNO | MB_DEFBUTTON2, szBuffer) == IDNO) { return S_OK; } break; default: /* we have more than one item, so show a message box with the count of the items */ StringCbPrintfW(szBuffer, sizeof(szBuffer), L"%u", count); if (ShellMessageBoxW(shell32_hInstance, hwnd, MAKEINTRESOURCEW(IDS_DELETEMULTIPLE_TEXT), MAKEINTRESOURCEW(IDS_EMPTY_BITBUCKET), MB_ICONEXCLAMATION | MB_YESNO | MB_DEFBUTTON2, szBuffer) == IDNO) { return S_OK; } break; } } if (dwFlags & SHERB_NOPROGRESSUI) { ret = EmptyRecycleBinW(pszRootPath); } else { /* FIXME * show a progress dialog */ ret = EmptyRecycleBinW(pszRootPath); } if (!ret) return HRESULT_FROM_WIN32(GetLastError()); if (!(dwFlags & SHERB_NOSOUND)) { dwSize = sizeof(szPath); ret = RegGetValueW(HKEY_CURRENT_USER, L"AppEvents\\Schemes\\Apps\\Explorer\\EmptyRecycleBin\\.Current", NULL, RRF_RT_REG_SZ, &dwType, (PVOID)szPath, &dwSize); if (ret != ERROR_SUCCESS) return S_OK; if (dwType != REG_EXPAND_SZ) /* type dismatch */ return S_OK; szPath[(sizeof(szPath)/sizeof(WCHAR))-1] = L'\0'; PlaySoundW(szPath, NULL, SND_FILENAME); } return S_OK; }