Windows桌面开发
Windows平台开发
小鹰信息技术服务部
Tolerance, Diversity. Hit Refresh.
展开
-
VB6.0 从内存地址获取String内容
怎样从地址得到完整的字符串内容呢?VB6.0开发,调用了DLL中的方法去获取两个字符串,但实际返回字符串的地址。原创 2024-01-19 23:16:58 · 501 阅读 · 0 评论 -
VB6.0报错:操作符AddressOf使用无效
操作符AddressOf使用无效。原创 2024-01-19 21:51:54 · 581 阅读 · 0 评论 -
VB6.0调用dll报错:DLL调用约定错误
网上查资料发现一种可能性:调试程序不行,但生成exe可以。DLL和VB代码都检查过了,不应该有问题。每时间研究细节了,就这么往下走了。尝试生成exe之后执行成功!"DLL调用约定错误"原创 2024-01-19 21:25:22 · 542 阅读 · 1 评论 -
VBJSON报错:缺少:语句结束
cJSONScript和cStringBuilder报相同的错误,都在第一行: VERSION 1.0 CLASS。研究了半天没啥结果,之前使用这个库的时候没有什么问题,所以判定是当前电脑或项目的环境配置问题。实测可行,基于官方例子运行程序,没有报错。编译错误:缺少:语句结束。原创 2023-08-26 11:15:55 · 451 阅读 · 0 评论 -
‘VB6EXT.OLB’ could not be registered
打开VB6提示:‘VB6EXT.OLB’ could not be registered。原创 2023-08-21 20:15:06 · 294 阅读 · 0 评论 -
C# File.ReadAllLines()报错
项目中需要读取一个文本文件的内容,调用C#的File.ReadAllLines(path)方法,但是报错,就提示unknown exception,也没其他提示了。仔细研究了一下,应该是客户电脑上跑了其他程序正在往这个文件里写东西,把文件lock了,导致ReadAllLines()方法读不了。文件是在的,并且,如果把文件拷贝到另外一个路径,再次读取是正常的。原创 2023-08-16 12:37:33 · 822 阅读 · 0 评论 -
C# EeventHandler传递参数
【代码】C# EeventHandler传递参数。原创 2023-08-15 18:09:52 · 700 阅读 · 0 评论 -
C#多线程报错:The destination thread no longer exists.
原因,一开始用独立线程调用了scan方法,称之为Thread1, 然后scan方法内部又启动了独立线程,称之未Thread1-1,Thread1-2,等等。然后scan方法执行结束之后,Thread1结束,为了要让scan方法循环执行,再次启动另外一个Thread。此时Thread1已经结束,而Thread1-1,1-2是依赖于它的,所以Thread1-1,1-2就报错了:The destination thread no longer exists.原创 2023-08-15 17:58:56 · 354 阅读 · 0 评论 -
C# 获取电脑序列号和主板序列号
项目中有需求要从软件中获取当前电脑的整机序列号和主板序列号,研究一番,C#的实现如下:对于主流的计算机产品来说,这两个方法都没有问题。但是对于一些行业定制的产品,比如某些加固平板,加固笔记本等设备,主板序列号可能是缺失的,要具体问题具体分析了。原创 2022-12-03 15:46:44 · 2883 阅读 · 0 评论 -
Windows解除LongPath限制: Could not find a part of the path “xxxxx“
重新下载package成功,说明路径长度限制已经解除。看上去是一个很长的文件路径,系统不支持了。LongPathEnabled项的值设为1。原创 2022-08-08 11:22:50 · 1322 阅读 · 0 评论 -
DevCon.exe 导出output至指定文件
该工具可以读取电脑的一些设备信息,方方面面的,从固件版本到驱动信息等。近期使用DevCon.exe解决了一些问题,挺好用。那么如果是希望把读取的信息导出至文本文件呢?就是加一个右尖括号。...原创 2022-07-26 13:15:51 · 212 阅读 · 0 评论 -
VB6.0 组织json对象并生成json字符串
帮一客户修改VB6程序,需要将一些文本转换成json数组并输出。经过一番研究,决定用插件实现。1. 安装插件ChilkatChilkat Full-Version Software Components Downloads (chilkatsoft.com)选择 Chilkat ActiveX Componentswin32和x64的版本,实测我的Win10 x64系统用win32版本是有效的。2. 添加引用工程 > 引用,勾选 Chilkat ActiveX v9.5原创 2022-03-27 16:46:19 · 3249 阅读 · 2 评论 -
VB6.0 url encode
帮一客户修改VB6程序,需要对一个http url进行编码操作,也就是url encode。经过一番研究,决定用插件实现。1. 安装插件ChilkatChilkat Full-Version Software Components Downloads (chilkatsoft.com)选择 Chilkat ActiveX Componentswin32和x64的版本,实测我的Win10 x64系统用win32版本是有效的。2. 添加引用工程 > 引用,勾选 Chi.原创 2022-03-27 16:37:05 · 1174 阅读 · 0 评论 -
VB6.0生成MD5
VB6.0生成MD5原创 2022-03-27 16:30:23 · 1239 阅读 · 3 评论 -
VB6.0 让函数返回一个值
VB6.0 让函数返回一个值原创 2022-03-27 16:15:35 · 4007 阅读 · 0 评论 -
Powershell 获取用户输入
有个场景,需要在powershell中获取用户的输入,然后进行下一步。使用 Read-Host可以实现这种效果,脚本如下:$ID = Read-Host "Please enter ID"# use $ID to do something.........原创 2022-03-09 16:52:12 · 2789 阅读 · 0 评论 -
Powershell中调用cmd文件,带参数
有个场景,要在Powershell脚本中,调用一个cmd文件,并给它传一个参数。网上查了半天,试了很多方法都不起作用。找到一个可行的方法如下:$SN = 8888& C:\test.cmd -number $SN注意 & 符号,不能缺。...原创 2022-03-09 09:30:22 · 821 阅读 · 0 评论 -
Visual Studio: 为解决方案设置启动项目
VS2017, 新建了一个解决方案,里面有两个项目,一个库项目,一个控制台项目:启动时提示:A project with an Output Type of Class Library cannot be started directly.解决办法:把控制台项目设置为启动项目:右击Solution> Properties> Common Properties> Startup Project > Single ...原创 2022-02-03 15:47:13 · 3155 阅读 · 0 评论 -
C#程序设置以管理员权限运行
有些代码操作需要取得管理员权限,不如把整个程序设置为以管理员运行。C#程序设置以管理员权限运行,比较简单:1. 为项目添加manifest文件(已添加的则跳过)。2.requestedExecutionLevel 设置为 requireAdministrator<!--<requestedExecutionLevel level="asInvoker" uiAccess="false" />--><requestedExecutionLevel le..原创 2022-01-14 11:00:29 · 4287 阅读 · 0 评论 -
Powershell 添加开机启动项
在某些自动化任务中,需要让程序开机启动。Powershell 添加开机启动项的代码如下:$RunPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"$Key = "Test"$Value = "C:\test.cmd"#测试该项是否存在$Item = (Get-Item -Path $RunPath)$Properties = $Item.Property$Item.Dispose()if ($Properties.原创 2022-01-12 15:39:30 · 1869 阅读 · 0 评论 -
C# WinForm 字符串中包含 NUL导致显示不全
C#调用PowerShell指令得到的返回值中,有时会出现无法显示的字符,比如:Get-Tpm指令,返回:TpmPresent : TrueTpmReady : TrueTpmEnabled : TrueTpmActivated : TrueTpmOwned : TrueRestartPending : True原创 2021-12-31 16:56:03 · 995 阅读 · 0 评论 -
C#执行PowerShell指令,以字符串形式输出
尝试在C#代码中执行PowerShell指令,方法如下:1. 引用using System.Management.Automation;Install-Package System.Management.Automation.dll -Version 10.0.105862. 代码PowerShell ps = PowerShell.Create();ps.AddCommand(@"(Get-Tpm");ICollection<PSObject> results = p原创 2021-12-28 15:01:03 · 1432 阅读 · 0 评论 -
VB6.0 TCP发送数组
一客户求助,说VB程序要发送一个指令原创 2021-12-16 17:43:45 · 422 阅读 · 0 评论 -
C#调用exe程序,带参数,处理返回值
本周的项目中,有一个定制的对话框,以exe文件的形式供另外一个程序调用。涉及到3个需求:1. exe程序要能接收参数。2. exe退出时需要返回一个结果。3. 调用者需要能把参数传给exe。经过一番研究,实现了上述功能,记录如下:1. 让exe文件运行的时候接收参数给Main函数增加参数string[] args。C#中就是在Program.cs中。[STAThread]static void Main(string[] args){ //... }2.原创 2021-12-04 16:17:34 · 5709 阅读 · 0 评论 -
C#报错:Could not find any resources appropriate for the specified culture or the neutral culture
WinForm程序报错,提示:Could not find any resources appropriate for the specified culture or the neutral culture代码:object obj = ResourceManager.GetObject("btn_bg_down", resourceCulture);资源文件都在的,代码也正常引用,没有报错。解决办法:找到报错的资源文件, 在它的属性列表中找到Persistence这项,下拉换一个选原创 2021-11-27 22:25:00 · 1045 阅读 · 0 评论 -
Nuget.targets的路径
有时需要修改Nuget.targets配置,那么Nuget.targets文件在哪个位置呢?以我的电脑为例,路径为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet参考:Visual Studio Feedback...原创 2021-11-09 18:10:49 · 486 阅读 · 0 评论 -
Visual Studio从历史版本创建分支
在代码中增加了一个功能,需要更新到客户现场;但是客户现场用的是很久以前的老版本,并且不能马上升级到最新版本。那么怎样才能把新的改动放进一个历史版本呢?答案是选定某个分支(比如主分支),在它的历史记录中选中某一条,然后创建分支:然后就可以在这个新创建的历史分支上修改并发布程序了。...原创 2021-10-28 10:56:47 · 300 阅读 · 0 评论 -
LNK1104: cannot open file MSVCRTD.lib
在VS2017中调试一个C语言项目,运行提示:LNK1104 cannot open file MSVCRTD.lib解决办法:在VS安装程序中添加“VC++2017 version 15.9 v14.16 Libs for Spectre(x86 and x64)”问题解决。原创 2021-09-30 11:30:13 · 1394 阅读 · 0 评论 -
WinForm RichTextBox 禁止自动换行
在WinForm的RichTextBox中,如果一行内容过长,默认它会自动换行,如下:但是在某些场景下不需要它自动换行,横向左右滚动就行。那么禁止自动换行的方法是什么呢?答案是设置RichTextBox的WordWrap为false:效果:...原创 2021-07-24 21:54:50 · 1731 阅读 · 0 评论 -
C# 打开CMD窗口并执行CMD 指令
C#程序中调用CMD 指令,打开CMD窗口执行:string command = "xxxx";System.Diagnostics.Process.Start("CMD.exe", "/K " + command);注意,参数 /K不能少。参考:https://stackoverflow.com/questions/15878810/how-to-execute-command-on-cmd-from-c-sharp...原创 2021-07-19 10:54:04 · 5182 阅读 · 0 评论 -
robocopy 中的/MIR参数
项目中有一处使用了robocopy, 按常规理解,robocopy是用来复制文件的,但是实际发现目标路径中某些文件被删掉了。于是研究了这行命令:robocopy /z /r:0 /w:0 /MIR {source} {dest} {format}问题出在 /MIR参数,有了这个参数,则命令会做一个检查,如果文件A在目标路径中存在,而在源路径中不存在,就会把目标路径中的文件A删除,第三个参数 {format}就规定了这些文件的名称格式,符合格式的名称都会进行这个检查。...原创 2021-07-13 17:47:19 · 2335 阅读 · 0 评论 -
WinForm 复制窗体到其他项目
今天需要从A项目中把其中一个窗体搬到B项目中。网上找到了方法:c# - Copying winforms between projects in Visual Studio - Stack Overflow先把.cs, .Designer.cs, .resx三个文件复制过来。在VS中,右击,添加 > 现有项,只选.cs文件, 另外两个文件就自动跟进来了。然后就行更改.cs和.designer.cs中的namespace就可以了。...原创 2021-07-08 18:49:55 · 2381 阅读 · 1 评论 -
C#读取SqlServer字段报错:System.InvalidCastException:“Specified cast is not valid.”
C#读取SQL Server字段报错:System.InvalidCastException:“Specified cast is not valid.”reader.GetDouble(reader.GetOrdinal("so2t"));数据库设计:表中的数据类型是real,代码中用getDouble无法读取。网上查询找到了答案:SQL Server的real类型在C#中对应单精度Single, 用常用的float即可。reader.GetFloat(reader.G原创 2021-05-19 19:28:25 · 773 阅读 · 0 评论 -
OpcDaNet报错: 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“OPCDA.Interface.IOPCServer”
C#, 使用OpcDaNet读取OPC数据,程序放在Windows Server上运行报错:未经处理的异常: System.InvalidCastException: 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“OPCDA.Interface.IOPCServer”。此操作失败的原因是对 IID 为“{39C13A4D-011E-11D0-9675-0020AFD8ADB3}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 没有.原创 2021-05-19 18:57:43 · 2104 阅读 · 0 评论 -
C#连接SQL Server数据库
某项目中需要写一个小程序实时查询SQL Server中的数据,但是不知道C#连接SQL Server的语句怎么写。经过一番探索,连接成功。连接字符串格式:Data Source=IP,端口\实例名;Initial Catalog=数据库名;User ID=用户名;Password=密码;using System.Data.SqlClient;//...Console.WriteLine("开始连接。。。"); SqlConnection conn = new SqlConn原创 2021-05-18 23:01:29 · 527 阅读 · 0 评论 -
VS2017 TFS报错:No eligible items were found for addition
VS2017,TFS,添加文件时报错,提示:No eligible items were found for addition奇怪,其他几个文件夹可以添加文件,唯独这个文件夹不行。网上找了一个类似的问题,尝试了方法,可行:右键文件夹(或者上一级文件夹),Advanced > Remove Mapping... 也就是移除映射,然后重新映射一遍,问题解决。参考:http://thecurlybrace.blogspot.com/2011/02/fix-tfs-cloaked.原创 2021-05-06 15:46:55 · 428 阅读 · 0 评论 -
MQTT测试工具
近期,某客户部署了一个MQTT服务器,需要这边进行通讯测试,对方推荐了一个测试工具MQTTX,实测好用,记录如下:下载:https://mqttx.app/打开软件之后新建连接。名字随便起,地址和用户名密码就按照对方给的MQTT服务器信息填,端口号默认1883。连接成功后,在该连接下添加主题(Topic)在这个主题下,订阅(subscribe)消息会定时返回:也可以发布消息(publish):消息发布之后,就能在订阅里面看到:...原创 2021-05-02 12:22:07 · 1011 阅读 · 0 评论 -
Visual Studio2017无法打开,提示 This app can‘t run on your PC
Visual Studio 突然无法打开了,提示This app can't run on your PC.研究了一会儿,找到了原因,是VS2017的devenv.exe坏了,大小变成了0KB。解决的办法是从同事的电脑上复制一个devenv.exe,问题解决。原创 2021-03-24 14:25:01 · 1067 阅读 · 0 评论 -
文件下载功能的前后端实现(RestSharp + SpringBoot)
本周某项目中要实现一个文件下载功能,服务器端和电脑端都要开发。服务器端:SpringBoot实现, 电脑端RestSharp实现,经过一番探索之后搞定,代码如下:SpringBoot:@GetMapping("/download-client")public ResponseEntity<Resource> downloadClient() throws IOException { String filePath = "C:\\test.txt"; File file = n原创 2021-03-23 20:15:45 · 1015 阅读 · 0 评论 -
C# 获取、设置exe文件的版本
Windows下,exe文件都有关于版本的属性,可以在属性-详细里面看到C#中获取文件版本的方法如下:var versionInfo = FileVersionInfo.GetVersionInfo("FurnitureMFG.exe");string clientVersion = versionInfo.FileVersion;C#中设置文件版本的方法如下:Properties > AssemblyInfo.cs[assembly: AssemblyFileVer原创 2021-03-22 18:31:46 · 1580 阅读 · 0 评论