按键精灵识别验证码的问题 5C

最近发现一个验证码,不知道如何用按键精灵识别
如下图片说明

6个回答

按键精灵只是模拟键鼠操作,无法保证键鼠实现的操作,它也能100%实现, 所以还是建议你用鼠标不

u011284774
罗铸1127 还是只能靠人力来做吗
大约 2 年之前 回复

可以试试图片识别 网上很多教程的 识别之后在做操作即可

图色识别000000000000000000

这个只是模拟吧,不一定能实现

感觉好像实现不了,主要是还有拼音的识别,这个感觉实现起来十分困难

看能通过接人工打码实现不

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于COM组件的调用(按键精灵插件),有Activex大神吗?
按键精灵DLL的调用 这一直是心里的一道坎 很多人会告诉你,自己写个类似功能也不难。 那是你直接说你不会就好,何必给自己找不是理由的理由。 经研究发现,按键精灵的DLL DllRegisterServer不能成功,载入OD还要先破解。 而可以自己写个DLL,让按键精灵去创建好插件对象,然后作为参数传递到你的DLL中,可以发现这玩意其实就是个COM组件。这个对象可以任意使用! 后来经过一番调查,好像按键官方会给插件作者一个签名工具,这玩意就是对DLL做一些修改,让其他语言不能以常规的方式注册和调用! 用OD跟踪,按键精灵会在主线程启动时创建2个对象“QMDispatch.QMLibrary.Inner”“QMDispatch.QMLibrary” 在注册表里找到分别定位到:按键精灵主程序(EXE)或者小精灵 和 “C:\Users\Administrator\AppData\Roaming\qmacro\qdisp.dll”。 用空白文件只读替换掉“qdisp.dll”将不能正常运行小精灵!插件也不能正常使用,说明这个“QMDispatch.QMLibrary”有这关键作用!(估计是处理变量用的) 然后用按键精灵来“Set a = CreateObject("QMPlugin.Bkgnd")”,发现在按键精灵中能正常创建,但在VBS,VB中提示“自动化类型失败” 用OD跟踪这段语句(别以为按键精灵就不能跟,它的代码还是会送到vbscript.dll执行)它注册之后创建对象是先ole32.CLSIDFromProgIDEx然后ole32.CoGetClassObject(其他的我不是看的很明白) 以我的理解,按精灵就是个虚拟机,将VBS字符加密储存。运行时送给翻译器解密并加工 然后再次给vbscript.dll翻译执行。 也就是说按键精灵对DLL做了一些修改,注册应该是对注册表进行操作。而创建对象应该是自己实现了这个特殊的“CreateObject” 由此,可以看出按键精灵对COM组件的调用原理理解的还是比较深的。那么我们是不是也能做出只有自己才能调用COM组件出来?我们又又什么办法来调用按键精灵DLL? (按键精灵网上随处可下载,本人功力不够,是否有人帮忙研究出其中门道)
关于51单片机用一个按键切换4种模式的问题?
我用51单片机的按键进行led的4种模式的切换,我现在的程序只能是中断里面的led程序结束后再按按键才可以切换模式,我想知道如何在中断中的led程序执行时按按键切换到下一个模式,请求大家支援。以下是我的代码。 #include<reg52.h> sbit beep=P1^5; sbit k1=P3^1; sbit k3=P3^2; sbit led=P2^0; #define N P2 typedef unsigned int ui; typedef unsigned char uc; uc num; void delay(ui i) { while(i--); } void fmq() { beep=~beep; delay(100); } void led0() { N=0xff; N=0xfe; fmq(); delay(50000); N=0xfd; fmq(); delay(50000); N=0xfb; fmq(); delay(50000); N=0xf7; fmq(); delay(50000); N=0xef; fmq(); delay(50000); N=0xdf; fmq(); delay(50000); N=0xbf; fmq(); delay(50000); N=0x7f; fmq(); delay(50000); } void led1() { N=0x7e; fmq(); delay(35000); delay(35000); N=0xbd; fmq(); delay(35000); delay(35000); N=0xdb; fmq(); delay(35000); delay(35000); N=0xe7; fmq(); delay(35000); delay(35000); N=0xe7; fmq(); delay(35000); delay(35000); N=0xdb; fmq(); delay(35000); delay(35000); N=0xbd; fmq(); delay(35000); delay(35000); N=0x7e; fmq(); delay(35000); delay(35000); } void led2() { N=0xaa; fmq(); delay(50000); delay(50000); N=0x55; fmq(); delay(50000); delay(50000); } void led3() { ui i; N=0xfe; while(1) { if(k1==0) { delay(1000); if(k1==0) { switch(i) { case(0):N=0xfd;fmq();i++;break; case(1):N=0xfb;fmq();i++;break; case(2):N=0xf7;fmq();i++;break; case(3):N=0xef;fmq();i++;break; case(4):N=0xdf;fmq();i++;break; case(5):N=0xbf;fmq();i++;break; case(6):N=0x7f;fmq();i++;break; case(7):N=0xff;fmq();i++;break; } while(!k1); } } if(i==8) { i=0; break; } } } void init() { IT0=1; EX0=1; EA=1; } void main() { init(); while(1); } void init0() interrupt 0 { delay(1000); { while(1) { if(k3==0) { switch(num) { case(0):led0();num++;break; case(1):led1();num++;break; case(2):led2();num++;break; case(3):led3();num++;break; case(4):num++;N=0xff;break; } } while(!k3); if(num==4) { num=0; break; } } } }
VC如何调用按键精灵的插件
如题,按键精灵plugin目录下有dll和ocx的插件,应该如何用VC/VS调用他们呢。
最近在做一个类似按键精灵的东西,录制一个脚本怎么跑遍所有pc
按键精灵是对单独的电脑记录鼠标键盘动作做记录,然后再下次运行记录的鼠标键盘动作. 我现在想把在A电脑录制的脚本放在其他电脑上跑。 由于不同的电脑环境不一样,跑A鼠标键盘动作的记录 就不能达到预期的效果,现在卡在这里,请教各路大神。
python爬虫手动输入验证码应该用到什么库和技术?
各位技术大牛,小弟初学python遇到验证码的问题。当页面翻页到下一页时需要进行验证码识别验证才能打开页面。本人想实现自动翻页到下一页时等待手工输入验证码提交,然后再自动爬取数据或者设置某个按键(如空格键)利用按键启动单页的爬虫程序。初步学习了selenium库没有找到自动与手动相互切换的方法,请各位大神提供一些经验或者技术贴给小弟一些提示。 我的目标网页是http://www.bjcourt.gov.cn/cpws/index.htm?st=1&q=&sxnflx=0&prompt=&dsrName=&ajmc=&ajlb=&jbfyId=&zscq=&ay=&ah=&cwslbmc=&startCprq=&endCprq=&page=11 只有翻页到11页开始每次翻页需要验证码输入。 初次提问,表达不清楚的地方请大家原谅。还需要我提供什么信息或者想进一步交流可以私信我或者直接留言。 先提前谢谢各位能够在百忙之中抽出时间阅读我的问题,如果有老哥愿意帮帮忙,更是感激不尽。 补充:还有一个问题,在另一个目标爬取过程中,手动切换到下一页并没有验证码的验证过程,但爬取时收到的源代码显示网页本身是被JS处理过的需要验证码验证。这种问题可以使用selenium解决吗。 网页url:http://www.bjcourt.gov.cn/zxxx/indexOld.htm?st=1&zxxxlx=100013001&bzxrlx=&bzxrxm=&zrr=&frhqtzz=&jbfyId=&ah=&dqxh=6&page=21
按键精灵图标怎么上传
按键小精灵要求图标至少包含48*48,32*32,16*16的文件,这样的文件到底怎么做!
关于按键精灵获取屏幕坐标
想实现就是我按下1键记录我当前鼠标位置,然后鼠标移动位置在按下2键记录这个鼠标位置,依次类推,记录完成后鼠标自动执行对刚刚记录点操作
C# 逍遥模拟器怎么后台点击
调用winAPI SendMessage 其他程序和mumu模拟器都能响应 而逍遥不行 尝试用按键精灵 是可以通过句柄点击到逍遥 请问 C# 如何实现点击逍遥
请大佬指点迷津,请ocx中启动另一个进程作为子窗口,在子窗口中切换中英文输入模式(CTRL + SPACE),不起作用?
1.问题描述:MFC应用程序中,嵌入一个ocx控件,在控件中启动另一个进程,并作为子窗口;在子窗口中切换中英文模式,不起作用! 2.ocx控件中的Oncreate函数中,启动进程代码: ``` if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; m_hWndMain = GetSafeHwnd(); // 启动进程 ZeroMemory(&m_sei, sizeof(SHELLEXECUTEINFO));//使用前最好清空 m_sei.cbSize = sizeof(SHELLEXECUTEINFO);//管理员权限执行cmd,最基本的使用与 ShellExecute 类似 m_sei.fMask = SEE_MASK_NOCLOSEPROCESS; m_sei.lpVerb = TEXT("runas"); m_sei.lpFile = m_strAllPath; m_sei.lpDirectory = m_strAllPath; m_sei.lpParameters = GetVisitPara(); // 构造CEF需要访问的参数 m_sei.nShow = SW_HIDE; if(!ShellExecuteEx(&m_sei)) { AfxMessageBox(_T("初始化失败,启动MxvWebClient失败,请确认安装盘是否正确!")); return FALSE; } m_nPid = GetProcessId(m_sei.hProcess); GetWindowRect(&g_winRect); ``` 通过进程的名称找到句柄m_hWndFind,并设置父子关系;相关代码: ``` ::SetParent(m_hWndFind, m_hWndMain); long nNewType = GetWindowLong(m_hWndFind, GWL_STYLE) &~WS_POPUP &~WS_BORDER & ~WS_CAPTION & ~WS_THICKFRAME /*| WS_CHILD*/ ; ::SetWindowLong(m_hWndFind, GWL_STYLE, nNewType); //先改变大小,再发送消息 ::MoveWindow(m_hWndFind, 0, 0, g_winRect.Width(), g_winRect.Height(), FALSE); ::ShowWindow(m_hWndFind, SW_SHOW); ``` 3.在ocx控件中的进程的输入框中,切换中英文输入模式,按键CTRL+SPACE,不能切换
java使用JFrame实现界面跳转时点击按键一次却出现两个一模一样的界面是怎么回事?
本人java初学者,想做一个信息管理系统,中间的功能已经实现的差不多了,但是出现了一个问题: ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578643514_726314.png) 当我点击这个"返回"按钮时,会弹出两个一模一样的面板,(两个面板是重叠在一起的,我这里把他们拉开了) ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578643628_820862.png) 但我的代码里并没有出现两次啊,而且在其他的功能中,点击返回按键,也只会出现一个面板啊,请大佬们指导一下,感激不尽! 涉及的部分代码如下: (这是图一面板的部分代码,下面是设置面板布局之类的代码,就不放了) ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578643832_509138.png) 这是图一事件监听的部分代码 ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578643920_912714.png) 接下来是图二(菜单面板)的部分代码 ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578644002_106303.png) 我觉得有问题的代码就这些了,希望大佬们指点迷津,如果代码不够我再放全部,万分感谢!!!
我想用vb实现后台模拟鼠标键盘的动作,就像按键精灵一样
我在做一个表单辅助工具,希望自动将程序获得的数据自动填入表单中,希望大神给一些建议。
在VBA中同时启用了两个钩子,但只能释放一个怎么回事?
我想通过HOOK同时监控鼠标和键盘的操作,获得鼠标的当前坐标和我按下的按键码。 鼠标这个hook没有问题,但是当我加上键盘hook时候,发现释放不了键盘的hook. 点击结束后,鼠标hook停止了但是键盘还在继续运行。请各位帮帮我。 代码如下: ``` Sub UNHOOK() '卸钩子 UnhookWindowsHookEx Mhook2 UnhookWindowsHookEx Mhook Mhook2 = 0 Mhook = 0 End Sub Sub MOUSEHOOK() Mhook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MyMhook, Application.Hinstance, 0) Mhook2 = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyMhookkey, Application.Hinstance, 0) If Mhook = 0 Then MsgBox "钩子注册失败" If Mhook2 = 0 Then MsgBox "钩子注册失败" End Sub Public Function MyMhook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If ncode = 0 Then If wParam = WM_MOUSEMOVE Then Dim p As POINTAPI GetCursorPos p GetmousePos.TextBox1.Value = p.X & "," & p.Y End If Else MyMhook = CallNextHookEx(Mhook, ncode, wParam, lParam) End If MyMhook = CallNextHookEx(Mhook, ncode, wParam, lParam) End Function Public Function MyMhookkey(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If ncode = 0 Then If wParam = WM_KEYDOWN Then CopyMemory mymsg, ByVal lParam, LenB(mymsg) a = Chr(mymsg.vKey) MsgBox mymsg.vKey End If Else MyMhookkey = CallNextHookEx(Mhook2, ncode, wParam, lParam) End If MyMhookkey = CallNextHookEx(Mhook2, ncode, wParam, lParam) End Function ```
想用STCW408AS单片机实现通过控制一个按键来输出不同PWM
想用STCW408AS单片机实现通过控制一个按键来输出不同PWM,有0%,20%,40%,60%,100%,实现不同亮度,请教大神该怎样实现程序?
VSCode快捷键插件开发,设置"ctrl+k"快捷键触发快捷操作,但总是提示输入第二个按键?
![图片说明](https://img-ask.csdn.net/upload/202001/17/1579248270_849721.png)<br/></br> 是因为默认快捷键导致的么?如果是的话如何覆盖或者禁用默认快捷键?
VIM-adventures 编辑器问题
Problem Description http://vim-adventures.com/ vim是一个非常方便的文本编辑器,使用它可以快速的编辑文本 vim-adventures是一个很有意思的解谜游戏,需要玩家使用一些vim下的指令来移动光标来解决一系列谜题 为了化简题意此题我们只考虑如下指令: h:让光标向左边移动一格 j:让光标向下边移动一格 k:让光标向上边移动一格 l:让光标向右边移动一格 w:让光标移动到下一个"word的开头" e:让光标移动到下一个"word的结尾" b:让光标移动到前一个"word的开头" ge:让光标移动到前一个"word的结尾" W:让光标移动到下一个"WORD的开头" E:让光标移动到下一个"WORD的结尾" B:让光标移动到前一个"WORD的开头" gE:让光标移动到前一个"WORD的结尾" (注意断句,是"下一个|word的结尾",而不是"下一个word|的结尾".如"1234 5678",2的下一个word的结尾是4而不是8,其他同理) 注: 其中一个word由字母/数字/下划线序列或者其他的非空字符序列组成.由white space(空格或者换行符)分开; 其中一个WORD由非空字符序列组成.由white space(空格或者换行符)分开; 下一个/前一个word/WORD可以跨行,如当前word是该行最后一个word,那么下一个word就是下一行的第一个word; 如果没有下一个/前一个word/WORD,那么按下w/e/b/ge/W/B/E/gE之后会让光标移动到所能移动的最远处; 例子: This is a line with example text <----<--<-<----<----<-------<--- b b b b b b b This is a line with example text <--<--<-<----<----<-------<----- ge ge ge ge ge ge ge This is a line with example text ----->-->->---->---->------->--> w w w w w w w This is a line with example text --->-->->---->---->------->----> e e e e e e e while ((((true)))) printf("Hello VIM!") ------>--->--->---->------------->-->-> w w w w W w w (w,e,b,ge,W等表示按下该键后可以让当前光标移动到对应的"<",">"位子. 前两个例子光标一开始在最右,后三个例子光标一开始在最左) 文本中还有一些不能走上去的位置,如上图中的石头,这些石头光标不管怎么样都没办法移动上去. 现在给你一段文本,要求你从起点位置按最少的按键将光标移动到终点位置. 其中ge算两次按键,大写字母如W可以按shift+w(算两次按键),或者在Caps Lock打开的状态下按一下w,打开/关闭Caps Lock算一次按键. shift不能按住不放,如在Caps Lock大写的情况下, 按下shift+G和shift+E来实现ge算4次按键. 起始状态Caps Lock是在小写状态 Input 第一行一个整数T代表接下去有T组数据 每组数据第一行是六个整数N,M,sx,sy,ex,sy.其中N,M代表文本的尺寸,(sx,sy)代表起点位置,(ex,ey)代表终点位置,下标从0开始 接下去N行,每行有M个字符,代表文本 接下去N行,每行有M个字符,代表石头,如果是0则表示没有石头,如果是1则表示有石头 [Technical Specification] 0<T<=50 0<N,M<=250 0<=sx,ex<N 0<=sy,ey<M 代表文本的N*M矩阵所有字符的ascii码在32到126之间 每行字符都不以空格开头/结尾 代表石头的N*M矩阵只会包含0或者1 起点和终点一定没有石头 Output 首先输出case数(见sample),接着输出最小的按键使得光标从起点移动到终点.如果走不到终点则输出-1. Sample Input 8 1 10 0 0 0 9 wwwwwwww w 0111111110 1 10 0 0 0 9 WWW.WWWW W 0111111110 1 10 0 0 0 9 e eeeeeeee 0111111110 1 10 0 0 0 9 E EEEE.EEE 0111111110 1 10 0 9 0 0 bbbbbbbb b 0111111110 1 10 0 9 0 0 BBBBB.BB B 0111111110 1 10 0 9 0 0 . gegegege 0111111110 1 10 0 9 0 0 . gEgE..gE 0111111110 Sample Output Case #1: 1 Case #2: 2 Case #3: 1 Case #4: 2 Case #5: 1 Case #6: 2 Case #7: 2 Case #8: 3
QQ钱包接入问题,一直签名错误
我的网站最近准备接入QQ钱包支付,一切就绪但是接口一直报签名错误,我把所有请求字符串、签名和XML输出来了也并未发现哪里有问题。我想问问有没有哪位大哥有验签工具的,给我一份或者帮我看看这个有没有错误。 我开始以为是接口秘钥错误,然后重置了好几次,确定key并没有错误,后来又查看是不是缺了某个参数,后来检查了下也并没有。 按键名拼接的字符串并拼接秘钥key后的字符串: ``` body=121545445444&fee_type=CNY&mch_id=1508061891&nonce_str=1qva73hnb3q3ui5mz8d6fmbsf1b7og6v&notify_url=http://127.0.0.1:8088/pay/qqpay_notify.php&out_trade_no=202001081240075600250253&spbill_create_ip=127.0.0.1&total_fee=1000&trade_type=NATIVE&key=mQiw2feH4xqyd98q0B9ALdFxbxISo7iM ``` MD5后的值 ``` 3dfd38cdc138f4c2f80d992660f2c922 ``` 请求XML ``` <xml> <out_trade_no>202001081240075600250253</out_trade_no> <body>121545445444</body> <fee_type><![CDATA[CNY]]></fee_type> <notify_url><![CDATA[http://127.0.0.1:8088/pay/qqpay_notify.php]]></notify_url> <spbill_create_ip><![CDATA[127.0.0.1]]></spbill_create_ip> <total_fee>1000</total_fee> <trade_type><![CDATA[NATIVE]]></trade_type> <mch_id>1508061891</mch_id> <nonce_str><![CDATA[1qva73hnb3q3ui5mz8d6fmbsf1b7og6v]]></nonce_str> <sign><![CDATA[3DFD38CDC138F4C2F80D992660F2C922]]></sign> </xml> ``` 至于域名,我已经上传服务器在QQ钱包审核通过的域名下进行过测试,结果与本地测试相同,都是报SIGNERROR
麻烦大神帮我看看为什么这段jsp代码里,为什么点击按键没有触发对应的方法,也捕获不了文本框的内容?
![图片说明](https://img-ask.csdn.net/upload/202001/01/1577839493_854964.png) +++++++++ ![图片说明](https://img-ask.csdn.net/upload/202001/01/1577839506_403309.png) +++++++++ ![图片说明](https://img-ask.csdn.net/upload/202001/01/1577839517_477553.png) +++++++ ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>更新角色信息</title> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> </head> <body> <script> function msgUpdate() { alert("wwww"); var updateId = ${"#updateId"}; var updateName = ${"#updateName"}; alert(updateName); $.get("${pageContext.request.contextPath}/insert/byId", {updateId:updateId,updateName:updateName},"json"); } </script> <form> <input id="updateId" type="text" placeholder="请输入id"/><br> <input id="updateName" type="text" placeholder="请输入name"/><br> <input id="updatedBtn" type="button" value="提交" onclick="msgUpdate()"/> </form> </body> </html> ``` +++++ ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>新建用户</title> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> </head> <body> <script> function msgInsert() { var insertId = $("#insertId").val(); var insertName = $("#insertName").val(); // 取值 var result = $("#result").val(); alert(insertId); $.get("${pageContext.request.contextPath}/ic/insertUser", {insertId:insertId,insertName:insertName},"json"); } </script> <form> <input id="insertId" placeholder="请输入id" type="text"/><span id="check"></span><br> <input id="insertName" placeholder="请输入用户名" type="text"/><br> <input id="insertBtn" type="button" value="提交" onclick="msgInsert()"/> </form><br> <a href="./userList/findAll">跳转到用户列表</a> <h3>${requestScope.result}</h3> <h3>${result}</h3> </body> </html> ``` ++++++++++ update可以说是从insert复制粘贴过去的,但是一直没有我想要的效果 | 函数不能触发,也捕获不了文本框里的内容 | 请问是为什么?
帮我改C语言代码(51单片机LCD1602显示时间从k1这些按键控制变成矩阵按键控制)
帮我改C语言代码,51单片机LCD1602显示时间从k1这些按键控制变成矩阵按键控制(现在是可以用k1这些按键来修改了) 原理图: ![图片说明](https://img-ask.csdn.net/upload/201912/22/1577010044_884857.png) ![图片说明](https://img-ask.csdn.net/upload/201912/22/1577010062_997331.png) 下面是代码: ``` //下面是main.c代码 /******************************************************************************* * 实验名 : 万年历实验 * 使用的IO : * 实验效果 :1602显示时钟,按K3进入时钟设置,按K1选择设置的时分秒日月,按K2选择 *选择设置加1。 * 注意 : *******************************************************************************/ #include<reg51.h> #include"lcd.h" #include"ds1302.h" sbit K1=P3^1; sbit K2=P3^0; sbit K3=P3^2; sbit K4=P3^3; //管脚接线 void Int0Configuration(); void LcdDisplay(); unsigned char SetState,SetPlace; void Delay10ms(void); //误差 0us /******************************************************************************* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void main() { unsigned char i; Int0Configuration(); LcdInit(); Ds1302Init(); while(1) { if(SetState==0) { Ds1302ReadTime(); } else { if(K1==0) //检测按键K1是否按下 { Delay10ms(); //消除抖动 if(K1==0) { SetPlace++; if(SetPlace>=7) SetPlace=0; } while((i<50)&&(K1==0)) //检测按键是否松开 { Delay10ms(); i++; } i=0; } if(K2==0) //检测按键K2是否按下 { Delay10ms(); //消除抖动 if(K2==0) { TIME[SetPlace]++; if((TIME[SetPlace]&0x0f)>9) //换成BCD码。 { TIME[SetPlace]=TIME[SetPlace]+6; } if((TIME[SetPlace]>=0x60)&&(SetPlace<2)) //分秒只能到59 { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x24)&&(SetPlace==2)) //小时只能到23 { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x32)&&(SetPlace==3)) //日只能到31 { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x13)&&(SetPlace==4)) //月只能到12 { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x7)&&(SetPlace==5)) //周只能到7 { TIME[SetPlace]=1; } // if(SetPlace==5) //月只能到12 // { // TIME[SetPlace]=; // } } while((i<50)&&(K2==0)) //检测按键是否松开 { Delay10ms(); i++; } i=0; } } LcdDisplay(); } } /******************************************************************************* * 函数名 : LcdDisplay() * 函数功能 : 显示函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void LcdDisplay() { LcdWriteCom(0x80+0X40); LcdWriteData('0'+TIME[2]/16); //时 LcdWriteData('0'+(TIME[2]&0x0f)); LcdWriteData('-'); LcdWriteData('0'+TIME[1]/16); //分 LcdWriteData('0'+(TIME[1]&0x0f)); LcdWriteData('-'); LcdWriteData('0'+TIME[0]/16); //秒 LcdWriteData('0'+(TIME[0]&0x0f)); LcdWriteCom(0x80); LcdWriteData('2'); LcdWriteData('0'); LcdWriteData('0'+TIME[6]/16); //年 LcdWriteData('0'+(TIME[6]&0x0f)); LcdWriteData('-'); LcdWriteData('0'+TIME[4]/16); //月 LcdWriteData('0'+(TIME[4]&0x0f)); LcdWriteData('-'); LcdWriteData('0'+TIME[3]/16); //日 LcdWriteData('0'+(TIME[3]&0x0f)); LcdWriteCom(0x8D); LcdWriteData('0'+(TIME[5]&0x07)); //星期 } /******************************************************************************* * 函数名 : Int0Configuration() * 函数功能 : 配置外部中断0 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Int0Configuration() { //设置INT0 IT0=1;//跳变沿出发方式(下降沿) EX0=1;//打开INT0的中断允许。 EA=1;//打开总中断 } /******************************************************************************* * 函数名 : Int0() * 函数功能 : 外部中断0 中断函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Int0() interrupt 0 { Delay10ms(); if(K3==0) { SetState=~SetState; SetPlace=0; Ds1302Init(); } } /******************************************************************************* * 函数名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Delay10ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } //下面为ds1302.c代码 #include"ds1302.h" //---DS1302写入和读取时分秒的地址命令---// //---秒分时日月周年 最低位读写位;-------// uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; //---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---// //---存储顺序是秒分时日月周年,存储格式是用BCD码---// uchar TIME[7] = {0, 0, 0x12, 0x01, 0x01, 0x02, 0x13}; /******************************************************************************* * 函 数 名 : Ds1302Write * 函数功能 : 向DS1302命令(地址+数据) * 输 入 : addr,dat * 输 出 : 无 *******************************************************************************/ void Ds1302Write(uchar addr, uchar dat) { uchar n; RST = 0; _nop_(); SCLK = 0;//先将SCLK置低电平。 _nop_(); RST = 1; //然后将RST(CE)置高电平。 _nop_(); for (n=0; n<8; n++)//开始传送八位地址命令 { DSIO = addr & 0x01;//数据从低位开始传送 addr >>= 1; SCLK = 1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK = 0; _nop_(); } for (n=0; n<8; n++)//写入8位数据 { DSIO = dat & 0x01; dat >>= 1; SCLK = 1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK = 0; _nop_(); } RST = 0;//传送数据结束 _nop_(); } /******************************************************************************* * 函 数 名 : Ds1302Read * 函数功能 : 读取一个地址的数据 * 输 入 : addr * 输 出 : dat *******************************************************************************/ uchar Ds1302Read(uchar addr) { uchar n,dat,dat1; RST = 0; _nop_(); SCLK = 0;//先将SCLK置低电平。 _nop_(); RST = 1;//然后将RST(CE)置高电平。 _nop_(); for(n=0; n<8; n++)//开始传送八位地址命令 { DSIO = addr & 0x01;//数据从低位开始传送 addr >>= 1; SCLK = 1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK = 0;//DS1302下降沿时,放置数据 _nop_(); } _nop_(); for(n=0; n<8; n++)//读取8位数据 { dat1 = DSIO;//从最低位开始接收 dat = (dat>>1) | (dat1<<7); SCLK = 1; _nop_(); SCLK = 0;//DS1302下降沿时,放置数据 _nop_(); } RST = 0; _nop_(); //以下为DS1302复位的稳定时间,必须的。 SCLK = 1; _nop_(); DSIO = 0; _nop_(); DSIO = 1; _nop_(); return dat; } /******************************************************************************* * 函 数 名 : Ds1302Init * 函数功能 : 初始化DS1302. * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Ds1302Init() { uchar n; Ds1302Write(0x8E,0X00); //禁止写保护,就是关闭写保护功能 for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年 { Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]); } Ds1302Write(0x8E,0x80); //打开写保护功能 } /******************************************************************************* * 函 数 名 : Ds1302ReadTime * 函数功能 : 读取时钟信息 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Ds1302ReadTime() { uchar n; for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年 { TIME[n] = Ds1302Read(READ_RTC_ADDR[n]); } } //下面是lcd.c代码 #include"lcd.h" /******************************************************************************* * 函 数 名 : Lcd1602_Delay1ms * 函数功能 : 延时函数,延时1ms * 输 入 : c * 输 出 : 无 * 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。 *******************************************************************************/ void Lcd1602_Delay1ms(uint c) //误差 0us { uchar a,b; for (; c>0; c--) { for (b=199;b>0;b--) { for(a=1;a>0;a--); } } } /******************************************************************************* * 函 数 名 : LcdWriteCom * 函数功能 : 向LCD写入一个字节的命令 * 输 入 : com * 输 出 : 无 *******************************************************************************/ #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com) //写入命令 { LCD1602_E = 0; //使能 LCD1602_RS = 0; //选择发送命令 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = com; //放入命令 Lcd1602_Delay1ms(1); //等待数据稳定 LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); //保持时间 LCD1602_E = 0; } #else void LcdWriteCom(uchar com) //写入命令 { LCD1602_E = 0; //使能清零 LCD1602_RS = 0; //选择写入命令 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; // Lcd1602_Delay1ms(1); LCD1602_DATAPINS = com << 4; //发送低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; } #endif /******************************************************************************* * 函 数 名 : LcdWriteData * 函数功能 : 向LCD写入一个字节的数据 * 输 入 : dat * 输 出 : 无 *******************************************************************************/ #ifndef LCD1602_4PINS void LcdWriteData(uchar dat) //写入数据 { LCD1602_E = 0; //使能清零 LCD1602_RS = 1; //选择输入数据 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = dat; //写入数据 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); //保持时间 LCD1602_E = 0; } #else void LcdWriteData(uchar dat) //写入数据 { LCD1602_E = 0; //使能清零 LCD1602_RS = 1; //选择写入数据 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; LCD1602_DATAPINS = dat << 4; //写入低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; } #endif /******************************************************************************* * 函 数 名 : LcdInit() * 函数功能 : 初始化LCD屏 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ #ifndef LCD1602_4PINS void LcdInit() //LCD初始化子程序 { LcdWriteCom(0x38); //开显示 LcdWriteCom(0x0c); //开显示不显示光标 LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //设置数据指针起点 } #else void LcdInit() //LCD初始化子程序 { LcdWriteCom(0x32); //将8位总线转为4位总线 LcdWriteCom(0x28); //在四位线下的初始化 LcdWriteCom(0x0c); //开显示不显示光标 LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //设置数据指针起点 } #endif ```
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Ol4网格生成以及优化
概述 先描述一下大致场景:以0.05为单元格大小生成网格,并在地图上绘制,绘制的时候需要区分海陆。本文以此需求为契机,简单描述一下该需求的实现以及如何来优化。 效果 实现 优化前 var source = new ol.source.Vector({ features: [] }); var vector = new ol.layer.Vector({ source...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
蓝桥杯知识点汇总:基础知识和常用算法
文章目录基础语法部分:算法竞赛常用API:算法部分数据结构部分 此系列包含蓝桥杯绝大部分所考察的知识点,以及真题题解~ 基础语法部分: 备战蓝桥杯java(一):一般输入输出 和 快速输入输(BufferedReader&amp;BufferedWrite) 备战蓝桥杯java(二):java编程规范和常用数据类型 备战蓝桥杯java(三):常用功能符以及循环结构和分支结构 备战蓝桥杯java(四...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 · ...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 意思是密码。 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mkdir:Make directory ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问