• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# SC类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中SC的典型用法代码示例。如果您正苦于以下问题:C# SC类的具体用法?C# SC怎么用?C# SC使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



SC类属于命名空间,在下文中一共展示了SC类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: SetPlugin

        public override void SetPlugin(SC.Interfaces.IScPluginClient plugin)
        {
            if (plugin != null && plugin is SC.Interfaces.IScServerPluginClient)
                this.plugin = plugin as SC.Interfaces.IScServerPluginClient;

            RefreshView();
        }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:7,代码来源:ServerPluginPanel.cs


示例2: PluginClicked

 private void PluginClicked(SC.Interfaces.IScPluginClient plugin)
 {
     int y = 0;
     pnlContent.Controls.Clear();
     SC.GUI.Utility.PluginPanelBase[] panels = null;
     try
     {
         panels = pluginPanelLoader.GetPanels(plugin);
     }
     catch (Exception e)
     {
         SC.GUI.Utility.ErrorForm.ShowErrorForm(e);
         return;
     }
     foreach (SC.GUI.Utility.PluginPanelBase panel in panels)
     {
         try
         {
             panel.Name = plugin.ToString() + y;
             panel.Location = new Point(0, y);
             y += panel.Size.Height + 10;
             pnlContent.Controls.Add(panel);
             panel.Show();
         }
         catch (Exception e)
         {
             SC.GUI.Utility.ErrorForm.ShowErrorForm(e);
         }
     }
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:30,代码来源:MainForm.cs


示例3: _PostSystemCommand

      private static void _PostSystemCommand(Window window, SC command) {
         IntPtr hwnd = new WindowInteropHelper(window).Handle;
         if (hwnd == IntPtr.Zero || !NativeMethods.IsWindow(hwnd)) {
            return;
         }

         NativeMethods.PostMessage(hwnd, WM.SYSCOMMAND, new IntPtr((int)command), IntPtr.Zero);
      }
开发者ID:ForNeVeR,项目名称:PoshConsole,代码行数:8,代码来源:SystemCommands.cs


示例4: CreatePluginPanel

        public SC.GUI.Utility.PluginPanelBase CreatePluginPanel(SC.Interfaces.IScPluginClient plugin)
        {
            if (!IsPanelForPlugin(plugin))
                throw new ArgumentException("This plugin panel is for a different type of plugins.");

            SC.GUI.Utility.PluginPanelBase pluginpanel = Activator.CreateInstance(pluginPanelType) as SC.GUI.Utility.PluginPanelBase;
            pluginpanel.SetPlugin(plugin);
            return pluginpanel;
        }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:9,代码来源:PluginPanelLoader.cs


示例5: AttachServer

        public virtual void AttachServer(SC.Interfaces.IPluginServer server)
        {
            if (license == null)
                throw new InvalidOperationException("No license assigned.");

            license.AssertValid();
            this.server = server;
            RestoreSettings();
        }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:9,代码来源:AbstractServerPlugin.cs


示例6: SetPlugin

        public override void SetPlugin(SC.Interfaces.IScPluginClient plugin)
        {
            if (plugin == null)
                throw new ArgumentNullException("plugin");
            else if (!(plugin is SC.Interfaces.DefaultPlugins.IManualControl))
                throw new ArgumentException("plugin");

            this.plugin = plugin as SC.Interfaces.DefaultPlugins.IManualControl;
            RefreshView();
        }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:10,代码来源:ManualControlPanel.cs


示例7: Activation

        public Activation(DateTime startTime, SC.Interfaces.DefaultPlugins.DurationType durationType, SC.Interfaces.DefaultPlugins.ISCTimeSpan duration, SC.Interfaces.DefaultPlugins.ISCTimeSpan repetitionTime)
        {
            if (new SCTimeSpan(repetitionTime) > SCTimeSpan.Zero && new SCTimeSpan(repetitionTime) <= new SCTimeSpan(duration))
                throw new ArgumentException("Repitition time must be larger than duration");

            this.startTime = startTime;
            this.duration = duration;
            this.durationType = durationType;
            this.repetitionTime = repetitionTime;
        }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:10,代码来源:TimerPlugin.cs


示例8: License

        public void License(SC.Interfaces.ILicensee licensee)
        {
            if (RequiresLicense(licensee))
            {
                Guid guid = Guid.NewGuid();
                while (licenses.ContainsKey(guid) || guid == Guid.Empty)
                    guid = Guid.NewGuid();

                SC.Interfaces.LicenseRequest req = GetLicenseRequest(licensee.GetType());
                string licName = req.LicenseName;

                bool valid = false;
                while (req != null)
                {
                    if (licenseinfos.ContainsKey(req.LicenseName))
                    {
                        LicenseInfo info = licenseinfos[req.LicenseName];
                        if (!(valid = info.Count > GetUsedLicenseCount(req.LicenseName)))
                        {
                            valid = false;
                            break;
                        }
                        else if (info.IsValid)
                        {
                            req = null;
                        }
                    }
                    else
                    {
                        valid = false;
                        req = null;
                    }
                }

                if (valid)
                {
                        Logger.Info("Granting license " + licName + " to " + licensee.ToString());
                        License lic = new License(guid, licName);
                        licensee.AssignLicense(lic);
                        licenses.Add(guid, lic);
                }
                else
                {
                        Logger.Info("No license " + licName + " available for " + licensee.ToString());
                        licensee.AssignLicense(new License(Guid.Empty, licName));
                }
            }
        }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:48,代码来源:LicenseManager.cs


示例9: OnKey

    /// <summary>
    /// Get input from the keyboard hook; return true if the key was handled
    /// and needs to be removed from the input chain.
    /// </summary>
    public static bool OnKey(WM ev, VK vk, SC sc, LLKHF flags)
    {
        // Remember when the user touched a key for the last time
        m_last_key_time = DateTime.Now;

        // Do nothing if we are disabled
        if (m_disabled)
        {
            return false;
        }

        int dead_key = SaveDeadKey();
        bool ret = OnKeyInternal(ev, vk, sc, flags);
        RestoreDeadKey(dead_key);

        return ret;
    }
开发者ID:carter-lavering,项目名称:wincompose,代码行数:21,代码来源:Composer.cs


示例10: RemoveMenu

 public static void RemoveMenu(IntPtr hMenu, SC uPosition, MF uFlags)
 {
     if (!_RemoveMenu(hMenu, (uint)uPosition, (uint)uFlags))
     {
         throw new Win32Exception();
     }
 }
开发者ID:AlertProject,项目名称:Text-processing-bundle,代码行数:7,代码来源:NativeMethods.cs


示例11: server_ProcessChanged

 void server_ProcessChanged(object sender, SC.Interfaces.ProcessChangedEventArgs args)
 {
     doSet = true;
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:4,代码来源:ProcessOptionsPlugin.cs


示例12: ProcessChangedEventArgs

 public ProcessChangedEventArgs(SC.Interfaces.IProcess newProcess)
 {
     process = newProcess;
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:4,代码来源:IServer.cs


示例13: VkToUnicode

 private static string VkToUnicode(VK vk, SC sc, byte[] keystate, LLKHF flags)
 {
     const int buflen = 4;
     byte[] buf = new byte[2 * buflen];
     int ret = NativeMethods.ToUnicode(vk, sc, keystate, buf, buflen, flags);
     if (ret > 0 && ret < buflen)
     {
         return Encoding.Unicode.GetString(buf, 0, ret * 2);
     }
     return "";
 }
开发者ID:samhocevar,项目名称:wincompose,代码行数:11,代码来源:Composer.cs


示例14: OnKeyInternal

    private static bool OnKeyInternal(WM ev, VK vk, SC sc, LLKHF flags)
    {
        bool is_keydown = (ev == WM.KEYDOWN || ev == WM.SYSKEYDOWN);
        bool is_keyup = !is_keydown;
        bool add_to_sequence = is_keydown;
        bool is_capslock_hack = false;
        bool compose_is_altgr = m_possible_altgr_keys.Count > 0
                       && Settings.ComposeKey.Value.VirtualKey == VK.RMENU;

        bool has_shift = (NativeMethods.GetKeyState(VK.SHIFT) & 0x80) != 0;
        bool has_altgr = (NativeMethods.GetKeyState(VK.LCONTROL) &
                          NativeMethods.GetKeyState(VK.RMENU) & 0x80) != 0;
        bool has_lrshift = (NativeMethods.GetKeyState(VK.LSHIFT) &
                            NativeMethods.GetKeyState(VK.RSHIFT) & 0x80) != 0;
        bool has_capslock = NativeMethods.GetKeyState(VK.CAPITAL) != 0;

        // Guess what the system would print if we weren’t interfering. If
        // a printable representation exists, use that. Otherwise, default
        // to its virtual key code.
        Key key = VkToKey(vk, sc, flags, has_shift, has_altgr, has_capslock);

        // If Caps Lock is on, and the Caps Lock hack is enabled, we check
        // whether this key without Caps Lock gives a non-ASCII alphabetical
        // character. If so, we replace “result” with the lowercase or
        // uppercase variant of that character.
        if (has_capslock && Settings.CapsLockCapitalizes.Value)
        {
            Key alt_key = VkToKey(vk, sc, flags, has_shift, has_altgr, false);

            if (alt_key.IsPrintable() && alt_key.ToString()[0] > 0x7f)
            {
                string str_upper = alt_key.ToString().ToUpper();
                string str_lower = alt_key.ToString().ToLower();

                // Hack for German keyboards: it seems that ToUpper() does
                // not properly change ß into ẞ.
                if (str_lower == "ß")
                    str_upper = "ẞ";

                if (str_upper != str_lower)
                {
                    key = new Key(has_shift ? str_lower : str_upper);
                    is_capslock_hack = true;
                }
            }
        }

        // Update statistics
        if (is_keydown)
        {
            // Update single key statistics
            Stats.AddKey(key);

            // Update key pair statistics if applicable
            if (DateTime.Now < m_last_key_time.AddMilliseconds(2000)
                 && m_last_key != null)
            {
                Stats.AddPair(m_last_key, key);
            }

            // Remember when we pressed a key for the last time
            m_last_key_time = DateTime.Now;
            m_last_key = key;
        }

        // If the special Synergy window has focus, we’re actually sending
        // keystrokes to another computer; disable WinCompose.
        if (m_window_is_synergy)
        {
            return false;
        }

        // If we receive a keyup for the compose key while in emulation
        // mode, we’re done. Send a KeyUp event and exit emulation mode.
        if (is_keyup && key == Settings.ComposeKey.Value
             && CurrentState == State.Combination)
        {
            Log.Debug("Combination Off");
            CurrentState = State.Idle;
            m_compose_counter = 0;

            // If relevant, send an additional KeyUp for the opposite
            // key; experience indicates that it helps unstick some
            // applications such as mintty.exe.
            switch (Settings.ComposeKey.Value.VirtualKey)
            {
                case VK.LMENU: SendKeyUp(VK.RMENU); break;
                case VK.RMENU: SendKeyUp(VK.LMENU);
                               if (compose_is_altgr)
                                   SendKeyUp(VK.LCONTROL);
                               break;
                case VK.LSHIFT: SendKeyUp(VK.RSHIFT); break;
                case VK.RSHIFT: SendKeyUp(VK.LSHIFT); break;
                case VK.LCONTROL: SendKeyUp(VK.RCONTROL); break;
                case VK.RCONTROL: SendKeyUp(VK.LCONTROL); break;
            }

            return false;
        }

//.........这里部分代码省略.........
开发者ID:samhocevar,项目名称:wincompose,代码行数:101,代码来源:Composer.cs


示例15: OnKeyInternal

    private static bool OnKeyInternal(WM ev, VK vk, SC sc, LLKHF flags)
    {
        //CheckKeyboardLayout();

        bool is_keydown = (ev == WM.KEYDOWN || ev == WM.SYSKEYDOWN);
        bool is_keyup = !is_keydown;
        bool is_capslock_hack = false;

        bool has_shift = (NativeMethods.GetKeyState(VK.SHIFT) & 0x80) != 0;
        bool has_altgr = (NativeMethods.GetKeyState(VK.LCONTROL) &
                          NativeMethods.GetKeyState(VK.RMENU) & 0x80) != 0;
        bool has_lrshift = (NativeMethods.GetKeyState(VK.LSHIFT) &
                            NativeMethods.GetKeyState(VK.RSHIFT) & 0x80) != 0;
        bool has_capslock = NativeMethods.GetKeyState(VK.CAPITAL) != 0;

        // Guess what the system would print if we weren’t interfering. If
        // a printable representation exists, use that. Otherwise, default
        // to its virtual key code.
        Key key = VkToKey(vk, sc, flags, has_shift, has_altgr, has_capslock);

        // If Caps Lock is on, and the Caps Lock hack is enabled, we check
        // whether this key without Caps Lock gives a non-ASCII alphabetical
        // character. If so, we replace “result” with the lowercase or
        // uppercase variant of that character.
        if (has_capslock && Settings.CapsLockCapitalizes.Value)
        {
            Key alt_key = VkToKey(vk, sc, flags, has_shift, has_altgr, false);

            if (alt_key.IsPrintable() && alt_key.ToString()[0] > 0x7f)
            {
                string str_upper = alt_key.ToString().ToUpper();
                string str_lower = alt_key.ToString().ToLower();
                if (str_upper != str_lower)
                {
                    key = new Key(has_shift ? str_lower : str_upper);
                    is_capslock_hack = true;
                }
            }
        }

        // Update statistics
        if (is_keydown)
        {
            // Update single key statistics
            Stats.AddKey(key);

            // Update key pair statistics if applicable
            if (DateTime.Now < m_last_key_time.AddMilliseconds(2000)
                 && m_last_key != null)
            {
                Stats.AddPair(m_last_key, key);
            }

            // Remember when we pressed a key for the last time
            m_last_key_time = DateTime.Now;
            m_last_key = key;
        }

        // FIXME: we don’t properly support compose keys that also normally
        // print stuff, such as `.
        if (key == Settings.ComposeKey.Value)
        {
            // If we receive a keyup for the compose key while in emulation
            // mode, we’re done. Send a KeyUp event and exit emulation mode.
            if (is_keyup && CurrentState == State.Combination)
            {
                Log.Debug("Combination Off");
                CurrentState = State.Idle;
                m_compose_down = false;

                // If relevant, send an additional KeyUp for the opposite
                // key; experience indicates that it helps unstick some
                // applications such as mintty.exe.
                switch (Settings.ComposeKey.Value.VirtualKey)
                {
                    case VK.LMENU: SendKeyUp(VK.RMENU); break;
                    case VK.RMENU: SendKeyUp(VK.LMENU); break;
                    case VK.LSHIFT: SendKeyUp(VK.RSHIFT); break;
                    case VK.RSHIFT: SendKeyUp(VK.LSHIFT); break;
                    case VK.LCONTROL: SendKeyUp(VK.RCONTROL); break;
                    case VK.RCONTROL: SendKeyUp(VK.LCONTROL); break;
                }

                return false;
            }

            if (is_keydown && !m_compose_down)
            {
                // FIXME: we don't want compose + compose to disable composing,
                // since there are compose sequences that use Multi_key.
                switch (CurrentState)
                {
                    case State.Sequence:
                        // FIXME: also, if a sequence was in progress, print it!
                        CurrentState = State.Idle;
                        m_sequence.Clear();
                        break;
                    case State.Idle:
                        CurrentState = State.Sequence;
                        // Lauch the sequence reset expiration thread
//.........这里部分代码省略.........
开发者ID:DarkDare,项目名称:wincompose,代码行数:101,代码来源:Composer.cs


示例16: StandalonePluginClickedEventArgs

 public StandalonePluginClickedEventArgs(SC.Interfaces.IRoot root, string pluginName)
     : base(root)
 {
     this.pluginName = pluginName;
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:5,代码来源:SCBrowser.cs


示例17: StandalonePluginTreeNode

 public StandalonePluginTreeNode(SC.Interfaces.IRoot root, string pluginName)
     : base(root)
 {
     this.Text = pluginName;
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:5,代码来源:SCBrowser.cs


示例18: SecurityManagerClickedEventArgs

 public SecurityManagerClickedEventArgs(SC.Interfaces.IRoot root)
     : base(root)
 {
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:4,代码来源:SCBrowser.cs


示例19: updateConf_Click

        private void updateConf_Click(object sender, EventArgs e)
        {
             confWorking = true;
             newCfgLabel.Text = "Дождитесь завершения операции обновления...";
           
        
            switch (newCfgText.Text)
            {
                case "ДИНРУС КОНСОЛЬ ОДИНОЧНАЯ":
                   scIniText.Lines =new string[]
                   {
"[Version]",
"version=7.51 Build 020",
"","#DINRUS CONSOLE SINGLE", "",
"[Environment]",
"PATH=%PATH%;%DINRUS%;%BIN%",
"BIN=\"%@P%\\..\\bin\"",
"INCLUDE=\"%@P%\\..\\include\";%INCLUDE%",
"LIB=\"%@P%\\..\\lib\";\"%@P%\\..\\lib\\rulada\";\"%@P%\\..\\lib\\c\";\"%@P%\\..\\lib\\sysimport\";%LIB%",
"DFLAGS=\"-I%@P%\\..\\imp\\dinrus\" -O -version=Dinrus -defaultlib=dinrus.lib -debuglib=dinrus.lib", 
"LINKCMD=%@P%\\dmlink.exe"          
                   };     cf = SC.DCA;
                    break;

                case "РУЛАДА1 КОНСОЛЬ ОДИНОЧНАЯ":
                    scIniText.Lines = new string[]
                   {
"[Version]",
"version=7.51 Build 020",
"","#RULADA1 CONSOLE SINGLE", "",
"[Environment]",
"PATH=%PATH%;%DINRUS%;%BIN%",
"BIN=\"%@P%\\..\\bin\"",
"INCLUDE=\"%@P%\\..\\include\";%INCLUDE%",
"LIB=\"%@P%\\..\\lib\";\"%@P%\\..\\lib\\rulada\";\"%@P%\\..\\lib\\c\";\"%@P%\\..\\lib\\sysimport\";%LIB%",
"DFLAGS=\"-I%@P%\\..\\imp\\rulada\" -O -version=Rulada -defaultlib=rulada.lib -debuglib=rulada.lib", 
"LINKCMD=%@P%\\dmlink.exe"          
                   };        cf =SC.R1CA;
                    break;

                case "РУЛАДА2 КОНСОЛЬ ОДИНОЧНАЯ":
                    scIniText.Lines = new string[]
                   {
"[Version]",
"version=7.51 Build 020",
"","#RULADA2 CONSOLE SINGLE", "",
"[Environment]",
"PATH=%PATH%;%DINRUS%;%BIN%",
"BIN=\"%@P%\\..\\bin\"",
"INCLUDE=\"%@P%\\..\\include\";%INCLUDE%",
"LIB=\"%@P%\\..\\lib\";\"%@P%\\..\\lib\\rulada\";\"%@P%\\..\\lib\\c\";\"%@P%\\..\\lib\\sysimport\";%LIB%",
"DFLAGS=\"-I%@P%\\..\\imp\\rulada\" -O -version=Dinrus -defaultlib=rulada.lib -debuglib=rulada.lib", 
"LINKCMD=%@P%\\dmlink.exe"          
                   }; cf =SC.R2CA;
                    break;

                case "ДИНРУС КОНСОЛЬ ПОЛНАЯ":
                    scIniText.Lines = new string[]
                   {
"[Version]",
"version=7.51 Build 020",
"","#DINRUS CONSOLE FULL", "",
"[Environment]",
"PATH=%PATH%;%DINRUS%;%BIN%",
"BIN=\"%@P%\\..\\bin\"",
"INCLUDE=\"%@P%\\..\\include\";%INCLUDE%",
"LIB=\"%@P%\\..\\lib\";\"%@P%\\..\\lib\\rulada\";\"%@P%\\..\\lib\\c\";\"%@P%\\..\\lib\\sysimport\";%LIB%",
"DFLAGS=\"-I%@P%\\..\\imp\\dinrus\" -O -version=Dinrus -defaultlib=dinrus.lib -debuglib=dinrus.lib -L+DRwin32.lib", 
"LINKCMD=%@P%\\dmlink.exe"          
                   }; cf = SC.DWF;
                    break;

                case "РУЛАДА1 КОНСОЛЬ ПОЛНАЯ":
                    scIniText.Lines = new string[]
                   {
"[Version]",
"version=7.51 Build 020",
"","#RULADA1 CONSOLE FULL", "",
"[Environment]",
"PATH=%PATH%;%DINRUS%;%BIN%",
"BIN=\"%@P%\\..\\bin\"",
"INCLUDE=\"%@P%\\..\\include\";%INCLUDE%",
"LIB=\"%@P%\\..\\lib\";\"%@P%\\..\\lib\\rulada\";\"%@P%\\..\\lib\\c\";\"%@P%\\..\\lib\\sysimport\";%LIB%",
"DFLAGS=\"-I%@P%\\..\\imp\\rulada\" -O -version=Rulada -defaultlib=rulada.lib -debuglib=rulada.lib -L+derelict.lib+tango.lib+auxc.lib+auxd.lib+amigos.lib+arc.lib+gtkD.lib", 
"LINKCMD=%@P%\\dmlink.exe"          
                   }; cf= SC.R1CF;
                    break;

                case "РУЛАДА2 КОНСОЛЬ ПОЛНАЯ":
                    scIniText.Lines = new string[]
                   {
"[Version]",
"version=7.51 Build 020",
"","#RULADA2 CONSOLE FULL", "",
"[Environment]",
"PATH=%PATH%;%DINRUS%;%BIN%",
"BIN=\"%@P%\\..\\bin\"",
"INCLUDE=\"%@P%\\..\\include\";%INCLUDE%",
"LIB=\"%@P%\\..\\lib\";\"%@P%\\..\\lib\\rulada\";\"%@P%\\..\\lib\\c\";\"%@P%\\..\\lib\\sysimport\";%LIB%",
"DFLAGS=\"-I%@P%\\..\\imp\\rulada\" -O -version=Rulada -defaultlib=rulada.lib -debuglib=rulada.lib -L+derelict.lib+tango.lib+auxc.lib+auxd.lib+amigos.lib+arc.lib+gtkD.lib", 
//.........这里部分代码省略.........
开发者ID:DinrusGroup,项目名称:DinrusIDE,代码行数:101,代码来源:Configurator.cs


示例20: SecurityManagerTreeNode

 public SecurityManagerTreeNode(SC.Interfaces.IRoot root)
     : base(root)
 {
     this.Text = "Security Manager";
 }
开发者ID:H1GHGuY,项目名称:ServerCheckerV4,代码行数:5,代码来源:SCBrowser.cs



注:本文中的SC类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# SCROLLINFO类代码示例发布时间:2022-05-24
下一篇:
C# SAPbouiCOM类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap