huangtengxiao

黄腾霄 - Windows Developer

Windows

windows

按类别查找文章:Windows


win10 wpf git C# VisualStudio Resharper Git Msbuild Wpf powershell nuget .Net Web CI/CD service WPF setup License python pip wcf resharper code 反模式 代码设计 架构 C++ .NET 音频 vba .net CLI 音视频 工具 多线程 Windows Linux core algorithms JavaScript 网络 visualstudio c++ Unicode c# 系统 编译 PPT 算法 v8 JVM 设计模式 Cef cef 前端 源码 css React win32 Nodejs webpack create-react-app electron node-gyp node 后端 react taro 小程序 webrtc redux
2019
11-22 2019

2019-11-22-C++CLI的Ref和Out使用

最近在搞C++/CLI,发现经常需要涉及Ref和Out的使用,因此记录下。

11-13 2019

2019-11-13-C++CLI的托管字符串std字符串和c字符串的转换

最近在搞C++/CLI,发现经常需要涉及字符串之间的传递和转换,因此记录下。

11-12 2019

2019-11-12-C++CLI的枚举在C#中看不见

最近在搞C++/CLI,发现我在其中写的enum居然不见了,这个是怎么回事呢。

11-10 2019

2019-11-10-看看藏文里面一共有多少个字吧

还记得我10min之前发的2019-11-10-使用StringInfo正确查找字符个数 - huangtengxiao这篇博客么?

你们以为2个Unicode组成的emoji就是极限了么?

这篇文章会带你们体验下世界语言的博大之组合字。

11-10 2019

2019-11-10-使用StringInfo正确查找字符个数

之前在处理文本的时候遇到过这样的一个问题,有的字,它看着是一个,但是程序说他是两个,但是实际真的是一个。 好吧,你们一定没有听懂我在讲什么。没关系一起来看看代码

10-25 2019

2019-10-25-slmgr源码解析

之前大佬要我做一款windows一键激活工具。基本原理是利用我们的license,从后台请求一个微软的正版license,然后调用slmgr进行windows激活。这样就可以把license的控制权留在自己这里,而不用传递给工厂,避免license流失。(所以期望从本文找破解方案的同学可以散了233)所以记录下对slmgr的研究。

03-19 2019

2019-3-19-什么是task.yield

出让执行权:Task.Yield, Dispatcher.Yield - walterlv,毅仔的博客珠玉在前。同学们可以直接跳转过去看。

比较遗憾的是我没有在里面找到Task.Yield的合适的应用场景。关于Task.Yield的应用场景也是争论纷纷,可见这个东西必然很鸡肋。本文尝试了Task.Yield的几种使用场景,看看是否能够将代码变得更加优雅。

坐在MVP旁边狗尾续貂,诚惶诚恐。。

03-08 2019

2019-3-8-resharper喊你回家判空啦

NullReferenceException一定是大多数程序员最讨厌的异常之一

03-07 2019

2019-3-7-手把手教你PInvoke

当你写久了应用层代码,是不是需要来玩一下硬件呀?

03-06 2019

2019-3-6-使用C#模拟键盘输入

假如你想做一个模拟键盘对当前的Active进程进行输入,该怎么办呢?

今天就介绍一个如何利用C#实现编程法模拟键盘输入

02-24 2019

2019-2-24-2019-2-24-C#中的弃元

从 C# 7.0 开始,C# 支持弃元,这是一种在应用程序代码中人为取消使用的临时虚拟变量。

02-24 2019

2019-2-24-元组投影初始值设定项

使用过命名元组的同学都知道,命名元组可以使用“有意义的字段名”来代替Item,用于表示元组的成员。在C#7.1中引入了“元组投影初始值设定项”(tuple projection initializers)提升了命名元组的编程体验

02-24 2019

2019-2-24-元组的相等性比较

元组作为轻量级的数据结构,在c#中具有广泛的引用。但是元组的比较一直以来都是对于成员的依次比较。好在C#7.3开始,引入了元素的相等性比较,让元组的易用性有了大幅提升。

02-13 2019

2019-2-13-wcf入门(15)

本文demo已上传至github:xinyuehtx/WCFdemo

这篇文章将会介绍binding

02-12 2019

2019-2-12-wcf入门(14)

本文demo已上传至github:xinyuehtx/WCFdemo

在之前的2019-1-27-wcf入门(6) - huangtengxiao博客介绍了wcf的会话,这一篇介绍可靠会话

02-01 2019

2019-2-1-wcf入门(13)

本文demo已上传至github:xinyuehtx/WCFdemo

在之前的2019-1-31-wcf入门(12) - huangtengxiao博客介绍了wcf的异步,但是发现一些小伙伴没有注意到的问题。因此做一些补充实验

01-31 2019

2019-1-31-wcf入门(12)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的异步调用

01-31 2019

2019-1-31-wcf入门(11)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的异常回馈

01-31 2019

2019-1-30-wcf入门(10)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的异常回馈

01-29 2019

2019-1-29-wcf入门(9)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的异常回馈

01-29 2019

2019-1-29-多线程UI的多线程问题

我们都知道我们都知道WPF是一个单UI线程的应用模型

01-28 2019

2019-1-28-wcf入门(8)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的并发

01-28 2019

2019-1-28-wcf入门(7)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的实例化

01-27 2019

2019-1-27-wcf入门(6)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的会话

01-27 2019

2019-1-27-Task真的取消了么(2)

在之前的博客2019-1-24-Task真的取消了么 - huangtengxiao介绍了task.run需要在方法执行过程中主动调用ThrowIfCancellationRequested()才能取消,这次我们研究下其他情况的取消场景

01-25 2019

2019-1-25-wcf入门(5)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务操作调用模式的第三种双工模式(Duplex)

01-25 2019

2019-1-25-wcf入门(4)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务操作调用模式的第二种单向模式(One-Way)

01-24 2019

2019-1-24-Task真的取消了么

我们都知道Task.Run方法可以传入一个CancellationToken,用于取消。可是有多少人真的去了解过当调用CancellationSource.Cancel方法时,Task是否真的被取消了

01-24 2019

2019-1-24-wcf入门(3)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务操作的调用模式

01-24 2019

2019-1-8-看看你的PPT是不是被WPS玩坏了

现在的公司老板都爱省钱,所以强制推行WPS。这可苦了我们这些office二次开发的程序员

01-23 2019

2019-1-23-wcf入门(2)

本文demo已上传至github:xinyuehtx/WCFdemo

宇宙起源于helloworld

01-23 2019

2019-1-23-wcf入门(1)

今天开一个新坑WCF的入门教程

01-05 2019

2019-1-2-使用flatten展开AggregateException

在一些并行操作或者任务列表执行的过程中,会需要用到AggregateException进行聚合异常的处理

01-05 2019

2019-1-2-使用AggregateException的Handle过滤指定异常

在一些并行操作或者任务列表执行的过程中,会需要用到AggregateException进行聚合异常的处理

01-05 2019

如何避免写出await await

小伙伴们应该对C#中的await/async模式都很熟悉了,对于一个Task或者Task<T>对象,使用await进行异步任务的等待

2018
12-14 2018

2018-12-14-区分CancellationToken-CancellationTokenSource-CancellationTokenRegistration

发现一些小伙伴的代码中CancellationToken-CancellationTokenSource-CancellationTokenRegistration傻傻分不清楚,今天就对这三个类的使用进行下区分。

12-13 2018

2018-12-13-不要相信那些事件引发者

最近发现C#的事件和wpf的dispatcherobject在一起使用会有一些不容易发觉的问题。

11-14 2018

2018-11-14-window的VirtualScreen

桌面应用常常会遇到多显示器适配问题,比如我们会期望让小人从最左边的屏幕跑到最右边,或者将一个窗口藏在所有显示器的显示区域之外。

11-11 2018

小心double的比较

对于double的比较,存在一些可能的坑,大家应该都清楚。比如容易注意的是double==double的精度问题。但是比较少注意的是double.NaN的比较

11-01 2018

Why not Dispather.CurrentDispatcher

对于WPF程序,大家绕不开的一个概念叫做Dispatcher

10-28 2018

2018-10-28-WPF的只读依赖属性

依赖属性的概念大家应该都很清楚,那么什么是只读依赖属性呢?

10-21 2018

2018-10-21-如何使用git清理本地tag

git tag 与branch 不同,tag是用于为指定的commit添加共享信息的。因此当你辛辛苦苦的为本地仓库清理完了tag列表后,同事又推送了之前的本地tag,心情可想而知。

10-12 2018

2018-10-12-如何解决python找不到Crypto模块

涉及加密算法的python代码,尤其是git上down下来的“老代码”经常会遇到神奇的报错 ImportError: No module named Crypto.Cipher , 这个问题谷歌上也是哀鸿遍野,简单描述下可能遇到的坑,以及解决方案

09-29 2018

2018-9-29-如何查看windows软件激活状态

这篇文章我们聊一下如何查看windows软件激活状态

09-25 2018

2018-9-25-如何使用winrar制作一个安装包

当你完成了一个awesome的程序之后,如何分享给你的小伙伴?压缩包?太low。安装包?太难。

折中一下,搞一个自解压安装包如何?

09-25 2018

2018-9-25-如何让WPF显示非默认格式的图片

人家都已经用上各种自定义的图片格式了,你还在苦苦守候bmp,jpg,png,只是因为想能在wpf中使用?

09-25 2018

2018-9-25-HResult比较有问题?

在c#代码中处理一些系统出现的异常的时候,常常需要对异常的HResult属性进行处理。

09-24 2018

2018-9-24-请不要依赖于异步代码的调用方catch异常

熟悉了c#的异步方法后,各种是不是就会有一种一发不可收拾的情况

09-17 2018

2018-9-17-windows和office激活异同

对于我们这种修电脑、卖电脑的行业(软件工程师(大雾))。可能会遇到出货产品需要进行windows软件激活的订单。(真的就是属于卖电脑的范畴)

09-17 2018

2018-9-17-64位和32位程序的注册表有什么不同

我们都知道对于windows应用来说,注册表是很重要的部分。所有的com组件和部分应用程序的运行都会依赖于注册表。

09-02 2018

2018-9-2-如何使用远程桌面操控局域网主机

亲,你的服务器可用了~

08-24 2018

2018-8-24-快捷调试Nuget包

开发C#项目时通过Nuget引用添加依赖很方便,但是调试的时候就不一样了。

08-23 2018

2018-8-23-Process执行路径

我们可以通过Process开启一个进程,但是如果通过这个进程再开启另一个进程时,就容易发生错误。

08-01 2018

WPF程序在shutdown期间引发的TaskCanceledException

先上堆栈

TaskCanceledException at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at 
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at 
System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout) at
System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout) at 
System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout) at
MS.Internal.WeakEventTable.OnShutDown() at 
MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e) 

07-25 2018

默认的WPF样式在哪里

我们使用WPF的控件时,.NET framework会为我们提供一些默认的样式

07-25 2018

为什么同样的WPF控件在不同的电脑上呈现外观不一致

今天有同事跑过来说遇到了一个奇怪的bug,同样的程序在win7和win10上界面相差了2个像素

07-25 2018

theme主题的原理

在反编译WPF程序集的时候经常会发现一个命名为theme的文件夹

07-15 2018

在RenderTransform上叠加一个ScaleAt

试着想有这么一个场景,当你滚动滚轮时,图像会以你的鼠标中心为缩放中心进行缩放

07-15 2018

如何打印Msbuild时的日志信息

代码出bug会让你发狂,那么编译时出了bug呢?

07-12 2018

RenderTransformOrigin和RotateAt一起作用会怎样

我们都知道RotateTransform会受到旋转中心RenderTransformOrigin的影响

07-05 2018

如何将文字转换为对应的PathGeometry

有些时候你期望用Path画出一些文本的形状

04-25 2018

Git单文件多次提交的cherry-pick

曾几何时,你发现你做的项目经常有甲方爸爸需要xxx定制版

04-24 2018

VisualStudio部分编译

你有一个大的解决方案,里面毛毛多的项目。

一次编译要好久,怎么办?

04-19 2018

Moq基础(六)

这一章是最后一讲,我们讲一下Moq中值得注意的小技巧,以及对Moq使用的评价

04-18 2018

Moq基础(五)

上一章我们将讲了伪造属性和事件

这一章我们将参数匹配,回调,和验证

04-18 2018

Moq基础(四)

上一章讲了如何使用Setup伪造方法

这一章我们将伪造属性和事件

04-15 2018

Moq基础(三)

上一章区分了下stub,和mock

这一章我们的确要开始讲moq的api了

04-10 2018

Moq基础(二)

上一章介绍了手动创建单元测试依赖,和Moq的小demo

这一章我们看一下Moq的使用。

04-10 2018

Moq基础(一)

在教程开始之前,先回顾下单元测试应该有哪些特点?

2017
12-22 2017

一个关于git中编码的问题记录

记录一个关于Git引发的编码异常。

今天我的两个git仓库pull后遇到了同一个问题,git提示多个文件发生了modify。

10-20 2017

意外的键盘输入

最近在开发过程中遇到了些神奇的事情。

具体情况是做一款手写识别程序时,用户反馈自己每写一笔就会开始识别,并清除笔迹。

10-19 2017

神奇的OverLoad

OverLoad就是重载,大家都会。但是大家有没有想过,我们调用一个重载方法的时候会调用哪个呢??

10-18 2017

EventTrigger原理浅谈

EventTrigger相信大家都会写,就和下面的东西一样样的。