自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 资源 (2)
  • 收藏
  • 关注

原创 WPF颜色(SolidColorBrush)和Win32颜色(COLOREF)互转的方法

附:从16进制字符串转SolidColorBrush的方法。在WPF中,在Win32颜色互相转换时,需要用到以下方法。

2024-09-16 10:51:04 239

原创 .Net Gacutil工具(全局程序集缓存工具)使用教程

打开ClassLibrary1类库工程的Properties->AssemblyInfo.cs,添加一行。Gacutil是用于对GAC进行管理的工具,它随 Visual Studio 一起安装。像平常我们在Visual Studio中引用系统程序集时,这些程序集便来自于。是程序集的标识符,取决于 reference_scheme。全局程序集缓存,是用于存放.Net应用程序共享的程序集。这个时候,我们再去查看该程序集,就可以看到如下详细信息了。1 gacutil.exe /i "程序集路径"

2024-09-16 10:50:00 384

原创 Visual Studio 中的Code Snippet(代码片段)功能介绍

用于标识当前的代码片段用于哪种编程语言,可选项(VB、CSharp、CPP、XAML、XML、JavaScrip、TypeScript、SQL、HTML)(这个选项是必需的)7   DateTime.Now的代码片段表示在文档中选择的要在调用时插入代码段的文本(如果定义了字面量,会直接选择字面量,当按下回车后,会跳到。在工具菜单下,选择【代码片段管理器】项,可以打开代码片段管理器。:用于标识 代码片段可以用于哪个位置。

2024-09-15 14:43:01 765

原创 C#命令行参数解析库System.CommandLine介绍

System.CommandLine是一个基于.Net Standard 2.0(支持.Net FrameWork 4.6.1.2+和.Net Core 2.0+)的命令行参数解析库,项目地址 https://github.com/dotnet/command-line-api,目前,该项目还是属于beta状态,期待以后的正式版本。1、RootCommand是顶级命令,RootCommand可以添加Command,Command又可以再添加SubCommand。如此可以无限循环,没有限制。

2024-09-15 14:41:41 937

原创 如何删除git提交记录

查了下资料,终于找到简单粗暴的方式来删除提交记录。这样操作完成后,服务器最近的两次提交记录已经看不到了。今天在提交github时,不小心提交了敏感信息,不要问我提交了啥,问就是不知道。

2024-09-14 11:28:42 634

原创 C#使用Access数据库使用总结

话说这Access数据库确实是有点年代了,前面在深圳的一家放射医疗公司,数据库用的Access,后面在我的建议下,换成了SQLite。上面已经使用过参数了,这里需要注意的时,不能直接传DateTime类型,而是需要传入字符串,不然会报错。有时候可能查询的语句比较简单,就不想使用参数的形式的,直接去拼SQL语句,如果判断的条件是日期,就要用##将日期包起来,不然会报错,如下。回到长沙后,找了一家工业仪器的公司,发现也是用的Access数据库。例如在Access中直接执行模糊查询语句,查询包含z的姓名。

2024-09-14 11:26:05 576

原创 提取msi安装包中的文件

如果需要提取msi安装包中的文件,也可以使用。在前面的文章中介绍过如何使用。安装包中文件存放的路径,如。这个程序执行自动化安装(

2024-09-13 09:28:59 116

原创 如何在Windows下安装jekyll

一开始配置的时候看官方文档上面说要安装GCC和MAKE,我折腾了好久,后面才发现,在Windows环境下只需要一个安装包就可以了,就是我前面说的带devkit的安装包。因为官方是推荐Linux搭建吧,所以我第一次搭建也是花了点时间查资料的,这里做个总结,给后面有需要的小伙伴做个参考。这里我主要了解了一下hexo和jekyll,最终选择了jekyll,因为看到有一些MVP的大佬也在用。前面我下载的是不带开发包的安装包,那个安装包是没有画红线这个选项的,结果后面怎么都执行不成功。至此jekyll就安装成功了。

2024-09-13 09:26:28 636

原创 如何让.NET Core工程同步输出到.Net Framework

【代码】如何让.NET Core工程同步输出到.Net Framework。

2024-09-12 14:05:28 275

原创 WPF创建不规则窗体时WebBrowser控件不显示的问题

最近有小伙伴需要在不规则窗体上放置WebBrowser控件,因为设置了WindowStyle="None" 和 AllowsTransparency="True"。//这里可以控制宽高。导致这个问题的原因是因为空域(airspace)问题,因为WebBrowser并不是一个原生的WPF控件,而是一个Win32控件。//point是左上角0,0的位置。//这里可以控制位置。

2024-09-12 14:02:37 1044

原创 SQL Server开启网络访问

目前工作中很少用到SQL Server了,最近需要测试几个表,需要搭建一个SQL Server数据库服务,这里做个总结吧。配置完成后,重启SQL Server服务。按正常情况下,到这一步就可以通过网络访问SQL Server数据库了。打开SQL Server配置管理器,展开SQL Server 网络配置,找到TCP/IP。安装这里就不做详细介绍了,本文只介绍如何开启SQL Server网络访问。保存后,重启SQL Server服务,可以正常网络访问。IPALl这里,填入49295和1433,如下。

2024-09-11 14:39:50 729

原创 C#如何简单地组合linq查询条件

6 students.Add(new Student() { Name = "雍心慈2", StudentID = "2" });使用EF后,也遇到同样的问题。在linq中是可以利用表达式树来实现组合条件查询的功能,但是需要一定的学习门槛。像以前没有使用EF时,对于从界面输入的多条件查询时,都是使用SQL语句的拼接,因为使用了哪几种条件是未知的。如果你已经了解了基本的linq语法,但是又暂时没有时间学习表达式树,可以试试以下的简单方法。//循环执行过滤条件。

2024-09-11 14:38:04 1217

原创 解决Windows Server 2012加密套件过时的问题

在网上查了一下,得出的大概结论就是这种AES_128_GCM的加密算法,比AES_256_CBC的更安全快速,而这种AES_256_CBC加密套件被360标记为已过时。一直以为是.cn域名的问题,后面才发现是IIS上面加密套件过时的问题。因为我在安装所有的可用更新后,系统出现了问题,跟InternetExplorer有关的内容全部打不开了,组策略也显示不出来了,这里没办法截图了。“计算机配置”“管理模板>”“网络 > SSL 配置>设置”下的“SSL 密码套件顺序”,为要启用的所有密码套件配置优先级列表。

2024-09-10 15:20:05 315

原创 在WPF中使用矢量图标

IconFont是包含符号和字形而不是字母或数字的字体。它们在网络设计人员中很受欢迎,因为可以用CSS与常规文本相同的方式设置样式。另外,它也是矢量的。最初IconFont是在Web开发中广泛使用的,但是也可以放到WPF中进行使用。

2024-09-10 15:18:03 1310

原创 如何在Visual Studio中调试.NET源码

有时候如果我们想在Visual Studio中单步调试.NET的源码,可以按下面的方式操作。今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。测试了一下,大量数据情况下,耗时几乎都是0ms,所以应该差别不大。我一般的做法是先判断是否为null,再判断Count。(仅.NET Core)仓库里的源码,找到对应的文件。此时再调试时,就能单步调试.NET源码。如果提示找不到某个符号,可以下载。

2024-09-09 12:02:56 827

原创 Win32使用邮槽(Mailslots)进行进程间通信

如果域中的多个进程都使用相同的名称创建mailslot,则发送到该mailslot并发送到域的每条消息都将由参与进程接收。由于一个进程可以控制服务器 mailslot 句柄和在打开 mailslot 进行写入操作时检索的客户端句柄,因此应用程序可以轻松地在域中实现简单的消息传递工具。如果函数成功,则返回值是 mailslot 的句柄,用于服务器 mailslot 操作。它的作用是:使用指定名称创建 mailslot,并返回 mailslot 服务器可用于对 mailslot 执行操作的句柄。

2024-09-09 11:57:30 707

原创 如何读.Net Framework 的源码?

很早以前就用.Net Reflector去看.Net的源码,但是每次碰到内部调用,就没有办法深入了解了,最近也是一次偶然的机会,我知道 了这些内部调用是在cli中实现的,而cli的最新源码也是开源 的,所以才有了这篇文章。在.Net Framework中,实际上也是调用的这个函数,只是做了多层封装。因为这些是在cli中实现的。但这里要提一句的是,Windows API内部是如何实现的,这个我没有去了解过,以我现在的能力,估计也理解不了内部的实现逻辑,如果有小伙伴略懂一二,也可以在下面的评论教 教 我。

2024-09-07 23:37:39 1688

原创 Win32函数调用约定(Calling Convention)

在__cdecl调用约定下,函数的多个参数由调用者按从右到左的顺序压入堆栈,被调函数获得参数的序列是从左到右的,清理堆栈的工作由调用者负责,因为函数参数的个数是可变的。__fastcall调用约定称为快速调用约定,前两个双字(DWORD)参数或更小尺寸的参数通过寄存器ECX和EDX来传递,剩下的参数按照自右向左的顺序压栈传递,清理堆栈的工作由被调用者函数来完成。调用约定下,函数的多个参数由调用者从右到左的顺序压入堆栈,被调函数获得参数的序列是从左到右的,清理堆栈的工作由被调用函数负责。

2024-09-07 23:35:36 788

原创 Win32中的字符串

推荐使用Unicode字符集,Unicode字符集支持的字符更多,就不用担心区域化时,字符显示乱码的问题。在新版本的API函数中,也将会只有Unicode的版本,而没有ANSI版本。需要注意的是,有些头文件会使用预处理器符号UNICODE,而有些头文件使用_UNICODE,所以在Visual Studio 创建项目时,这两个符号都会被定义。针对不同的字符版本,微软的C运行时库也定义了许多相似的宏,用于区分Unicode和ANSI,如。为了更方便的使用Unicode和ANSI字符,系统还定义了如下宏。

2024-09-05 09:19:07 383

原创 Windows中的页交换文件(paging file)

它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。当应用程序调用VirtualAlloc函数来把物理存储器提交给地址空间区域时,该空间实际上是从硬盘上的页交换文件分配得到的。从应用程序的角度来说,页交换文件以一种透明的方式增加了应用程序的可用内存,保留、提交或更改调用进程的虚拟地址空间中页面区域的状态。在以前经常可以见到教大家调整虚拟内存的文章,因为那个时候的硬件配置还没有像现在这么好。

2024-09-05 09:17:16 163

原创 Win32创建虚拟打印机

拿到Microsoft Print to PDF的打印机参数后,其它参数不变,只更改打印机名称,调用AddPrinter创建一个新打印机。创建端口后,调用EnumPrinters函数枚举打印机,找到Microsoft Print to PDF打印机。1、安装Microsoft Print To PDF虚拟打印机,该打印机可以将所有打印数据转换为PDF。2 /// 根据Microsoft Print To PDF创建新虚拟打印机。4、设置新虚拟打印机的端口为新创建的端口。2 /// 创建本地打印机端口。

2024-09-04 16:36:40 1034

原创 Win32绕过UAC弹窗获取管理员权限

到这一步我们就可以以提升过的权限执行对应 的程序 ,如果执行COM Elevation Moniker的程序身份是不可信的(未签名/签名不受信息/已过期等),则会触发UAC弹窗,如果是可信的,就不会触发UAC弹窗。在早些年写一些桌面软件时,需要管理员权限,但是又不想UAC弹窗,所以一般是直接将UAC的级别拉到最低,或者直接禁用UAC的相关功能。关于UAC这里仅做简单介绍,可以在文末的参考资料里获取关于UAC的更详细的介绍。绕过UAC弹窗目前流行的有几种方案,这里只介绍基于COM组件的。

2024-09-04 16:34:59 1687

原创 Win32获取系统图标

使用SHGetStockIconInfo函数可以获取系统定义的 Shell 图标的信息。:以下零个或多个标志的组合,这些标志指定请求的信息。:指向SHSTOCKICONINFO 结构的指针。SHGetStockIconInfo函数。枚举中的值之一,指定应检索哪个图标。

2024-09-03 14:54:55 488

原创 Win32远线程注入

也就是说,虽然进程不同,但是开机后,kernel32.dll的加载基址在各个进程中都是相同的,因此导出函数的地址也相同。那么,可将LoadLibrary函数的地址作为多线程函数的地址,某个DLL路径字符串作为多线程函数的参数,并传递给CreateRemoteThread函数在目标进程空间中创建一个多线程,这样能不能成功呢?此值不能与任何其他值一起使用。指向由线程执﹐行类型为LPTHREAD_START_ROUTINE的应用程序定义的函数指针,并表示远程进程中线程的起始地址,该函数必须存在于远程进程中。

2024-09-03 14:52:53 1337

原创 Win32设备I/O详解

这个参数既可以标识一个已经打开的文件的句柄,也可以是 NULL。使用CreateFile打开文件时,文件指针的读取位置会被默认设置为0,如果调用ReadFile函数从文件读取了10个字节到内存中,那么系统会更新文件指针。不同的设备有不同的设置函数,以串口为例,设置串口参数使用的是setCommConfig函数,这里不作具体介绍,实际使用时,可以查阅MSDN文档。//读取10-19字节。在前面的文章中,介绍了mailslot的使用,它就是属于设备的一种,并且它的读取和写入跟文件读取写入用的是一样的函数。

2024-09-02 23:59:19 1299

原创 WPF MVVM如何在ViewModel直接操作控件对象

后面的解决办法是在窗口加载时,将控件对象以参数传递到Loaded事件的处理命令中,然后将这个对象记录下来,后面就可以直接操作这个控件了。早些年在WPF中使用COM组件时,需要在ViewModel中操作COM组件中的控件对象,但是这个控件对象又不支持绑定,今天同事在使用WebView2的时候,又遇到这个问题,写个文章分享一下,给后续需要的小伙伴提供点参考。我们创建一个WPF的项目,然后在界面上放置一个WMP控件(Windows Media Player)。

2024-09-02 23:58:25 1402

原创 PE文件结构详解(非常详细)

1 //大小为: 0x40(64)字节3// MZ标记 0x5a4d// 最后(部分)页中的字节数// 文件中的全部和部分页数// 重定位表中的指针数// 头部尺寸以段落为单位// 所需的最小附加段// 所需的最大附加段// 初始的SS值(相对偏移量)// 初始的SP值// 补码校验值// 初始的IP值// 初始的SS值// 重定位表的字节偏移量// 覆盖号// 保留字// OEM标识符(相对m_oeminfo)// OEM信息// 保留字。

2024-08-31 23:01:31 1308

原创 如何在JPG文件中隐写数据

最近在做资源管理器背景的一个功能时,需要将信息传递到DLL中去,主要就是传递一些比较简单的参数,包括图片的契合度,透明度之类的。通信方式有多种,毕竟是练手的功能,就想找一些以前没用过的方式。在我前面的文章中,介绍过数字水印技术,其中的两种方式就是在图像文件中嵌入数据。

2024-08-31 22:29:57 881

原创 C#如何获取用户头像

如果有多个文件,取最近修改的那个文件即可。直接通过下面的代码可以获取所有头像文件。格式,我们通过下面的方式提取即可。不过获取出来的文件是。

2024-08-30 16:25:32 661

原创 C#如何查看/写入日志到Windows事件查看器

7 EventLog.WriteEntry("MyApplicationLogSource", "测试日志内容",EventLogEntryType.Warning,100010);8 EventLog.WriteEntry("MySource", "你可以指定日志内容", EventLogEntryType.Warning, 10010);像平常我们开发的程序如果想更方便的查找错误,除了本地日志外,还可以将日志写入到Windows事件日志中的【应用程序和服务日志】类别下,可以方便我们快速查找问题。

2024-08-30 16:24:12 1182

原创 Windows服务器下配置Gogs HTTP自动跳转HTTPS

找了一圈没找到如何在Gogs配置同时启用HTTP和HTTPS,并且HTTP自动跳转HTTPS。,在HTTP重定向这里直接填这个网址就好了。这样在以http访问时,会自动跳转。

2024-08-28 14:53:43 271

原创 如何使用Gogs搭建自己的git服务器

最近偶然发现一款轻量级的git服务器,以前一直用的svn server,最近想搞个git服务器, 用gitlab资源占用太多了,gogs是一款轻量级git服务器,非常适合个人使用。到Git官网http://git-scm.com/downloads,下载并安装git,这里不做介绍,直接安装即可。因为我服务器不会经常重启,如果有重启,准备手动去开gogs,所以也没去详细了解NSSM工具的使用了。对模板文件进行修改,修改完成后,重启gogs即可。,下载对应的模板文件,然后放到templates。

2024-08-28 14:52:37 723

原创 给自己的几点建议

增强分析问题,解决问题的能力。坚持总结归纳问题的习惯;

2024-08-27 16:04:20 283

原创 C#操作剪贴板

System.Windows(WPF)或System.Windows.Forms(Winform)下。1 data.GetDataPresent(typeof(Bitmap)) 返回true。7 MessageBox.Show("剪切版为空");从剪切板上获得数据不影响剪贴板的内容,GetData的返回值是存储在剪贴板上的副本。如果设置为false,或者不设置,将在程序运行结束后不保留剪切板内容。要想从剪切板获得一个对象,可以调用 GetData()方法。

2024-08-27 15:57:44 543

原创 如何在CMD/PowerShell中使用命令行管理IIS

参数查看所有命令的用法。后面有时间我会更新appcmd的详细使用教程。/physicalPath 网站根目录。/name (必需) 站点名称。/bindings 绑定。

2024-08-26 17:29:07 335

原创 WPF中如何根据数据类型使用不同的数据模板

我们在将一个数据集合绑定到列表控件时,有时候想根据不同的数据类型,显示为不同的效果。时,系统文件夹和普通文件夹分别显示为不同的效果,就可以使用模板选择器功能。这里我们定义一个磁盘和文件夹的数据类型,一个磁盘对象可以包含多个文件夹。然后定义一个资源字典,分别在里面定义两种数据的数据模板。,它可以根据数据对象和数据绑定元素来选择。WPF提供了一个模板选择器类型。,根据不同的数据类型返回不同的。例如将一个文件夹集合绑定到。我们先定义如下的数据模型。

2024-08-26 17:27:26 2082

原创 WPF中如何使用后台代码动态创建数据模板(DataTemplate)

所以这里采用了工厂模式,工厂模式是一种常见的设计模式 ,它指的是根据给定的参数动态创建类型,以达到解耦的目的。3 list.Add(new Student() { Id = 2, Name = "奎文" });2 list.Add(new Student() {Id = 1,Name = "意在" });对于一些简单的数据,例如一个string,一个int,在显示时,无须额外控制。但是对于复杂数据类型,就需要使用数据模板来控制数据的呈现方式。上,我们就得到一个动态的数据模板(

2024-08-25 01:04:53 798

原创 如何在Windows下使用make编译Makefile

‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序,从而提高软件开发效率。安装codeblocks后,找到codeblocks安装目录下的MinGW的文件夹,将MinGW文件夹下的bin添加到环境变量即可。到这里已经编译了make的二进制 文件了,文件名为gnumake.exe,位于当前目录下的GccRel文件夹。到这里已经编译了make的二进制 文件了,位于当前目录下的WinRel文件夹gnumake.exe。

2024-08-25 01:02:42 1467

原创 在C#中如何监控其它应用全屏

eventMin:事件常量的最小值,取值来源可以看前面的表。可以使用EVENT_MIN 常量来代表可用的最小值,因为我们我们这里只需要Hook一种事件,所以直接传EVENT_OBJECT_LOCATIONCHANGE就可以。hmodWinEventProc:包含钩子函数的模块,如果是来自DLL,需要指定,如果是来自当前模块,指定为NULL。步骤4也可以使用GetWindowPlacement函数,然后判断窗口的状态是否是最大化。7 //如果不需要判断是否是前台应用,这个判断可以移除。

2024-08-23 15:12:59 1281

原创 WPF中的XAML是如何转换成对象的?

我跟他说XAML的实现和后台代码实现是一样的,都会转换成对应的对象的,XAML相当于一种助记符,它内部其实还是.cs代码。到这里我们应该很清晰的看到系统是通过Application.LoadComponent函数将XAML读取,并转换成相应的类。我记得以前在哪看到过,XAML最终都是会转换为.cs代码的,但我一下也想不起来了。函数,在前面部分代码中,将XAML转换成一个流,然后再通过这个函数读取流。干脆就直接查一查WPF的内部实现好了,看看XAML是如何转换为对象的。经过查阅资料,我提供了两种解决方案。

2024-08-23 15:10:07 605

codeblocks-20.02mingw官网下载,codeblocks官网的资源下载太慢,做一个搬运

codeblocks-20.02mingw官网下载,codeblocks官网的资源下载太慢,做一个搬运

2024-08-23

inkscape-1.3.2 portable-2023-11-25(强大免费的设计工具Inkscape)

官网下载太慢了,这里做一个搬运。

2024-03-08

在WPF中对现有图像进行绘制的两种方法

在WPF中对现有图像进行绘制的两种方法。第二次上传资源。

2017-10-25

WPF图片放大镜

实现了类似电商网站商品浏览的效果,比例计算不是非常精确 ,仅供参考。。。第一次上传资源 。

2017-10-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除