- 博客(250)
- 资源 (10)
- 收藏
- 关注
原创 修改sql server的数据文件路径
然后在默认路径C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA拷贝数据库文件到目录E:\Swisslog\Database\DATA。1.1 Name为testdb对应的testdb为:C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\testdb.mdf。1 查询数据库文件路径(在数据库客户端ssms操作)
2024-10-30 20:45:55 364
原创 winform实现托盘语音提醒
3 检测到操作系统被客户点静音后,需要程序控制开启音量(在运行过程中,由于语音重复播放,客户很烦,就会点静音,后面搞了一个在客户点静音后,如果客户一直没处理问题,就在10分钟后重新开启音量播放音频)3 网上找一张icon的图片,重新命名为ico_audio.ico,并放到debug目录,接着网上找一个要播放的mp3音频,并重新命名为"发生药槽错误,请盘点变红的药槽.mp3"MuteMinute为最小音量,为了客户把音量调得过小,小于该音量后,程序自动把音量调大。要上班了,代码就不解释了。
2024-10-10 09:06:06 441
原创 winform实现托盘后台运行
3 网上找一张icon图片,重新命名为ico_audio.ico,并放到debug目录。1 新建名为DrawerListen的winform程序。2 默认带出的主窗体重新命名为FrmMain。很简单的东西,代码就不解释了。
2024-10-10 08:32:02 212
转载 Visual studio提示无法打开qt的ui文件
对于以上情况的解决方法可以根据设置步骤和图示进行设置正确的QT设计器;设置流程: 选中.ui文件 --> 右键弹出选择“打开方式” --> 在弹出的窗口中点击“添加” --> 在程序一栏中选择QT设计器的路径 --> 确定,可将新添加的设计器设置位默认,防止后续还会出现此问题,设置完成后再次打开.ui文件就可以正常编辑你想要的界面了。3、找到designer.exe的目录,我的是:C:\Qt\6.5.3\msvc2019_64\bin。5 并把该设计器设置为默认(点击"设置默认值(D)"按钮)
2024-09-13 11:32:12 199
转载 HttpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭(C#)
使用C#在调试一个第三方的接口时,使用post的方式,json数据格式请求,尝试了各种请求头都没成功,api都换了好几个都不成功,后面了解到没指定ProtocolVersion,我以前调其它厂商的接口都不需要的。如果是json数据格式,需要把ContentType修改为:application/json。
2024-08-30 08:20:38 182
原创 qt开发环境搭建Qt Creator并创建Demo项目
安装以下内容进行勾选,最好按照我这个来勾选,后面也能省心一点,不然在创建项目的向导中,无法选择Kit选项,提示:“No suitable kits found”如果后面要安装新功能,可以打开MaintenanceTool.exe这个工具进行安装(这个工具在安装目录下,上面我选择的安装路径为:C:\Qt,如下图:)选择"Qt Widgets Application",然后点击"选择"按钮。下载后点击安装,没有账号得先注册一个账号,如下图,然后点击下一步。填写类名等信息,为了简单,我这里默认,然后点击下一步。
2024-08-23 16:39:55 364
原创 利用ZXing.Net Bindings for EmguCV识别条形码及绘制条形码边框17(C#)
4.1.3 接着使用CvInvoke.Dilate把灰度图的轮廓进行膨胀处理,由于是条形码,所以卷积核用得比较大,用了20*20的卷积核,目的是为了把条形码中的竖线给整合成一个整体。目前能想到的算法是:根据获取到条码轮廓最左边的那个点和最下面的那个点,然后计算这两个点连线,计算夹角,得到对应要旋转的角度A,另外的要旋转的角度为180-A。4.1.6 想要有好一点的识别效果,可以调整第一膨胀的卷积核的大小,图片的清晰度等。把这个压缩包下载下来后解压,展开libs目录的runtimes目录。
2024-08-14 14:58:27 1208
原创 利用Emgucv绘制条形码边框16(C#)
4 添加项目引用Emgu.CV.dll、Emgu.CV.Platform.NetFramework.dll、System.Drawing.dll和System.Runtime.InteropServices.RuntimeInformation.dll。2 把win-x64目录的native目录下的文件全部拷贝到项目的运行目录Debug目录下。1 新增控制台项目,.net framework为4.7.2。win10 64位。3 项目选择x64。
2024-08-13 17:37:48 244
原创 利用C#和Snap7工具模拟S7通信(包含DB地址讲解)
但KepServerEx是收费的,而且模拟的DB块超过64就不行了,当然Snap7在本文中也是只能模拟DB1、DB2和DB3的数据,但Snap7提供了C#版的运行程序,完全可以根据需要修改源码完成要模拟的DB块(由于有一个项目需要,我已经尝试过修改源码成功模拟DB100、DB101、DB102和DB103的数据,后面有空在把代码分享出来)上图中第1个红色方框的十六进制地址为0000,第2个红色方框十六进制的地址为000F,第3个红色方框十六进制的地址为0012,地址排布相信你能看得懂。
2024-06-18 21:25:52 1756
原创 一个巧用委托解决的问题(C#)
我是做桌面医疗软件开发的,前段时间在做一个需求。在签发检验项目医嘱时,调用第三方接口,然后带出检验项目对应的采血管医嘱,生成医嘱时,需要调用UI界面的一个方法来获取到医嘱序号,不然会导致报错,而调用医嘱接口的逻辑时在业务逻辑层,不在UI层,所以无法直接调用到UI界面的方法获取医嘱序号,为了遵循系统原来分层的架构,我们不能把调用接口的逻辑放在UI层。业务逻辑层和UI层之间还嵌套其它的交互层,医嘱号的数据类型是int,所以想要在业务逻辑层获取到UI层的医嘱序号,我想到了C#自带的Func委托。
2024-04-10 17:29:01 408
转载 利用Winform实现电压表或电流表
本文的内容是搬运而来,还是国外的资源容易获取,不像国内的,遮遮掩掩,各种想让你掏钱。1 新建名为WinformDemo1的winform项目,.net framework选择4.0。2 新建名为AnalogMeterControl的类,并编辑如下。3 生成项目,在工具箱中就可以看到该自定义控件了,如下图。MaxValue是刻度最大值。MinValue是刻度最小值。Value是设置指针的值。好了,本文到此结束。
2024-04-03 16:26:19 261
原创 利用Winform实现简陋版的温度计(仅供参考)
本人水平有限,如有写得不对的地方,望指正。为了简单化,做了一个简陋版的温度计控件,有点丑哈。1 新建名为WinformDemo1的winform项目,.net framework选择4.0。设置属性值时同时调用Validate()方法,会触发OnPaint方法进行重新绘制控件。2 新建名为ThermometerControl的类,并编辑如下。3 可以设置它的属性值,Temperature属性是温度值。3 生成项目,在工具箱中就可以看到该自定义控件了,如下图。好了,本文到此结束。
2024-04-03 16:08:19 447
原创 利用Winform实现文字滚动(仅供参考)
Label的位置在最右边时,位置的坐标为(自定义控件的Width,Label的y值);Label的位置在最左边时,位置坐标为(0,Label的y值),所以Label在X方向上的值只能在0到Width之间变化。1 先自定义一个继承UserControl的控件,再放置一个Label控件,加一个定时器定时更新Label的x轴的位置即可。Speed是滚动的速度,1到100,如果设置的值小于1,则会自动重置为1,如果设置的值大于100时,会自动重置为100。本人水平有限,如有写得不对的地方,望指正。
2024-04-03 15:52:34 602
原创 通过C#和KepServer完成模拟S7协议通信
通过关键词KepServer、C#搜索,发现出来的文章都是关于OPC的,好奇怪,在搜索资料的过程中,了解到了软件博图(不好装,PLC编程的,要求电脑性能高,对操作系统有要求,动不动装不成功,直接劝退了我)、PLC仿真软件。本文作者水平有限,如有写得不对的地方望指正,我以前是做his开发的,没有上位机开发的工作经验,以下内容仅供学习参考使用,趁着有时间就学习一下,没有硬件PLC,只能用KepServer来造数据了。1.5 打开visual studio 2019。好了,本文的内容到此结束。
2024-03-17 18:14:20 1056
原创 EF Core入门例子(以SqLite为数据库)
1 新增名称为EFCoreDemo的.net core控制台程序,版本选择.net core 2.1,项目不能放到带中文的目录下,不然到后面执行Add-Migration命令时会报如下的错误。上面的的KnowledgeDataBase.sqlite为SqLite的数据库名称。由于用的是SqLite数据库,会在项目中生成一个名为。6 打开程序包管理控制台,好了,本文的内容到此结束。
2024-02-02 11:27:13 1477
原创 dnSpy调试工具二次开发2-输出日志到控制台
NewTestScreen类Execute方法的outputService.Value.Create获取到写日志到控制台的接口,就是借鉴了类OutputLogger.cs中的Initialize_UI方法中的。dnSpy.Debugger项目下的ToolWindows\Logger目录下的类OutputLogger.cs。生成dnSpy项目,并点击dnSpy的"测试新增"菜单,可以看到成功输出了日志到dnSpy的控制台。在LogEditor.cs的这三个地方打上断点。好了,本文的内容到此结束。
2024-01-27 21:24:22 637
原创 dnSpy调试工具二次开发1-新增菜单
2 在名为dnSpy的项目下Properties目录的资源文件dnSpy.Resources.zh-CN.resx新增字符串资源(这里配置不同国家语言的资源文件,我的操作系统是中文,所以编辑的是dnSpy.Resources.zh-CN.resx),键的名称:Menu_TestNew 键值:测试新增。其实上面的Header就是绑定到资源对应的中文名称,所以这个一级菜单的名称将会是:测试新增。3 在名为dnSpy的项目下Menus目录的类文件AppMenus.cs新增一级菜单类。
2024-01-06 17:47:39 1326
原创 dnSpy调试工具断点信息是保存在哪里的呢
本人是C#开发,dnSpy工具用的比较多,有时候想把有用的断点信息保留下来,挪到别的机器上也能使用。3 打开dnSpy目录,可以看到一个名为dnSpy.xml的配置文件,我们的断点调试信息就保存在这个文件下,当然,那天你看得不爽了,可以直接删掉这个配置文件,下次还会自动生成的。接着去找注册表,也没找到,没办法,只能阅读dnSpy的源码了,经过一翻努力,被我找到了。2 在打开的目录中,我们可以看到一个名为dnSpy的目录(如果没有这个目录,要先打开dnSpy.exe后关闭就可以看到该目录了)
2023-12-28 13:18:51 717
原创 调用别人提供的接口无法通过try catch捕获异常(C#),见鬼了
通过反编译看了一下"调用封装CA签名接口的代码块"对应的代码,它的大概处理流程是这样的:先通过Spring.Net接口调用CA签名的业务逻辑,记为业务逻辑A,业务逻辑A的实现流程如下:通过反射,拿到对应的CA签名的实现类(因为我们这边的代码需要兼容多个CA签名的厂商),我们这边对接的是网政通的CA,我这边就只介绍一下它的大概流程:先获取提供接口的CA用户的用户信息,记为步骤1;4 是不是在不同的AppDomain的异常,就捕获不到,后面也尝试过了,也是能捕获的。
2023-12-10 12:02:34 1421
原创 C#动态拦截并覆盖第三方进程的函数,实现函数篡改(外挂)
TargetClient.TargetTestClass这个要被篡改方法的TargetTestClass类的全路径(即TargetClient.exe客户端中的类TargetTestClass的全路径,即命名空间+类名)这就可以干很多坏事了,如把别人的系统登录方法该篡改了(不管是混淆过或者没被混淆过的代码,都有方法拿到,这里就不展开了),你懂的。
2023-11-10 17:52:34 983 1
原创 把wpf的窗体保存为png图片
昨晚在stack overflow刷问题时看到有这个问题,今天早上刚好来尝试学习一下。1 新建.net framework 3.5的wpf窗体程序。
2023-11-07 09:21:20 929
原创 深度学习框架TensorFlow.NET之数据类型及张量2(C#)
TensorFlow中数据的基本单位为张量,前面例子中我们操作的变量或者常量都是属于张量的一中,我们可以使用张量表示标量(0维度数组)、向量(1维数组)、矩阵(2维数组)、RBG图像(3维数组)、视频(4维数组)等n维数组。如:tf.add(number1, number2)是对number1和number2的值相加,可以相加,都是int类型。通过tf.constant(2,name:"常量2名称")声明了一个值为2,名为'常量2名称'的整型常量。声明了一个值为10,名为'int变量'的整形变量。
2023-11-05 18:33:05 1735 3
原创 深度学习框架TensorFlow.NET环境搭建1(C#)
2 在tf.constanct(str)报未能将对象引用到实例,应该是TensorFlow.NET包和SciSharp.TensorFlow.Redist包的版本对应不上,应该多尝试TensorFlow.NET的版本,直到不报错为止。2 分别安装TensorFlow.NET包(先装)和SciSharp.TensorFlow.Redist(后装),版本兼容性不好,最好安装的版本与我的保持一致,不然报错到你怀疑人生。(异常来自HRESULT:0x8007007E)window10 64位。
2023-11-05 11:13:22 2327
原创 带你人工识别C#开源库BarcodeLib生成的一维码Code128
1 先把数字如:6986081进行编码,两个数字作为一组进行编码,这里数字69一组,86一组,08一组,剩下一个1就比较特别,源码看得不是很懂,有特殊的规则进行编码。3 通过C#的绘图类Graphics的画线方法.DrawLine进行绘制线,如要绘制10110010000编码,碰到1就纵向绘制一定宽度的直线,碰到0就不绘制直线。通过编码10011100110 查找本文后面的编码表得到的数值为17,但前面有一个CODE_A,应该编码为1。2 把两位数字通过查表法进行编码,编码为11位的0或1数字。
2023-11-02 16:58:35 1258
原创 利用win32的GetLastInputInfo函数实现锁屏(C#)
前两天刚好看到群里面讨论这个问题,刚好看到我们系统也有这个功能,就研究了一下,我们这边实现这个功能的目的如下:当用户长时间不操作系统时,自动退出系统并退回到登录界面,想要使用系统,就得重新输入账号和密码。上述代码启用了一个定时器,定时1秒,其中lockScreenSecond是锁屏的秒数,即超过lockScreenSecond秒都没操作电脑就弹出锁屏界面。1 新建winform项目,项目名称为:LockScreen。运行程序后,不做任何操作等待10秒左右弹出锁屏界面。(检测鼠标的位置及焦点事件)
2023-11-01 16:31:11 1096
原创 wpf资源Resources探究性学习(一)
你注意观察一下,上图中不同控件下的资源键值key都为txt2,但都不报错,那以那个为准呢,我们大概都能猜到是从里到外进行寻找,如果在Button控件上使用key值,则会先找Button自己定义的,没找到再往上寻找StackPanel中声明的资源,如果还是没找到,则会再会往Window标签寻找。在这里用到了Binding,Source指定的是静态资源stu2,Path指定要显示对应的那个属性,这里是要显示Student2的Name属性,运行程序没有任何问题。assembly=程序集名称"
2023-09-20 22:14:33 899
原创 Winform直接与Wpf交互
2.1 在前文的基础上继续操作(当然咯,这三个PresentationCore.dll PresentationFramework.dll WindowsBase.dll引用是少不了的),新建项,模板选择'用户控件(WPF)',名称为WindowTest。winfrom通过新建项的方式不能直接新建wpf窗体,但我们可以使用新建的wpf的用户控件,然后略做修改就行,当然你也可以添加已有的wpf窗体,这样就可以省略2.1步骤的操作。以非模态的方式(即Show的方式)弹出wpf窗体。
2023-09-19 15:58:07 2154
原创 代码控制鼠标光标移动并点击和代码模拟键盘按下(C#)
想要在'触发键盘按下'按钮(名为btnPress)触发自动按钮逻辑,就得通过PointToScreen把控件的坐标转换为计算机桌面的坐标(以前做Unity 3D的时候经常看到这种骚操作),然后把转换后的坐标作为鼠标光标的位置,最后通过模拟鼠标左键按下和抬起,一定要鼠标按下和抬起一起使用才有效,因为鼠标按下和抬起同时完成才算实现鼠标按下的逻辑。演示效果3: 点击按钮,然后控制鼠标光标移动到演示效果1中的那个按钮的位置上,并实现点击,接着就会看到效果1中的效果(模拟键盘输入,把输入的内容显示到文本框上)
2023-08-13 18:50:02 3723
原创 打印Winform控件实现简陋版的分页打印(C#)
为了简单起见,纸张大小,打印机等信息按照默认的来,本文的实现方案是:打印Panel中的控件信息,循环进行打印,打印完一张,把信息重新填充到对应的控件上再继续打印。说是要把控件里的内容重新赋值给另外一个控件myControlToDisplay,大概看了一下提供的代码,感觉代码不全,就没有照着来试了。从上往下,就像叠罗汉一样,直到截取并打印完毕,这只是个人的想法,还没验证。读取txt记事本里面的内容,并分页打印,提供的代码。作者的水平有限,如有错误,望指正。好了,本文的内容正式开始。代码太简单了,就不解释了。
2023-07-30 17:18:58 1122
原创 打印Winfrom控件实现简陋版的打印(C#)
好了,本水文到此结束。后面还有继续深入研究的,如打印单个控件TextBox,Button,还有实现分页打印等。通过截图的方式进行打印在前面的文章后面已经介绍过,有问题。
2023-07-30 15:33:14 1212
翻译 Winform中的线程Threading in WinForms(翻译)
而这两个消息队列的区别是,发送到Send Message队列的线程(记为a),把消息发送到队列后,该a线程会堵塞并等主线程执行完消息队列中的消息后,该线程a才会往下执行。同样的,Form_Load中的for循环和AddControl中的for循环并不会并行执行,Form_Load中的for循环和AddControl中的for循环都在主线程执行(即在同一个线程中执行),由于Invoke方法有堵塞的作用,所以会先执行AddControl中的for循环,再执行Form_Load中的for循环。
2023-07-28 09:13:34 138
原创 利用Graphics的CopyFromScreen实现简陋版的打印(C#)
今天趁着有空,就查一下有没有打印Winform的Control控件相关的API,在Youtube中看到了一个视频与之相关的,视频地址:Print contents of WinForms Application using C# and VB.Net。前段时间,在做一个打印的需求,需要把Winform界面的控件及内容全部打印出来,但有一个比较坑的地方是,公司提供的打印API打印单选框,打印单选框时发现选框和内容总是有那么一点点不对齐,看着很别扭。可以看到,任务栏中的菜单都出来了。
2023-07-23 16:49:46 622
原创 配置legacyUnhandledExceptionPolicy属性防止处理异常后程序崩溃退出(C#)
依旧没找到解决的方案,上一家另外一个系统的代码就无法获取到了,但我看过,记得是在AppDomain.CurrentDomain.UnhandledException注册的事件中通过代码的方式Dump出文件,但程序依旧还是会崩溃。但我试了一下,并不好使,改变.net framework的版本都试过,不好使,可能是我操作的姿势不对吧。-------------------废话开始,可以跳过不看。-------------------废话结束,可以跳过不看。好了,废话到此结束,正式开始本文的内容。
2023-06-17 17:07:28 2508
原创 利用WinDbg查看堆栈中方法入参的值4(C#)
1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题,还得要求用32位的任务管理器导出Dump文件,32位的任务管理器的路径如下:C:\Windows\SysWOW64\taskmgr.exe。可以看到方法WindbgDemo.DownLoadBp.DownLoadOperation中的参数名称为url,对应的值的地址为:0x0000000003222bd8。本文目的,就是查看导出的dump文件中堆栈中的方法参数值,这样方便后续分析问题。threads查看线程。
2023-06-11 18:24:04 1386
原创 WinDbg安装入坑3(C#)
1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题,还得要求用32位的任务管理器导出Dump文件,32位的任务管理器的路径如下:C:\Windows\SysWOW64\taskmgr.exe。使用C#编写一段程序,并用64位的任务管理器导出为32位的Dump文件,试一下WinDbg Preview和老版的WinDbg在使用过程中的坑。又是提示版本不一致了,看着有戏,看看是不是64位的任务管理器导出的原因。可以看到导入成功,接着再来看堆栈信息,可以看到成功了。
2023-06-11 18:02:45 1979
原创 WinDbg安装入坑2(C#)
1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题,还得要求用32位的任务管理器导出Dump文件,32位的任务管理器的路径如下:C:\Windows\SysWOW64\taskmgr.exe。不管是使用.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll还是使用。可能是我们导入的sos版本不对,由于我们的应用程序是.net framework 3.5 的,可以试试。没有报错,再次输入!
2023-06-11 17:13:29 1833
原创 WinDbg安装入坑1(C#)
1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题,还得要求用32位的资源管理器导出Dump文件,32位的资源管理器的路径如下:C:\Windows\SysWOW64\taskmgr.exe。自动安装,安装完成后,在桌面左下角开始中搜索WinDbg即可搜索到,下载完毕后,试了一下,不用添加符号路径也能正常使用。当然,这种方式是每次打开WinDbg都得配置一次,可以使用环境变量的方式进行配置,我们使用到的是32位的安装包,一路傻瓜式下一步就行。
2023-06-11 15:57:25 4053
原创 winform的RichTextBox控件追加文本及图片(实现笔记录入和笔记搜索功能)
在工作中,在工作中,难免有一些笔记要记录下来,方便后续工作中快速找到。最加一个笔记的富文本,先new了一个空的RichTextBox(richTextBox),然后把文本加载进MemoryStream,new出来的richTextBox通过LoadFile方法把内容加载进RichTextBox控件,最后通过目标RichText(rtInput)的SelectedRtf属性值 this.rtInput.SelectedRtf = richTextBox.Rtf完成富文本的追加工作。好了,本文到此结束。
2023-06-03 17:04:58 2986
是利用Snap7源码修改而来,使用C#编程语言 用于对PLC的DB数据块仿真
2024-06-25
利用winform 的RichTextBox和SQLite实现笔记编辑器功能
2023-06-03
Emgucv打开Tensorflow模型例子
2022-11-11
fastdfs安装包.rar
2022-01-02
C#操作USB的Demo及相关工具.rar
2020-05-28
ffmpeg.autogen的例子.rar
2020-05-06
CefSharp51-x32.rar
2020-03-28
CefSharp51-x64.rar
2020-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人