約 2,913,056 件
https://w.atwiki.jp/sampleisbest/pages/524.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64bit) プロジェクトの種類 Visual C++ / 空のプロジェクト プロジェクト名 atltest2 Visual Studio Installerで以下の項目をチェックする。 C++ によるデスクトップ開発 x86 用と x64 用の Visual C++ ATL IntelliSenseの警告はソリューションを閉じて開くと解消される。 atltest2.cpp #include atlbase.h #import "wmp.dll" high_method_prefix("M") named_guids using namespace WMPLib; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { BSTR bstrURL = (BSTR)L"C \\tmp\\hoge.mp3"; HRESULT hr; hr = CoInitialize(NULL); CComPtr IWMPPlayer4 player; hr = player.CoCreateInstance(CLSID_WindowsMediaPlayer); hr = player- MopenPlayer(bstrURL); player = NULL; CoUninitialize(); return 0; }
https://w.atwiki.jp/sampleisbest/pages/490.html
開発環境 Microsoft Visual Studio Community 2015 実行環境 Windows 10 Home (64bit) プロジェクトの種類 Win32 Console Application プロジェクト名 fontlist アプリケーションの種類 Console application 追加のオプション Empty project, SDL checks fontlist.cpp #include Windows.h #include fcntl.h #include io.h #include stdio.h #include set #include string using namespace std; typedef set wstring SFN; SFN sfn; int CALLBACK EnumFontFamExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam) { if (sfn.find(lpelfe- lfFaceName) == sfn.end()) { sfn.insert(lpelfe- lfFaceName); } return 1; } int wmain() { _setmode(_fileno(stdout), _O_WTEXT); HDC hdc = GetDC(NULL); LOGFONT lf = {0}; lf.lfCharSet = DEFAULT_CHARSET; EnumFontFamiliesEx(hdc, lf, EnumFontFamExProc, 0, 0); ReleaseDC(NULL, hdc); for (SFN const_iterator it = sfn.begin(); it != sfn.end(); it++) { wprintf(L"%s\n", it- c_str()); } return 0; } 実行結果(抜粋) メイリオ 游ゴシック 游ゴシック Light 游ゴシック Medium 游明朝 游明朝 Demibold 游明朝 Light MS ゴシック MS 明朝 MS Pゴシック MS P明朝
https://w.atwiki.jp/sampleisbest/pages/156.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 TestPlayer アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 参考 イベントへの応答 TestPlayer.cpp // Unicode文字セット #pragma comment(lib, "strmiids.lib") #include DShow.h #include evr.h #include CommCtrl.h #include "resource.h" #define SAFE_RELEASE(x) { if (x) { x- Release(); x = NULL; } } #define LTRB(rect) rect.left, rect.top, rect.right, rect.bottom #define CLASS_NAME TEXT("TestPlayer") #define WINDOW_NAME TEXT("TestPlayer") #define PANEL_H 32// パネルの高さ #define THUMB_W 16// つまみの幅 #define TIMER1 1// シーク時間定期描画 #define TIMER2 2// コントロール遅延描画 #define WM_GRAPHNOTIFY (WM_APP + 1) enum Ctrl {VIDEO, PLAY, STOP, SEEK, MESSAGE, VOLUME, PANEL, CTRL_NUM}; enum State {NO_FILE, STOPPED, PAUSED, RUNNING}; // 関数プロトタイプ宣言 HWND CreateWnd(HINSTANCE hInstance, int nCmdShow); void Trace(LPCTSTR format, ...); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnTimer(HWND hWnd, WPARAM wParam); void UpdateSeek(HWND hWnd); void DrawSeek(HDC hdc); BOOL OnCommand(HWND hWnd, WPARAM wParam); void SeekFrame(HWND hWnd, WORD wID); void OnGraphNotify(HWND hWnd); void OnLButtonDown(HWND hWnd, LPARAM lParam); void OnLButtonUp(HWND hWnd, LPARAM lParam); int HitTest(POINT pt); void OnPlay(HWND hWnd); void OnStop(HWND hWnd); void StartTimer(HWND hWnd); void StopTimer(HWND hWnd); void OnPaint(HWND hWnd); void OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam); void OnDropFiles(HWND hWnd, WPARAM wParam); void OnCreate(HWND hWnd); void InitGraph(HWND hWnd); void ReleaseGraph(HWND hWnd); HRESULT OpenFile(HWND hWnd, LPCWSTR pszFileName); HRESULT InitEvr(HWND hWnd); void AdjustWnd(HWND hWnd, int nMode); // 外部変数構造体 static struct { TCHAR szPath[MAX_PATH];// 動画ファイルのフルパス TCHAR szFile[MAX_PATH];// 動画ファイル名 RECT rc[CTRL_NUM];// コントロール領域 BOOL bMouseCap;// マウスキャプチャフラグ int nCtrl;// クリックされたコントロール State state;// 状態フラグ UINT_PTR uIDEvent;// タイマID int nRange;// シーク範囲 LONGLONG llCurr;// 動画の現在時間 LONGLONG llEnd;// 動画の終了時間 TCHAR szEnd[11+1];// 動画の終了時間 00 00 00.00 SIZE size;// 動画の幅と高さ IGraphBuilder *pGraph; IMediaControl *pControl; IMediaSeeking *pSeek; IMediaEventEx *pEvent; IMFVideoDisplayControl *pVideo; } g; //============================================================================== int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HWND hWnd; MSG msg; HACCEL hAccTable; LPTSTR pszCmdLine; LPTSTR *argv; int argc; HRESULT hr; // COMライブラリの初期化 hr = CoInitialize(NULL); if (FAILED(hr)) { return 0; } msg.wParam = 0;// ウィンドウ作成失敗時の戻り値 g.size.cx = 640; g.size.cy = 480; // コマンド引数の取得 pszCmdLine = GetCommandLine(); argv = CommandLineToArgvW(pszCmdLine, argc); if (2 = argc) { wcscpy_s(g.szPath, argv[1]); } // ウィンドウの作成 hWnd = CreateWnd(hInstance, nCmdShow); if (hWnd == NULL) { goto Exit; } // メッセージループ hAccTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_MAIN)); while (GetMessage( msg, NULL, 0, 0)) { if (TranslateAccelerator(msg.hwnd, hAccTable, msg) == 0) { TranslateMessage( msg); DispatchMessage( msg); } } Exit CoUninitialize(); return msg.wParam; } //------------------------------------------------------------------------------ HWND CreateWnd(HINSTANCE hInstance, int nCmdShow) { WNDCLASSEX wcx; HWND hWnd; // ウィンドウクラスの登録 ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= MainWndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wcx.hbrBackground= (HBRUSH)(COLOR_BTNFACE + 1); wcx.lpszClassName= CLASS_NAME; if (RegisterClassEx( wcx) == 0) { return NULL; } // ウィンドウの作成 hWnd = CreateWindowEx( WS_EX_ACCEPTFILES, CLASS_NAME, WINDOW_NAME, WS_OVERLAPPEDWINDOW, //CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 100, 100, g.size.cx, g.size.cy, NULL, NULL, hInstance, NULL); if (hWnd) { ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); } return hWnd; } //------------------------------------------------------------------------------ void Trace(LPCTSTR format, ...) { va_list arg_ptr; TCHAR buffer[256]; int size; va_start(arg_ptr, format); size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(L"...\n"); } } //============================================================================== LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_TIMER OnTimer(hWnd, wParam); break; case WM_COMMAND if (OnCommand(hWnd, wParam) == FALSE) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } break; case WM_GRAPHNOTIFY OnGraphNotify(hWnd); break; case WM_LBUTTONDOWN OnLButtonDown(hWnd, lParam); break; case WM_LBUTTONUP OnLButtonUp(hWnd, lParam); break; case WM_PAINT OnPaint(hWnd); break; case WM_SIZE OnSize(hWnd, wParam, lParam); break; case WM_DROPFILES OnDropFiles(hWnd, wParam); DragFinish((HDROP)wParam); break; case WM_CREATE OnCreate(hWnd); break; case WM_DESTROY ReleaseGraph(hWnd); PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } //------------------------------------------------------------------------------ void OnTimer(HWND hWnd, WPARAM wParam) { switch (wParam) { case TIMER1 if (g.pSeek) { g.pSeek- GetCurrentPosition( g.llCurr); UpdateSeek(hWnd); } break; case TIMER2 InvalidateRect(hWnd, g.rc[PANEL], TRUE); KillTimer(hWnd, wParam); break; } } //------------------------------------------------------------------------------ void UpdateSeek(HWND hWnd) { HDC hdc; hdc = GetDC(hWnd); DrawSeek(hdc); ReleaseDC(hWnd, hdc); } //------------------------------------------------------------------------------ void DrawSeek(HDC hdc) { HBRUSH hBrush; RECT rc; int nPos; hBrush = GetSysColorBrush(COLOR_BTNFACE); SelectObject(hdc, hBrush); SetBkMode(hdc, TRANSPARENT); Rectangle(hdc, LTRB(g.rc[SEEK])); Rectangle(hdc, LTRB(g.rc[MESSAGE])); if (g.state == NO_FILE) { return; } // シークバー nPos = (int)(g.nRange * g.llCurr / g.llEnd); nPos += g.rc[SEEK].left; SetRect( rc, nPos, g.rc[SEEK].top, nPos + THUMB_W, g.rc[SEEK].bottom); Rectangle(hdc, LTRB(rc)); // メッセージ TCHAR szBuf[26+1]; int nCurr; nCurr = (int)(g.llCurr / 100000LL); swprintf_s(szBuf, L" %02d %02d %02d.%02d / %s", nCurr / 360000, (nCurr / 6000) % 60, (nCurr / 100) % 60, nCurr % 100, g.szEnd); DrawText(hdc, szBuf, -1, g.rc[MESSAGE], DT_SINGLELINE | DT_VCENTER); } //------------------------------------------------------------------------------ BOOL OnCommand(HWND hWnd, WPARAM wParam) { WORD wID = LOWORD(wParam); switch (wID) { case ID_ENTER ShowWindow(hWnd, IsZoomed(hWnd) ? SW_SHOWNOACTIVATE SW_MAXIMIZE); break; case ID_ESCAPE DestroyWindow(hWnd); break; case ID_PLAY OnPlay(hWnd); break; case ID_LEFT case ID_LEFT_CTRL case ID_LEFT_SHIFT case ID_RIGHT case ID_RIGHT_CTRL case ID_RIGHT_SHIFT SeekFrame(hWnd, wID); break; case ID_NUM1 case ID_NUM2 case ID_NUM3 case ID_NUM4 AdjustWnd(hWnd, (wID - ID_NUM1) + 1); break; case ID_STOP OnStop(hWnd); break; default return FALSE; } return TRUE; } //------------------------------------------------------------------------------ // ポーズ: 3f Ctrl 1f Shift 1s // 再生時:10s Ctrl 5s Shift 60s void SeekFrame(HWND hWnd, WORD wID) { static const LONGLONG llRunning[] = { -100000000LL, -50000000LL, -600000000LL, 100000000LL, 50000000LL, 600000000LL }; LONGLONG llFrame; switch (g.state) { case PAUSED switch (wID) { case ID_LEFT llFrame = -3000000000LL / 2997LL;// 3f = 0.1001001s break; case ID_LEFT_CTRL llFrame = -1000000000LL / 2997LL;// 1s / 29.97f = 0.0333667s break; case ID_LEFT_SHIFT llFrame = -10000000LL; break; case ID_RIGHT llFrame = 3000000000LL / 2997LL; break; case ID_RIGHT_CTRL llFrame = 1000000000LL / 2997LL; break; case ID_RIGHT_SHIFT llFrame = 10000000LL; break; } break; case RUNNING llFrame = llRunning[wID - ID_LEFT]; break; default return; } g.llCurr += llFrame; g.llCurr = max(g.llCurr, 0LL); g.llCurr = min(g.llCurr, g.llEnd); g.pSeek- SetPositions( g.llCurr, AM_SEEKING_AbsolutePositioning, NULL, 0); UpdateSeek(hWnd); } //------------------------------------------------------------------------------ void OnGraphNotify(HWND hWnd) { long lEvCode, lParam1, lParam2; Trace(L"OnGraphNotify\n"); if (g.pEvent == NULL) { return; } while (SUCCEEDED(g.pEvent- GetEvent( lEvCode, lParam1, lParam2, 0))) { g.pEvent- FreeEventParams(lEvCode, lParam1, lParam2); Trace(L"lEvCode=%#x\n", lEvCode); switch (lEvCode) { case EC_COMPLETE OnPlay(hWnd); break; } } } //------------------------------------------------------------------------------ void OnLButtonDown(HWND hWnd, LPARAM lParam) { POINT pt; SetCapture(hWnd); g.bMouseCap = TRUE; POINTSTOPOINT(pt, lParam); g.nCtrl = HitTest(pt); } //------------------------------------------------------------------------------ void OnLButtonUp(HWND hWnd, LPARAM lParam) { POINT pt; if (g.bMouseCap == FALSE) { return; } ReleaseCapture(); g.bMouseCap = FALSE; POINTSTOPOINT(pt, lParam); if (HitTest(pt) != g.nCtrl) { return; } switch (g.nCtrl) { case PLAY OnPlay(hWnd); break; case STOP OnStop(hWnd); break; case SEEK { int nPos; if (g.state = STOPPED) { break; } nPos = (pt.x - g.rc[SEEK].left) - THUMB_W / 2; nPos = max(nPos, 0); nPos = min(nPos, g.nRange); g.llCurr = g.llEnd * nPos / g.nRange; g.pSeek- SetPositions( g.llCurr, AM_SEEKING_AbsolutePositioning, NULL, 0); UpdateSeek(hWnd); } break; } } //------------------------------------------------------------------------------ int HitTest(POINT pt) { int n; for (n = 0; n CTRL_NUM; n++) { if (PtInRect(g.rc + n, pt)) { return n; } } return -1; } //------------------------------------------------------------------------------ void OnPlay(HWND hWnd) { switch (g.state) { case NO_FILE break; case STOPPED case PAUSED g.pControl- Run(); g.state = RUNNING; StartTimer(hWnd); break; case RUNNING g.pControl- Pause(); g.state = PAUSED; StopTimer(hWnd); g.pSeek- GetCurrentPosition( g.llCurr); break; } } //------------------------------------------------------------------------------ void OnStop(HWND hWnd) { if (g.state = STOPPED) { return; } g.pControl- Stop(); g.state = STOPPED; StopTimer(hWnd); g.llCurr = 0LL; g.pSeek- SetPositions( g.llCurr, AM_SEEKING_AbsolutePositioning, NULL, 0); UpdateSeek(hWnd); } //------------------------------------------------------------------------------ void StartTimer(HWND hWnd) { g.uIDEvent = SetTimer(hWnd, TIMER1, 1000, NULL); } //------------------------------------------------------------------------------ void StopTimer(HWND hWnd) { if (g.uIDEvent == 0) { return; } KillTimer(hWnd, TIMER1); g.uIDEvent = 0; } //------------------------------------------------------------------------------ void OnPaint(HWND hWnd) { HDC hdc; PAINTSTRUCT ps; Trace(L"OnPaint\n"); if (g.pVideo) { g.pVideo- RepaintVideo(); } hdc = BeginPaint(hWnd, ps); DrawSeek(hdc); Rectangle(hdc, LTRB(g.rc[PLAY])); DrawText(hdc, L"Play", -1, g.rc[PLAY], DT_SINGLELINE | DT_VCENTER | DT_CENTER); Rectangle(hdc, LTRB(g.rc[STOP])); DrawText(hdc, L"Stop", -1, g.rc[STOP], DT_SINGLELINE | DT_VCENTER | DT_CENTER); Rectangle(hdc, LTRB(g.rc[VOLUME])); DrawText(hdc, L"Volume", -1, g.rc[VOLUME], DT_SINGLELINE | DT_VCENTER | DT_CENTER); EndPaint(hWnd, ps); } //------------------------------------------------------------------------------ void OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam) { POINTS pts; RECT rc; LONG lPanelT; LONG lSeekB; pts = MAKEPOINTS(lParam); Trace(L"OnSize(%u, %d, %d)\n", wParam, pts.x, pts.y); if (wParam == SIZE_MINIMIZED) { return; } lPanelT = pts.y - PANEL_H; SetRect( g.rc[VIDEO], 0, 0, pts.x, lPanelT); SetRect( rc, 0, lPanelT, pts.x, pts.y); lSeekB = rc.top + 12; g.rc[PANEL] = rc; SetRect( g.rc[PLAY], 0, rc.top, 40, rc.bottom); SetRect( g.rc[STOP], 40, rc.top, 80, rc.bottom); SetRect( g.rc[SEEK], 80, rc.top, rc.right, lSeekB); SetRect( g.rc[MESSAGE], 80, lSeekB, rc.right - 80, rc.bottom); SetRect( g.rc[VOLUME], rc.right - 80, lSeekB, rc.right, rc.bottom); g.nRange = (g.rc[SEEK].right - g.rc[SEEK].left) - THUMB_W; // ビデオ出力位置のセット if (g.pVideo) { MFVideoNormalizedRect mvnr = {0.0f, 0.0f, 1.0f, 1.0f}; g.pVideo- SetVideoPosition( mvnr, g.rc[VIDEO]); } if (g.state == RUNNING) { SetTimer(hWnd, TIMER2, 100, NULL); } } //------------------------------------------------------------------------------ void OnDropFiles(HWND hWnd, WPARAM wParam) { HDROP hDrop = (HDROP)wParam; ReleaseGraph(hWnd); DragQueryFile(hDrop, 0, g.szPath, _countof(g.szPath)); InitGraph(hWnd); } //------------------------------------------------------------------------------ void OnCreate(HWND hWnd) { Trace(L"OnCreate\n"); if (g.szPath[0]) { InitGraph(hWnd); } } //------------------------------------------------------------------------------ void InitGraph(HWND hWnd) { TCHAR szBuf[280]; TCHAR szDrive[_MAX_DRIVE]; TCHAR szDir[_MAX_DIR]; TCHAR szFName[_MAX_FNAME]; TCHAR szExt[_MAX_EXT]; int nEnd; HRESULT hr; // DirectShowフィルタの準備 hr = OpenFile(hWnd, g.szPath); if (FAILED(hr)) { return; } g.state = STOPPED; // タイトルバー _wsplitpath_s(g.szPath, szDrive, szDir, szFName, szExt); _wmakepath_s(g.szFile, NULL, NULL, szFName, szExt); swprintf_s(szBuf, L"%s - %s", g.szFile, WINDOW_NAME); SetWindowText(hWnd, szBuf); // 停止タイムの取得 hr = g.pSeek- GetStopPosition( g.llEnd); nEnd = (int)(g.llEnd / 100000LL); swprintf_s(g.szEnd, L"%02d %02d %02d.%02d", nEnd / 360000, (nEnd / 6000) % 60, (nEnd / 100) % 60, nEnd % 100); // 動画再生 OnPlay(hWnd); } //------------------------------------------------------------------------------ void ReleaseGraph(HWND hWnd) { StopTimer(hWnd); if (g.pControl) { g.pControl- Stop(); g.state = NO_FILE; Sleep(500); } if (g.pEvent) { g.pEvent- SetNotifyWindow(NULL, 0, 0); } SAFE_RELEASE(g.pVideo); SAFE_RELEASE(g.pEvent); SAFE_RELEASE(g.pSeek); SAFE_RELEASE(g.pControl); SAFE_RELEASE(g.pGraph); } //============================================================================== HRESULT OpenFile(HWND hWnd, LPCWSTR pszFile) { // フィルタグラフの作成 HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pGraph)); // メディアコントロールインターフェイスの取得 if (SUCCEEDED(hr)) { hr = g.pGraph- QueryInterface(IID_PPV_ARGS( g.pControl)); } // ビデオの作成 if (SUCCEEDED(hr)) { hr = InitEvr(hWnd); } // グラフを作成する if (SUCCEEDED(hr)) { hr = g.pGraph- RenderFile(pszFile, NULL); } // シークインターフェイス DWORD dwCaps; if (SUCCEEDED(hr)) { hr = g.pGraph- QueryInterface(IID_PPV_ARGS( g.pSeek)); } if (SUCCEEDED(hr)) { hr = g.pSeek- GetCapabilities( dwCaps);// 55 0x37 0011.0111 AM_SEEKING_CanSeekAbsolute; } if (SUCCEEDED(hr)) { hr = g.pSeek- IsFormatSupported( TIME_FORMAT_MEDIA_TIME); // frame=false } // イベント if (SUCCEEDED(hr)) { hr = g.pGraph- QueryInterface(IID_PPV_ARGS( g.pEvent)); } if (SUCCEEDED(hr)) { hr = g.pEvent- SetNotifyWindow((OAHWND)hWnd, WM_GRAPHNOTIFY, 0); } // 描画領域の設定 if (SUCCEEDED(hr)) { g.pVideo- GetNativeVideoSize( g.size, NULL); } if (SUCCEEDED(hr)) { AdjustWnd(hWnd, 2); } return hr; } //------------------------------------------------------------------------------ HRESULT InitEvr(HWND hWnd) { IBaseFilter *pEvr = NULL; // EVRの作成 HRESULT hr = CoCreateInstance(CLSID_EnhancedVideoRenderer, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( pEvr)); // フィルタグラフにEVRを追加 if (SUCCEEDED(hr)) { hr = g.pGraph- AddFilter(pEvr, L"EVR"); } IMFGetService *pService = NULL; if (SUCCEEDED(hr)) { hr = pEvr- QueryInterface(IID_PPV_ARGS( pService)); } if (SUCCEEDED(hr)) { hr = pService- GetService(MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS( g.pVideo)); } SAFE_RELEASE(pService); if (SUCCEEDED(hr)) { hr = g.pVideo- SetVideoWindow(hWnd); } SAFE_RELEASE(pEvr); return hr; } //------------------------------------------------------------------------------ void AdjustWnd(HWND hWnd, int nMode) { RECT rc; SetRect( rc, 0, 0, g.size.cx * nMode / 2, g.size.cy * nMode / 2 + PANEL_H); AdjustWindowRectEx( rc, WS_OVERLAPPEDWINDOW, FALSE, 0); SetWindowPos(hWnd, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER | SWP_NOMOVE); } resource.h #define IDR_MAIN128 #define ID_ENTER129 #define ID_ESCAPE130 #define ID_PLAY131 #define ID_LEFT132 #define ID_LEFT_CTRL133 #define ID_LEFT_SHIFT134 #define ID_RIGHT135 #define ID_RIGHT_CTRL136 #define ID_RIGHT_SHIFT137 #define ID_NUM1138 #define ID_NUM2139 #define ID_NUM3140 #define ID_NUM4141 #define ID_STOP142 TestPlayer.rc // resource script #include windows.h #include "resource.h" //------------------------------------------------------------------------------ // アクセラレータ IDR_MAIN ACCELERATORS BEGIN VK_RETURN,ID_ENTER,VIRTKEY// 0x0D VK_ESCAPE,ID_ESCAPE,VIRTKEY// 0x1B VK_SPACE,ID_PLAY,VIRTKEY// 0x20 VK_LEFT,ID_LEFT,VIRTKEY// 0x25 VK_LEFT,ID_LEFT_CTRL,VIRTKEY, CONTROL VK_LEFT,ID_LEFT_SHIFT,VIRTKEY, SHIFT VK_RIGHT,ID_RIGHT,VIRTKEY// 0x27 VK_RIGHT,ID_RIGHT_CTRL,VIRTKEY, CONTROL VK_RIGHT,ID_RIGHT_SHIFT,VIRTKEY, SHIFT "1",ID_NUM1,VIRTKEY "2",ID_NUM2,VIRTKEY "3",ID_NUM3,VIRTKEY "4",ID_NUM4,VIRTKEY "S",ID_STOP,VIRTKEY END
https://w.atwiki.jp/touhoumtg/pages/123.html
大弾/Big Bullet 大弾/Big Bullet(1)(R)(R) ソーサリー クリーチャー1体を対象とする。大弾はそれに6点のダメージを与える。 参考 東方2012-アンコモン
https://w.atwiki.jp/sampleisbest/pages/79.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 aaa アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト レジストリへの登録 regsvr32 C \aaa.dll レジストリの登録を解除 regsvr32 /u C \aaa.dll DLLの置き換え レジストリの登録を解除 シェル(explorer)を再起動 デバッグにはDebugViewを使う。 参考 ショートカットメニュー ハンドラ aaa.def ; リンカー/入力/モジュール定義ファイル LIBRARY"aaa" EXPORTS DllCanUnloadNow PRIVATE DllGetClassObject PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE aaa.h class CContextMenu public IContextMenu, public IShellExtInit { public STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IContextMenu STDMETHODIMP QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags); STDMETHODIMP GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax); STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO pici); // IShellExtInit STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID); CContextMenu(); ~CContextMenu(); private LONGm_cRef; }; class CClassFactory public IClassFactory { public STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IClassFactory STDMETHODIMP CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject); STDMETHODIMP LockServer(BOOL fLock); }; aaa.cpp #pragma comment(lib, "shlwapi.lib") #include ShlObj.h #include Shlwapi.h #include Windows.h #include "aaa.h" // 関数プロトタイプ宣言 void LockModule(BOOL bLock); BOOL CreateRegistryKey(HKEY hKeyRoot, LPTSTR lpszKey, LPTSTR lpszValue, LPTSTR lpszData); void Trace(LPCTSTR ptcFormat, ...); // グローバル変数 const CLSIDCLSID_ContextMenuSample = {0x6986c66a, 0x401f, 0x4535, {0x89, 0x18, 0x48, 0x07, 0x29, 0x39, 0xd2, 0xa4}}; const TCHARg_szClsid[] = TEXT("{6986C66A-401F-4535-8918-48072939D2A4}"); const TCHARg_szProgid[] = TEXT("Sample.ShellExtension"); const TCHARg_szExt[] = TEXT(".aaa"); const TCHARg_szHandlerName[] = TEXT("My ShortcutMenu Handler"); LONGg_lLocks = 0; HINSTANCEg_hinstDll = NULL; //============================================================================== // CContextMenu CContextMenu CContextMenu() { m_cRef = 1; LockModule(TRUE); } CContextMenu ~CContextMenu() { LockModule(FALSE); } STDMETHODIMP CContextMenu QueryInterface(REFIID riid, void **ppvObject) { *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IContextMenu)) { *ppvObject = static_cast IContextMenu * (this); } else if (IsEqualIID(riid, IID_IPersist) || IsEqualIID(riid, IID_IShellExtInit)) { *ppvObject = static_cast IShellExtInit * (this); } else { return E_NOINTERFACE; } AddRef(); return S_OK; } STDMETHODIMP_(ULONG) CContextMenu AddRef() { return InterlockedIncrement( m_cRef); } STDMETHODIMP_(ULONG) CContextMenu Release() { if (InterlockedDecrement( m_cRef) == 0) { delete this; return 0; } return m_cRef; } //------------------------------------------------------------------------------ // IContextMenu STDMETHODIMP CContextMenu QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { MENUITEMINFOmii; if (uFlags CMF_DEFAULTONLY) { return MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_NULL, 0); } mii.cbSize= sizeof (MENUITEMINFO); mii.fMask= MIIM_ID | MIIM_TYPE; mii.fType= MFT_STRING; mii.wID= idCmdFirst; mii.dwTypeData= TEXT("A"); InsertMenuItem(hmenu, indexMenu, TRUE, mii); return MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_NULL, 1); } STDMETHODIMP CContextMenu GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax) { switch (idCmd) { case 0 switch (uFlags) { case GCS_HELPTEXTA lstrcpyA(pszName, "説明文A"); break; case GCS_HELPTEXTW lstrcpyW((LPWSTR)pszName, L"説明文A"); break; case GCS_VERBA lstrcpyA(pszName, "A"); break; case GCS_VERBW lstrcpyW((LPWSTR)pszName, L"A"); break; } break; default return E_FAIL; } return S_OK; } STDMETHODIMP CContextMenu InvokeCommand(LPCMINVOKECOMMANDINFO pici) { UINTidCmd = LOWORD(pici- lpVerb); if (HIWORD(pici- lpVerb) != 0) { return E_INVALIDARG; } switch (idCmd) { case 0 MessageBox(NULL, TEXT("A"), TEXT("OK"), MB_OK); break; } return S_OK; } //------------------------------------------------------------------------------ // IShellExtInit STDMETHODIMP CContextMenu Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) { Trace(L"Initialize\n"); //Trace(L"%u\n", pidlFolder- mkid.cb); return S_OK; } //============================================================================== // CClassFactory STDMETHODIMP CClassFactory QueryInterface(REFIID riid, void **ppvObject) { *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) { *ppvObject = static_cast IClassFactory * (this); } else { return E_NOINTERFACE; } AddRef(); return S_OK; } STDMETHODIMP_(ULONG) CClassFactory AddRef() { LockModule(TRUE); return 2; } STDMETHODIMP_(ULONG) CClassFactory Release() { LockModule(FALSE); return 1; } //------------------------------------------------------------------------------ // IClassFactory STDMETHODIMP CClassFactory CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject) { CContextMenu*p; HRESULThr; *ppvObject = NULL; if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } p = new CContextMenu(); if (p == NULL) { return E_OUTOFMEMORY; } hr = p- QueryInterface(riid, ppvObject); p- Release(); return hr; } STDMETHODIMP CClassFactory LockServer(BOOL fLock) { LockModule(fLock); return S_OK; } //============================================================================== // DLL Export STDAPI DllCanUnloadNow(void) { return (g_lLocks == 0) ? S_OK S_FALSE; } STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { static CClassFactory serverFactory; HRESULThr; *ppv = NULL; if (IsEqualCLSID(rclsid, CLSID_ContextMenuSample)) { hr = serverFactory.QueryInterface(riid, ppv); } else { hr = CLASS_E_CLASSNOTAVAILABLE; } return hr; } STDAPI DllRegisterServer(void) { TCHARszModulePath[MAX_PATH]; TCHARszKey[256]; wsprintf(szKey, TEXT("CLSID\\%s"), g_szClsid); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, TEXT("ShellExtension Sample"))) { return E_FAIL; } GetModuleFileName(g_hinstDll, szModulePath, _countof(szModulePath)); wsprintf(szKey, TEXT("CLSID\\%s\\InprocServer32"), g_szClsid); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, szModulePath)) { return E_FAIL; } wsprintf(szKey, TEXT("CLSID\\%s\\InprocServer32"), g_szClsid); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, TEXT("ThreadingModel"), TEXT("Apartment"))) { return E_FAIL; } wsprintf(szKey, TEXT("%s"), g_szExt); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, (LPTSTR)g_szProgid)) { return E_FAIL; } wsprintf(szKey, TEXT("%s\\shellex\\ContextMenuHandlers\\%s"), g_szProgid, g_szHandlerName); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, (LPTSTR)g_szClsid)) { return E_FAIL; } return S_OK; } STDAPI DllUnregisterServer(void) { TCHARszKey[256]; wsprintf(szKey, TEXT("CLSID\\%s"), g_szClsid); SHDeleteKey(HKEY_CLASSES_ROOT, szKey); SHDeleteKey(HKEY_CLASSES_ROOT, g_szExt); SHDeleteKey(HKEY_CLASSES_ROOT, g_szProgid); return S_OK; } BOOL APIENTRY DllMain( HINSTANCEhinstDLL, DWORDfdwReason, LPVOIDlpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH g_hinstDll = hinstDLL; DisableThreadLibraryCalls(hinstDLL); break; } return TRUE; } //============================================================================== // Function void LockModule(BOOL bLock) { if (bLock) { InterlockedIncrement( g_lLocks); } else { InterlockedDecrement( g_lLocks); } } BOOL CreateRegistryKey(HKEY hKeyRoot, LPTSTR lpszKey, LPTSTR lpszValue, LPTSTR lpszData) { HKEYhKey; LONGlResult; DWORDdwSize; lResult = RegCreateKeyEx(hKeyRoot, lpszKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, hKey, NULL); if (lResult != ERROR_SUCCESS) { return FALSE; } if (lpszData != NULL) { dwSize = (lstrlen(lpszData) + 1) * sizeof (TCHAR); } else { dwSize = 0; } RegSetValueEx(hKey, lpszValue, 0, REG_SZ, (LPBYTE)lpszData, dwSize); RegCloseKey(hKey); return TRUE; } void Trace(LPCTSTR ptcFormat, ...) { va_listargs; TCHARatcBuf[512]; intiRet; va_start(args, ptcFormat); iRet = wsprintf(atcBuf, ptcFormat, args); if (0 iRet) { OutputDebugString(atcBuf); } va_end(args); }
https://w.atwiki.jp/sampleisbest/pages/527.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64bit) プロジェクトの種類 Visual C++ / 空のプロジェクト プロジェクト名 dscaps 参考 デバイス オブジェクトの作成 dscaps.cpp // マルチバイト文字セット #pragma comment(lib, "dsound") #include dsound.h #include stdio.h #define CHECK(hres) if (FAILED(hres)) { return 1; } #define PRINT(flag, name) printf("[%c] " #name "\n", (flag name) ? o - ) int main() { HRESULT hr; hr = CoInitialize(NULL); CHECK(hr); LPDIRECTSOUND8 lpds; hr = DirectSoundCreate8(NULL, lpds, NULL); CHECK(hr); DWORD cert; hr = lpds- VerifyCertification( cert); CHECK(hr); printf("DirectX認証\n"); PRINT(cert, DS_CERTIFIED); PRINT(cert, DS_UNCERTIFIED); DSCAPS dsc; dsc.dwSize = sizeof DSCAPS; hr = lpds- GetCaps( dsc); CHECK(hr); printf("\nデバイス能力\n"); printf("dwFlags=[%08x]\n", dsc.dwFlags); DWORD flag = dsc.dwFlags; PRINT(flag, DSCAPS_CERTIFIED); PRINT(flag, DSCAPS_CONTINUOUSRATE); PRINT(flag, DSCAPS_EMULDRIVER); PRINT(flag, DSCAPS_PRIMARY16BIT); PRINT(flag, DSCAPS_PRIMARY8BIT); PRINT(flag, DSCAPS_PRIMARYMONO); PRINT(flag, DSCAPS_PRIMARYSTEREO); PRINT(flag, DSCAPS_SECONDARY16BIT); PRINT(flag, DSCAPS_SECONDARY8BIT); PRINT(flag, DSCAPS_SECONDARYMONO); PRINT(flag, DSCAPS_SECONDARYSTEREO); printf("dwMinSecondarySampleRate=[%u]\n", dsc.dwMinSecondarySampleRate); printf("dwMaxSecondarySampleRate=[%u]\n", dsc.dwMaxSecondarySampleRate); CoUninitialize(); return 0; } 出力 DirectX認証 [-] DS_CERTIFIED [o] DS_UNCERTIFIED デバイス能力 dwFlags=[00000f1f] [-] DSCAPS_CERTIFIED [o] DSCAPS_CONTINUOUSRATE [-] DSCAPS_EMULDRIVER [o] DSCAPS_PRIMARY16BIT [o] DSCAPS_PRIMARY8BIT [o] DSCAPS_PRIMARYMONO [o] DSCAPS_PRIMARYSTEREO [o] DSCAPS_SECONDARY16BIT [o] DSCAPS_SECONDARY8BIT [o] DSCAPS_SECONDARYMONO [o] DSCAPS_SECONDARYSTEREO dwMinSecondarySampleRate=[100] dwMaxSecondarySampleRate=[200000]
https://w.atwiki.jp/ontama/pages/19.html
【抽選方法】卵を割って出てきたモンスターと召喚獣を1対1で 対戦し(対戦中は召喚用の薬は使いません)召喚獣が勝ったら1、負けたら0とします。 これを8回行い11010110などの結果が抽選結果となります。 (左端から第1試合、第2試合と続き右端が第8試合) 【購入方法】 1口100万Qです。 加盟国所属の1キャラ2口限定です。 お客様が予想を掲示板に書き込んだ後に、Qを送金してもらいます。 送金先は以下の3キャラへ バサtoto君1号 バサtoto君2号 バサtoto君3号 【配当金】totoを販売した売り上げの80%を配当にまわし、的中者で山分けっす。 20%は経費(召喚卵、召喚復活石など)と国の利益っす。 的中者がいない場合は次回の配当にまわします。
https://w.atwiki.jp/2ch_aa_rpg/pages/67.html
【作品名】Little.Big 【作者】エノハ 【配布先】第3回紅白モナーRPG合戦ホームページ http //www.paw.hi-ho.ne.jp/mistletoe/Game/monakohaku3/ 【使用ツール】RPGツクール2000 ■作品解説 プレイヤーによっては謎解きが凶悪なほど難しいが、いざ、プレイしてみるとレトロゲームを感じさせるようなグラフィックで懐かしさを感じさせるアドベンチャーゲーム。 第3回紅白モナーRPG合戦MVP受賞作品。多くの支持を得て2位とは大きく差をつけた模様。 ■ストーリー とある廃園になった植物園に写真を撮りにいくモナムソンと、ナーシャ。 モナムソンが、写真をとってきてる間に、ナーシャは1人のdatとであって、そのdatを助ける(?)という物語。 『どこに帰るの。 『その手の中に。 XX04年、2月。 山奥の小さな田舎町にて。 青年機械技師と、卒業を控えた女学生が、 今日もまた、何事かを目論んでいる。 ■主要キャラクター <ナーシャ> ゲームの主人公。 <モナムソン> 機械技師。 <dat> よくわからない物体。箒で倒せる。 <datさん> 最初は影も形も無いが、次第に形が戻っていく。 ↓以下コメント すみません間違えてバックアップ消してしまいました。 -- 管理人 (2007-01-02 00 00 52) 凶悪っつーほど難しくはないと思った。人によっては簡単と感じると思う。 -- 名無しさん (2007-03-14 11 11 40) 自分でコメント消せばいいじゃん -- 名無しさん (2007-10-26 19 20 24) 全体的に一位ね。 うち的にもよかったよ。 叩くための木槌をと違ってクソゲーではなかったよ。 -- ミスティア (2009-12-20 23 08 16) 名前 コメント
https://w.atwiki.jp/hackerbobchan/pages/28.html
基本的にbigpipeシェルしかわからないので、例えにbigpipeシェルのコマンドを書きます。 確認したバージョンは10.1.0です。 show running-config コンフィグが一通り表示されます。 bigpipeシェルだと、b base list allが近いような気がしますが、まったく同じ内容のコマンドは見つかりませんでした。 show sys ha-status High Availabilityのステータスが表示されます。 root@bigip1(Active)(tmos)# show sys ha-status Sys HA Status Feature Key Action Fail ------------------------------------------------------------------ daemon-heartbeat bigd restart no daemon-heartbeat mcpd restart-all no daemon-heartbeat sod restart-all no daemon-heartbeat tmm go-offline-downlinks-restart no daemon-heartbeat tmrouted restart no forced-offline sod none no license-invalid mcpd go-offline-downlinks no overdog-ctrl watchdog none no proc-run mcpd go-offline-downlinks no proc-run named go-offline-downlinks no proc-run tmm go-offline-downlinks no proc-run tmrouted failover no ready-for-world tmm none no reboot-request sod reboot no software-update lind reboot no switchboard-failsafe lacpd go-offline-abort-tm no tmm-detect-fail tmm failover no show sys version バージョンを確認できます。 bigpipeシェルだと、b version が近いです。 root@bigip1(Active)(tmos)# show sys version Sys Version Main Package Product BIG-IP Version 10.1.0 Build 3341.1084 Edition Final Date Sat Feb 6 01 05 54 PST 2010 run util 各種[[情報取得コマンド]]が実行できます。 root@bigip1(Active)(tmos)# run util ? Components bash Run the bash shell bigpipe Legacy BIG-IP command line interface dig Interrogate DNS name servers ping Send ICMP echo requests to network hosts ping6 Send ICMPv6 echo requests to network hosts qkview Gather diagnostic information from a [[BIG-IP]] system tcpdump Display network traffic tracepath Trace path to a network host discovering MTU along this path tracepath6 Trace path to a network host (IPv6) discovering MTU along this path traceroute Print the route packets trace to network host traceroute6 Print the route (IPv6) packets trace to network host show sys log 各種ログを表示します。 logのあとに以下の文言を追加することで色々なログを確認できます。 root@bigip1(Active)(tmos)# show sys log Sys Log daemon Unix Daemon Logs gtm Global Traffic Manager Logs kernel Linux Kernel Messages ltm Local Traffic Manager Logs mail Mail Daemon Logs messages Application Messages security Security Related Messages tmm Traffic Manager Microkernel Logs user Various user process logs webui Logs for the Web User Interface audit Audits of configuration changes quit ログアウトします。exitはありません。 root@bigip1(Active)(tmos)# exit Use "quit" to end the current session root@bigip1(Active)(tmos)# quit
https://w.atwiki.jp/kshootmania/pages/21.html
ARTIST NULL BPM 140-200 LEVEL 3 13 14 17 NOTES JACKET NULL NULL NULL NULL EFFECT masaka masaka masaka ミシェル 譜面 LIGHT CHALLENGE EXTENDED INFINITE 譜面の攻略・解説 (※必ず分頭に[LT][CH][EX][IN]のいずれかの難易度を置いてからコメントしてください。) 名前 コメント