C++
donglinshengan
这个作者很懒,什么都没留下…
展开
-
Windows C++实现文件共享
一、背景在Windows上做应用开发,有时会遇到一种场景:要使用的文件放在其他机器上,由另外的机器取访问存放文件的电脑。存放文件的节点系统可以是Windows、Linux或其他系统,但为了用户能方便查看文件,一般还是会选择Windows系统。一台硬件低配的机器即可,搭载多张磁盘,做成磁盘阵列来实现数据冗余(以防数据丢失)。二、数据访问接下来要考虑的是,把数据放到其他机器上后,要如何访问到那些数据呢?方法很多!比如在存放文件的系统上搭载一个ftp或者http服务器。但这种方案有个很明显的问原创 2022-03-11 08:22:54 · 2717 阅读 · 0 评论 -
Windows 使用Redis
Redis官方并没有支持Windows版本不过微软对Redis做了,以适用于Windows平台,已将源码开源与Github,目前版本是3.2.100,稳定版本为3.0.504。GitHub地址为:https://github.com/microsoftarchive/redis/releases对源码checkout后,用VS2019会编译不过,不过只要稍加修改即可。需要注意的...原创 2020-04-18 22:27:29 · 139 阅读 · 1 评论 -
windows 系统服务访问网络共享资源
普通用户进程可以在设置好的网络共享中直接通过IP或电脑用户名访问共享的资源,但是在系统服务下不能直接访问,需要通过地址映射到本地才可进行访问。以下是实现代码(转载自:https://blog.csdn.net/venice0708/article/details/85213433)#include <Windows.h>#include <tchar.h>...转载 2020-04-09 18:42:45 · 588 阅读 · 0 评论 -
chromuim内核video audio标签自动播放
chromuim 66 版本以后的内核,在默认情况下<video>和<audio>标签已经不能自动播放了。需要用户点击触发后才播放,或者要把播放设置为静音模式才可自动播放。但很多情况下,我们希望用户看到这个标签后,就可以自动播放标签资源。还好,内核预留了设置开关。我们可以使用 --autoplay-policy=no-user-gesture-required 来关...原创 2019-06-13 14:49:54 · 1592 阅读 · 0 评论 -
C++ 实现的快速排序算法
快速排序算法思想的资料很多,这边只展示用C++ 实现的快速排序算法:#include <stdio.h>#include <stdlib.h>void quickSort(int arr[], int nLen){ if (nLen <= 1) { return; } int n = arr[0]; ...原创 2019-05-17 10:15:01 · 318 阅读 · 0 评论 -
兼容模式运行程序
在运行程序时,为了在win Vista以上版本弹出UAC窗口,我们往往设置程序不使用管理员权限打开。因为在程序在一定目录下,不使用管理员运行也是能达到自身的目的(不读写磁盘),但在诸如系统盘下,我们的程序可能就运行的不好,需要管理员权限才能正常运行,但在程序中设置了管理员权限运行,用户电脑没关闭UAC的话,运行又会出现烦人的弹窗。所以,我们可以先判断,如果用户电脑有打开UAC,而且程序运行的在磁盘...原创 2018-07-17 11:18:08 · 1830 阅读 · 0 评论 -
chtmlview C++交互
文章来源:https://blog.csdn.net/andycoder/article/details/258762211、创建一个继承自CHtmlView的类;2、构造函数中添加CNewHtmlView::CNewHtmlView(){ // 允许自动化 EnableAutomation();}3、重载 virtual HRESULT OnGetExternal( LPDISPATCH *lp...转载 2018-07-02 16:28:30 · 950 阅读 · 0 评论 -
为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容
在开发时,会遇到是要HTML来做UI,是要js与C++进行交互。在加载完页面后,一些电脑中会出现“为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容”(用IE打开,自己程序里面用的是chtmlview是看不到的),这导致页面中用于与C++代码交互的按钮事件不能在C++代码中接收。这是因为浏览器的安全限制造成的,可使用如下方法:因为HTML页面是本地的,我们可以在页面...原创 2018-07-02 16:23:40 · 10840 阅读 · 0 评论 -
代码实现pe文件图标替换
最近,好多人问我如何通过写个小程序,动态替换可执行文件的图标。这个问题看起来虽小,但却涉及到很多问题。网上也只能找到一些零零散散的资料,却没有详细的指导性文档。所以我决定把这个问题写下来,以方便大家查阅。 EXE文件图标的替换有很多方法,例如用一个EXE文件的图标替换另外一个EXE文件的图标;用一个ICO文件内的图标替换EXE文件的图标。这两种情况替换的方法不太相同,下面会详细讨论。 EXE文...转载 2018-05-17 14:31:13 · 2508 阅读 · 1 评论 -
获取进程命令行参数
#include <Winternl.h>void GetProcessCommandLine(DWORD pid){ pid = 1688; HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); if (INVALID_HANDLE_VALUE != hProc) { HANDLE hNewProcess = NUL...翻译 2018-04-14 15:30:05 · 4462 阅读 · 2 评论 -
在非控制台程序中开启控制台进行信息的输出
有些时候,我们需要在程序运行的时候查看相关的信息,但又不想输出懂日志文件中,这时可以用控制台输出的方式进行显示信息void InitConsoleWindow(){ int nCrt = 0; FILE* fp; AllocConsole(); nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPU翻译 2015-09-24 08:06:50 · 840 阅读 · 1 评论 -
VC 用微软插件或CHtmlView 开发浏览器时如何指定使用的IE内核版本
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION原创 2014-05-27 19:26:19 · 5553 阅读 · 2 评论 -
VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程
在Win7中,我们有时需要判断哪些进程是以管理员权限运行的,有时需要判断该进程是服务进程还是用户进程。下面这段代码可以实现在Win7中获取一个以管理员权限运行的客户进程。BOOL FindUacToken(HANDLE &hToken){HANDLE hProcessSnap = NULL;BOOL bRet= FALSE;PROCESSENTRY32pe32 =原创 2014-01-17 20:10:31 · 5467 阅读 · 0 评论 -
VC 用服务进程开启有UI的进程和写注册表HKEY_CURRENT_USER子键的问题
有时我们需要通过服务进程来启动某个进程,且该被启动的进程有UI,或者需要用服务进程来写HKEY_CURRENT_USER子键,此时我们就会碰到一个问题:被启动的进程看不到UI,但在进程列表中却能看到该进程;而HKEY_CURRENT_USER键则必须用当前用户才能写成功。如果使用CreateProcess来创建进程的话,新创建的进程和服务程序依然是相同的用户身份,还是无法达到目的,只有使用Cr翻译 2014-01-13 19:45:53 · 2012 阅读 · 0 评论 -
VC 创建Windows服务程序
本文章来源于:http://www.vckbase.com/index.php/wv/1166http://www.vckbase.com/index.php/wv/1391本文描述如何用 Visual C++ 创建 Windows NT 服务程序。创建该服务仅用到一个 C++ 类,这个类提供服务与操作系统之间一个简单的接口。使用这个类实现自己的服务非常简单,只要改写少数几个基类中的虚翻译 2013-12-24 12:49:07 · 7834 阅读 · 0 评论 -
VC 创建Windows服务程序2
文章来源:http://www.vckbase.com/index.php/wv/1391本文主要介绍了 OpenSCManager、CreateService、OpenService、ControlService、DeleteService、RegisterServiceCtrlHandler、SetServiceStatus、StartServiceCtrlDispatcher等操作服翻译 2013-12-24 13:34:58 · 1035 阅读 · 0 评论 -
vc内存泄漏定位
Detected memory leaks!Dumping objects ->{98500} normal block at 0x05785AD0, 152 bytes long.Data: 3C AC 4E 10 00 00 00 00 BC A4 4E 10 78 B6 37 00Object dump complete.解决方法:在程序开始启动的地方(足够前的地方转载 2013-12-30 13:35:41 · 804 阅读 · 0 评论 -
VC 添加一个选择的目录
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT msg, LPARAM lp, LPARAM pData) {TCHAR szDir[MAX_PATH] = TEXT("C:\....");if (msg == BFFM_INITIALIZED ) //初始化时选定一个目录{ ::SendMessage(hwnd,翻译 2013-12-13 14:20:38 · 1115 阅读 · 0 评论 -
VC 打开文件框选择文件
VC中,选择文件的方法:1. MFC下:CFileDialog fDlg(TRUE, _T(".apk"), NULL, OFN_HIDEREADONLY | OFN_FORCESHOWHIDDEN | OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT, _T("Apk Files(*.apk)|*.apk|All Files(*.*)|*.*||"原创 2013-11-07 10:41:21 · 1284 阅读 · 0 评论