- 博客(131)
- 资源 (23)
- 问答 (2)
- 收藏
- 关注
原创 C# WIN10 WinForm调用大漠插件3.1233 最后免费版
比如说有一个COM对象它内部有一个静态变量 gHello,那么这个对象无论生成多少实例对于gHello在内存中只能有一份,那么如果有两个不同的实例在两个线程里面同时去读写它,就有可能出错,所以就要就要有种机制进行同步保护,STA或者MTA就是这种机制。支持STA的COM对象只能在创建它的线程里被使用,其它线程如果再创建它就会失败。COM库在进程中创建一个内存结构,这个内存结构在整个进程中只能有一个,然后让它和调用CoInitializeEx的线程相关联。然后到你的C#工程里,右键菜单中选择“粘贴”。
2024-04-27 17:54:53 2245 1
原创 C# 用Trace.WriteLine输出调试信息无法查看
写程序就会遇见BUG,这时候在代码不同部位输出一些标记的信息对查找错误非常有必要,一般情况下我们都是使用Console.WriteLine()方法来打印信息到控制台窗口,但有时候使用Console.WriteLine()方法会存在不方便的情况,比如鄙人遇到的问题就是程序因为用了一些其他的库,这些第三方库也会打印一些信息到控制台窗口里,造成程序运行时控制台窗口里的信息一大堆一大堆的非常混乱,根本看不到鄙人自己想显示的信息,非常令人头疼。//两个参数,当第一个参数为true时,第二个参数的调试信息会显示出来。
2024-03-08 17:11:46 768
原创 C# 使用Newtonsoft.Json来读取JOSN数组
刚开始学用这个Newtonsoft的时候别人的博客给出的演示例子是先声明一个类,然后实例化这个类,用访问类的数据成员的方式来访问JSON节点,这就比较麻烦了,Newtonsoft其实提供了直接把一整个JSON数据打包成一个JObject对象的方法,然后就可以像用类似数组的方式来访问这些节点。怎么在C#工程中安装Newtonsoft在这里就不提了,随便搜一下就有教程反正也是用NuGet包管理器安装。这里记录一下怎么读取JSON节点。"春哥": "纯爷们","春哥": "纯爷们",
2024-02-19 17:44:57 1278
原创 PSV新内存卡(或内存卡格式化后)如何安装VITASHELL文件管理器
如果你的PSV还没破解,那本文不适合没破解的情况,按照网上其他教程破解完成后会自动安装上其他的文件管理器,然后再用这些文件管理器安装。当然索尼也给PSV开发了一个类似于ITunes的工具,这个Qcma属于第三方的工具。点击“生产或管理设备密码”,需要使用这个密码才能在PSV上登录账号,登录好账号后打开Qcma,连接PSV,如果驱动没问题就会显示连接上PSV了。点击后界面会显示“正在连接”,直接点取消先登录PSN账号,当然需要联网,图片只是演示,鄙人此时开了飞行模式,这是不行的。接下来到PSV上操作,选择。
2023-12-27 17:30:06 3552
原创 CefSharp 获取POST(AJAX)、GET消息返回值(request)
我们操作网页的时候发送或者做了某个动作提交表单之后需要知道我们的动作或者提交是否成功,因为有的页面会因为网络延迟问题提交失败,需要准确的获取到发送消息后服务器的返回值,如果直接通过页面的弹窗获取发送消息后的结果会非常麻烦,有时候一个消息发送后会产生多种不同的返回结果,可能提交成功,可能提交失败,可能消息超时等等,如果能够直接获取到发送消息的Request,无疑会大大方便我们判断。然后获取消息发送后的返回值则是在IResponseFilter类的方法中接收,也新建一个类继承IResponseFilter类。
2023-12-04 16:57:51 1833
原创 C# 播放音频文件(播放提示音)
System.Media名称空间下的类SoundPlayer 可以让我们很方便的播放wav波形声音文件。SoundPlayer类其实就是对winmm.dll文件中API函数的封装。其中Play方法是异步方法,会在另一个线程中播放。如果我们有时候需要等声音播放完毕之后再进行下一步操作。即声音播放需要阻塞当前线程。
2023-09-05 10:28:30 1993
原创 如何将Word中的中文数字转化为阿拉伯数字
&的意思是查找到的内容,也即查找结果本身,也就是例如上面通配符查找的结果就是 第一章 ,^&就代表第一章这3个字,然后在^&通配符后面加个空格,意思是查找的内容后加空格,当然也可以在^&^13,这个通配符字符串的意思就是在 第一章 后面加换行符,如果在^&通配符前加空格或者^13,那么就是在 第一章 前面加空格或者换行符。步骤1:在任意位置输入“第章”,然后把光标放到“第”和“章”的中间,然后ctrl+f9插入域,在域里面输入 autonum,然后按alt+f9 显示域值。
2023-08-30 12:27:03 4575 1
原创 已启用spectre缓存,但找不到spectre缓解库
把这个选项关了就行,但这样就需要每个项目都改一改这个比较麻烦,也可以补全缺失的库,打开Visual Studio在顶部菜单栏“工具”→“获取工具和功能”如果不需要在ARM CPU的机器上运行就不需要下ARM的库,只下X86 X64的库就行。
2023-05-30 10:24:38 685 2
原创 C++解析JSON JSONCPP库的使用
需要的是:jsoncpp-master\src\lib_json 目录下的所有文件和 jsoncpp-master\include\json 目录下的所有文件,在MFC工程目录下新建两个文件夹或者把jsoncpp-master文件夹下的这两个文件夹复制进自己的工程源码目录下。把这3个.cpp文件全设置一遍,然后再设置项目的包含目录,把你工程源码目录下复制过去的jsoncpp-master\include\json 文件夹包含进去。在鄙人这是这个路径,如果创建的文件夹是其他名字需要酌情修改。
2023-05-12 15:57:10 1437 1
原创 C++ MFC调用JS代码获取返回值
但简中网络上此组件的资料少之又少,鄙人也是拿来主义,用老前辈提供的一个操作msscript.dll的类来调用JS,特此写下这篇帖子记录使用过程,以免忘记,为以后再次使用提供说明。此操作类提供了从JS文件加载JS脚本的方法,估计是输入目标文件地址的处理有问题,也搞不清是哪里有问题,目前只有上面那个函数能用,鄙人的办法就是把JS脚本存在一个txt文件里,然后用API读出文件里的文本,在用上面的函数调用,效果也是差不多的。但是要注意txt文件里的JS脚本不能有换行,需要把JS脚本里的换行全部删除后才能成功调用;
2023-05-10 11:47:38 956
转载 解除游戏多开限制,关闭互斥体句柄
(这里的防护建议是,增加多种多开限制的方法 以及 逻辑中增加多该互斥体的使用,这样可以避免直接被恶意关闭)比如说遍历窗口,遍历进程,配置文件,注册表,互斥体,mac地址,ip,公共文件,内存映射等等.方法很多.我们可以使用工具来查看互斥体,大家可以用XT,PCH等等工具。发现已经检测到我们开了一个窗口,只是没有进行限制。出现了很多句柄, 找到Mutant类型的句柄。我们逐一关闭,看看关闭哪个之后就可以多开窗口了。打开软件,找到我们的进程,右键查看句柄。很明显限制了多开,只能开2个。好的,我们的效果实现了.
2023-04-12 20:57:31 2831 1
原创 C++ MFC调用易语言模块
易语言有很多现成的模块,我们都知道学编程祖师爷有个祖训:不要重复发明轮子。虽然我们当然应该不断学习扩展知识的边界,但也不能啥都自己亲力亲为,不能为了做个西红柿炒鸡蛋就自己从晒盐开始做起。 易语言其实没有自己的链接器,也就是把代码编译成二进制的可执行文件。易语言用的是VB或者VC++的链接器,所以可以在易语言里把模块内的函数也就是易语言称之为“子程序”的编译成DLL来给其他语言调用。 首先先给易语言装一个“黑月编译器”,如图:去随便搜一个来装起来就行,最好用手工安装包,自动安装包有时候会装不上,不
2022-07-03 18:54:08 2548
原创 Visual Studio 2017配置DX9开发环境(包含MFC)
首先去微软下载DXSDK_Jun10开发包,图标是这个样子:然后打开项目属性,选择“VC++目录”,选择“包含目录”,添加:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include如果你的DXSDK是默认目录安装,那就是这个目录。然后选择“库目录”,添加:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86如果要编译.
2022-02-12 12:22:37 1423
转载 VS2019 设置使用 CTRL+/ 注释和取消注释
1.点击“工具->选项”。2.点击左边菜单“环境->键盘”。3.在命令搜索框输入“注释”。4.移除现有切换行注释的快捷键,并移除冲突的快捷键。5.重新分配快捷键。...
2021-12-29 10:41:15 3147
转载 C# Winform 跨线程更新UI控件常用方法汇总
C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常。处理跨线程更新Winform UI控件常用的方法有4种: 1. 通过UI线程的SynchronizationContext的Post/Send方法更新; 2. 通过UI控件的Invoke/BeginInvoke方法更新; 3. 通过BackgroundWorker取代Thread执行异步操作; 4. 通过设置窗体属性,取消线程安全...
2021-09-06 09:36:14 1994
原创 C# WinForm程序向控制台输出信息
控制台作为信息显示窗口对于调试程序查找程序BUG有诸多好处,所以给GUI程序绑定一个控制台窗口用于显示程序运行时的状态是非常有必要的,否则就需要用WinForm的控件自己去实现了。首先想让WinForm程序绑定控制台窗口需要调用Windows API,需要先导入命名空间:using System.Runtime.InteropServices;然后导入dll:[DllImport("kernel32.dll")]public static extern bool AllocCons...
2021-08-10 16:08:51 10466 2
原创 如何手动结束Python的子线程和子进程
如何结束子线程:这个是搬运其他大神的代码,鄙人也不知道原理,反正拿来主义,暂时没发现什么缺点,先用着再说。import inspectimport ctypesimport threadingfrom time import sleepdef serial_read(): while True: print("春哥纯爷们!") sleep(1)def _async_raise(tid, exctype): """rai
2021-06-14 13:32:36 3073 2
原创 Vs Code编辑Python时导入自定义的.py文件报错“import could not be resolved“解决方法
引用自己定义的.py文件会这样报错,解决这个问题打开设置搜索"settings.json"然后点击第一个“在settings.json中编辑”,然后加上红框框中的那一句:也就是自定义的要导入的.py文件所在的目录,可以是绝对路径也可以是相对路径。"python.analysis.extraPaths":["D:\\Python\\Engineering"]保存后便不再会报错。...
2021-05-11 10:06:40 18598 5
原创 selenium 延迟函数(如何确定一个元素是否已经加载进入DOM)
selenium驱动自带有延迟函数,它给分成显式等待和隐式等待,简单总结起来说:显式等待:主要正对某个元素,在规定时间内,可见、可点击、等等,超出时间则抛出异常。隐式等待:主要正对整个页面,在规定时间内,整个页面加载完成,才执行下一步,超出时间则抛出异常。若显式等待和隐式等待同时存在时,看谁的时间长,就取谁的等待时间。开发文档:https://python-selenium-zh.readthedocs.io/zh_CN/latest/5.Waits/但是这个函数或者说类并不直接返回一个
2021-05-07 18:17:52 1118
转载 font-family:中文字体的英文名称 (宋体 微软雅黑)
宋体 SimSun黑体 SimHei微软雅黑 Microsoft YaHei微软正黑体 Microsoft JhengHei新宋体 NSimSun新细明体 PMingLiU细明体 MingLiU标楷体 DFKai-SB仿宋 FangSong楷体 KaiTi仿宋_GB2312 FangSong_GB2312楷体_GB2312 KaiTi_GB2312宋体:SimSuncss中中文字体(font-family)的英文名称MacOS的一些:华文细黑:S..
2021-04-25 11:07:56 1770
原创 VS Code如何调试PHP
首先要确保系统中有Xdebug这个dll,不过如果用的是Wampserver集成环境的话,这个Wampserver自带Xdebug.dll,安装完成后只需要配置php.ini就可以。打开php.ini后如是修改:xdebug.remote_enable = 1xdebug.remote_autostart = 1如果xdebug.remote_autostart这一句没有就加上,然后保存。 红框框处是Wampserver自动设置的,所以用Wampserver集成...
2021-02-24 12:42:33 1266
原创 Python GUI库TKinter子线程与主线程控件传递消息策略
TKinter GUI库没有像MFC那样的强制安全策略,在MFC中子线程无法直接控制主线程中的GUI控件,比如修改文本框或者按钮上的内容。因为如果只有2个线程,即一个主线程和一个子线程的情况下子线程直接修改主线程控件的相关变量是没什么问题的,也不会出错,但是如果子线程个数大于1,就可能会出现多个线程同时修改一个控件相关变量的情况,导致混乱出错。所以MFC中的办法是自定义一个消息,然后子线程调用这个自定义的消息给主线程发送消息,再由主线程选择相应或者不相应,这样选择权就在主线程,因而可以避免出错。但是Pyth
2021-02-02 17:03:18 2898 1
转载 Python GUI库 Tkinter入门资料 -- 高级应用
3. 高级用法通过基础篇的学习,相信大家已经掌握了简单的tkinter编程,但如果想做出真正实用的程序,还需要学习一些高级用法,一些更复杂的控件。3.1 高级控件学习控件类 名称 简要说明 LabelFrame 标签框架 带有标签和边框的一个容器,通常用于控件分组 Message 消息框 类似于标签,但可以自动换行,用于显示多行文本 OptionMenu 选项菜单 即一个下拉菜单 Spinbox 输入控件 与E.
2021-01-26 16:50:29 1738 1
转载 Python GUI库 Tkinter入门资料 -- 基础篇
1. 概述1.1 简单程序示例1.2 背景介绍Tkinter(音为tea-kay-inter)是Tk的Python接口,Tk是Tcl/Tk的GUI工具包。Tcl(工具命令语言,音为tickle)是嵌入式应用程序,测试,原型设计和GUI开发领域的流行脚本语言。另一方面,Tk是一个开源的多平台小部件工具包,许多不同语言都使用它来构建GUI程序。而Tkinter只是一个使用Tcl/Tk库的C扩展的包装器 什么是Tcl? 维基的介绍 tcl/tk快速入门 Tcl...
2021-01-26 11:37:22 3052 5
原创 pip install selenium 安装失败报错
先上图 想必有很多哥们和鄙人一样安装selenium时碰到这个情况,查看报错信息毫无头绪,其实问题的原因在于国内跨海出去网速太慢,哎,坑呀 如上图显示的那样连接超时了,所以失败。 所以想解决问题需要修改pip的默认连接超时时间,让它多等一会,本来安装selenium的命令为: pip install selenium 改为: pip --default-timeout=100 install selenium...
2020-09-16 11:33:01 7979
原创 Web Worker 跨域访问
Web Worker按照字面意思应该翻译成“工作者线程”,这个API有点类似MFC里的线程函数,MFC的线程函数也分普通线程(完整的线程功能,拥有消息循环功能)与工作者线程(没有消息循环,就是拿来做后台处理数据的线程用的)。这个东西也很讨厌的需要符合WEB的同域安全策略,也就是在https://www.baidu.com/里想这样创建一个工作者线程:var myWorker = new Worker('http://localhost/haha.js'); 但这样是不行的,浏览器会报...
2020-07-12 15:25:47 5272
原创 JavaScript input输入数值(value)无效的原因和解决办法
会碰到这个问题一般是想×别人的网页导致的,一般来说想控制别人写的网页(或者维护一份别人的网页代码)碰到需要用JS给input或者select之类的组件赋值的时候一般会直接这样写: let casess=document.getElementsByClassName('xxxxx')[0]; casess.value='50'; 赋值后点击有时候会报错有时候不会,一般报错的情况基本上属于这份代码用了某些前端框架,例如Vue之类的,Vue的input弄个双向绑定啥的,此时我...
2020-06-29 19:25:42 19286 18
转载 JS获取子节点、父节点和兄弟节点的方法实例总结
Ⅰ.js获取子节点的方式1. 通过获取dom方式直接获取子节点其中test的父标签id的值,div为标签的名字。getElementsByTagName是一个方法。返回的是一个数组。在访问的时候要按数组的形式访问。var a = document.getElementById("test").getElementsByTagName("div");2. 通过childNodes获取子节点使用childNodes获取子节点的时候,childNodes返回的是子节点的...
2020-06-16 13:37:45 1317 1
转载 CString字符串查找和截取
本文总结CString Left()、Mid()、Right()以及几个跟CString字符串查找相关的函数使用,首先需要查找,CString里有如下几个查找函数,分别为Find()、ReverseFind()、FindOneOf()。一、CString之Find()、FindOneOf()、ReverseFind()此三个函数返回值均为整数int。1、Find()该函数从左侧0索引开始,查找第一个出现的字符位置,返回position。示例如下:CString ...
2020-06-13 19:08:24 1428
原创 MFC 字符串分割为数组
#include <vector>std::vector<CString> SplitCString(CString strSource, CString ch);//参数1:待分割的字符串;参数2:作为分割标志的字符串,比如以","号为标志分割字符串,就填","std::vector<CString> SplitCString(CString strSource, CString ch){ std::vector <CString> vec.
2020-06-13 12:49:55 1506
原创 localstorage浏览器标签页跨域数据交互解决方案
最近做个项目,需要两个不同域名的标签页能共享数据,最开始用的是最直接的方式直接用POST或GET方式发送数据,让服务器中转一下。后来又觉得只要本地的两个浏览器标签页能够交换数据就行,何必绕路去服务器那绕一圈回来,又耽误时间又没必要,搞技术嘛就是要有追求,要尝试各种可能。现代浏览器因为安全策略问题是不允许浏览器写硬盘上的文件的,读是可以的,比如读的json文件读个txt文件啥的,实在要写也行,写入文件后会把写入修改后的文件作为一个下载项下载保存。这就不是鄙人想要的效果了,鄙人只是想弄一个共享区域让两个...
2020-06-03 11:51:34 6343
原创 Vue axios.all并发获取数据例子亲测可用
axios通讯库的axios.all方法可以同时发送几条请求来获取数据,当所有请求都返回后一次性把返回结果呈现出来,而且还是按照指定的调用顺序,非常方便。 //例子1 function truct() { return axios.get("https://www.baidu.com/"); } function hree() { return axios.get("https://mp.csdn.net"); } axios.all
2020-06-02 10:13:21 789 2
原创 Tampermonkey脚本实现跨域POST或GET数据
JavaScript里的网络请求需要在同一个域之下,比如http://localhost:80 在此域名下的二级或者三级域名可以发送网络请求,而域名变成http://localhost:8080 或者https://www.baidu.com/之类就无法取得get或post请求的返回值(请求可以正确发送,但是返回值会被安全策略拦截),一般情况下只能使用jsonp发起get请求,因为浏览器安全策略对于图片 js文件等资源也就是用scr发起的请求不会做跨域限制,这种方案鄙人实验过了,无法获取返回值,经过搜索终.
2020-05-19 18:16:53 11004 5
转载 Tampermonkey中文文档
用户脚本标题#@name#脚本的名称。@namespace#脚本的命名空间。@version#脚本版本。这用于更新检查,以防脚本未从userscript.org安装,或者 TM 检索脚本元数据时出现问题。@author#脚本作者。@description#一个简短的重要描述。@homepage、@homepageURL、@website和@source#在选项页中使用的作者主页从脚本名称链接到给定页面。请注意,如果@namespace标
2020-05-19 17:26:45 2709
转载 Android逆向中常用的ARM汇编指令基础知识
一 ARM寄存器1.通用寄存器1).未分组寄存器:R0~R72).分组寄存器:R8~812R13:SP,常用作堆栈指针,始终指向堆栈的顶部,当一个数据(32位)推入堆栈时,SP(R13的值减4)向下浮动指向下一个地址,即新的栈顶,当数据从堆栈中弹出时,SP(R13的值加4)向上浮动指向新的栈顶。R14:连接寄存器(LR),当执行BL子程序调用指令时,R14中得到R15(程序计...
2020-04-20 10:38:42 2542
原创 Vue脚手架安装
Vue Cli脚手架环境需要先安装Node.js。安装完Node.js后,还需要安装npm依赖环境,npm依赖环境服务器下载速度比较悲剧,所以在国内最好用淘宝搭建的景象站来安装,在控制台中输入:npm install cnpm -g --registry=https://registry.npm.taobao.org来安装淘宝的镜像cnpm。就会自动安装cnpm。进度条走完后需要配置...
2020-03-22 16:39:21 459
转载 微信小程序中的变量和作用域
1. 全局变量在app.js里的变量和方法是全局的。//app.jsApp({ onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', log...
2020-03-19 10:09:01 684
转载 Javascript中set与get方法详解
其中get与set的使用方法:1、get与set是方法,因为是方法,所以可以进行判断。2、get是得到 一般是要返回的 set 是设置 不用返回3、如果调用对象内部的属性约定的命名方式是_age <script type="text/javascript"> var p = { name:"chen", work:f...
2020-01-04 19:34:18 999
原创 Wampserver设置php_xdebug调试DLL与PhpStorm
浪费一天时间才发现Wampserver原来自带php_xdebug调试用的DLL,php_xdebug官网的自动识别DLL的版本的功能也不是那么准,有时候就识别不出,没想到Wampserver居然自带。但是php_xdebug调试功能默认是没有配置好的,得自己手动配置PHP.INI文件,此文件如下图这样打开。然后拉到这个文件的最底部就会看见"[xdebug]"这个标题,我这里...
2019-12-18 17:56:00 341
PSV安装VITASHELL
2023-12-27
C++调用JS代码封装类
2023-05-10
php-console-master.zip
2019-09-10
VS2010 MFC中设置HotKey
2017-09-20
桌面GDI绘图示例
2017-09-15
ActionScript 查询手册
2015-09-01
关于汇编浮点数指令fld st(0)的问题
2017-04-30
汇编语言怎么判断一个数在某个范围内
2017-01-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人