// // 配信ストップ // public static void Stop() { if (IsBroadCast) { require_status = XSplit_Status.XS_NEED_STOP; } }
// // 配信失敗のダイアログの検索&消去 // private static void SweepDialogs() { EnumWindows(new EnumWindowsDelegate(delegate(IntPtr hWnd, int lParam) { if (GetClassName(hWnd).Equals("#32770")) { if (GetWindowText(hWnd).Contains("配信を初期化しています - NicoVideo - ")) { CloseDialog(hWnd); require_status = XSplit_Status.XS_NEED_STOP; } } return(1); }), 0); }
// // 配信ストップ // public static void Stop() { require_status = XSplit_Status.XS_NEED_STOP; }
// // 配信スタート // public static void Start() { require_status = XSplit_Status.XS_NEED_START; }
// // この関数を定期的に呼ぶ // public static void HandlingStatus(string id, Form mf=null) { // 停止は、idなくても可能 if (require_status != XSplit_Status.XS_NEED_STOP) { if (id == null) return; if (id.Length < 2) return; } // XSplitのプロセスが無いときは、何も出来ない。 if (IsAlive) { if (require_status == XSplit_Status.XS_IDLE) return; string caption = Text; if (caption == null) return; // 過渡状態では、ダイアログのお掃除のみ if (caption.Contains("配信を初期化しています")) { SweepDialogs(); return; } switch (require_status) { case XSplit_Status.XS_NEED_START: if (caption.Contains("Streaming Live - NicoVideo - ")) { require_status = XSplit_Status.XS_IDLE; return; } if (caption.Contains("XSplit Broadcaster - 配信中")) { require_status = XSplit_Status.XS_IDLE; return; } StartNicoLive(mf); //SHIFT_CONTROL_ALT_A(); require_status = XSplit_Status.XS_NEED_CHECK_CLIPBOARD; break; case XSplit_Status.XS_NEED_CHECK_CLIPBOARD: if (caption.Equals("XSplit Broadcaster")) { using (Bouyomi bm = new Bouyomi()) { bm.Talk("エックスプリット、ニコ生接続失敗"); } require_status = XSplit_Status.XS_IDLE; return; } if (Clipboard.ContainsText()) { if (Clipboard.GetText().Contains(id)) { require_status = XSplit_Status.XS_IDLE; } else { require_status = XSplit_Status.XS_NEED_RESTART; } } break; case XSplit_Status.XS_NEED_RESTART: if (caption.Length == 0) { require_status = XSplit_Status.XS_NEED_START; return; } if (caption.Equals("XSplit Broadcaster")) { require_status = XSplit_Status.XS_NEED_START; return; } if (caption.Contains("Streaming Live - NicoVideo - ")) { StopNicoLive(); //SHIFT_CONTROL_ALT_A(); } break; case XSplit_Status.XS_NEED_STOP: if (caption.Length == 0) { require_status = XSplit_Status.XS_IDLE; return; } if (caption.Equals("XSplit Broadcaster")) { require_status = XSplit_Status.XS_IDLE; return; } if (caption.Contains("Streaming Live - NicoVideo - ")) { StartNicoLive(mf); //SHIFT_CONTROL_ALT_A(); } break; } } else { require_status = XSplit_Status.XS_IDLE; } }
// // 配信失敗のダイアログの検索&消去 // private static void SweepDialogs() { EnumWindows(new EnumWindowsDelegate(delegate(IntPtr hWnd, int lParam) { if (GetClassName(hWnd).Equals("#32770")) { if (GetWindowText(hWnd).Contains("配信を初期化しています - NicoVideo - ")) { CloseDialog(hWnd); require_status = XSplit_Status.XS_NEED_STOP; } } return 1; }), 0); }
// // 配信スタート // public static void Start() { require_status = XSplit_Status.XS_NEED_START; }
// // この関数を定期的に呼ぶ // public static void HandlingStatus(string id, Form mf) { // 停止は、idなくても可能 if (require_status != XSplit_Status.XS_NEED_STOP) { //if (id == null) return; //if (id.Length < 2) return; } // XSplitのプロセスが無いときは、何も出来ない。 if (IsAlive) { if (require_status == XSplit_Status.XS_IDLE) { return; } string caption = Text; if (caption == null) { return; } // 過渡状態では、ダイアログのお掃除のみ if (caption.Contains("配信を初期化しています")) { SweepDialogs(); return; } switch (require_status) { case XSplit_Status.XS_NEED_START: if (caption.Contains("Streaming Live - NicoVideo - ")) { require_status = XSplit_Status.XS_NEED_CHECK_CLIPBOARD; return; } if (caption.Contains("XSplit Broadcaster - 配信中")) { require_status = XSplit_Status.XS_NEED_CHECK_CLIPBOARD; return; } // 配信開始 if (Properties.Settings.Default.use_xsplit_shortcut) { PushShortcutKeys2(); } else { StartNicoLive(mf); } break; case XSplit_Status.XS_NEED_CHECK_CLIPBOARD: if (caption.Equals("XSplit Broadcaster")) { using (Bouyomi bm = new Bouyomi()) { bm.Talk("エックスプリット、ニコ生接続失敗"); } require_status = XSplit_Status.XS_IDLE; return; } if (Clipboard.ContainsText()) { if (Clipboard.GetText().Contains(id)) { require_status = XSplit_Status.XS_IDLE; } else { require_status = XSplit_Status.XS_NEED_RESTART; } } break; case XSplit_Status.XS_NEED_RESTART: if (caption.Length == 0) { require_status = XSplit_Status.XS_NEED_START; return; } if (caption.Equals("XSplit Broadcaster")) { require_status = XSplit_Status.XS_NEED_START; return; } if (caption.Contains("Streaming Live - NicoVideo - ")) { // 配信停止 if (Properties.Settings.Default.use_xsplit_shortcut) { PushShortcutKeys2(); } else { StartNicoLive(mf); } } break; case XSplit_Status.XS_NEED_STOP: if (caption.Length == 0) { require_status = XSplit_Status.XS_IDLE; return; } if (caption.Equals("XSplit Broadcaster")) { require_status = XSplit_Status.XS_IDLE; return; } if (caption.Contains("Streaming Live - NicoVideo - ")) { // 配信停止 if (Properties.Settings.Default.use_xsplit_shortcut) { PushShortcutKeys2(); } else { StartNicoLive(mf); } } break; } } else { require_status = XSplit_Status.XS_IDLE; } }