Windows编程
文章平均质量分 53
donglinshengan
这个作者很懒,什么都没留下…
展开
-
Windows 窗口工作站(window station)
Windows 窗口工作站(window station)原创 2021-12-14 16:32:56 · 2376 阅读 · 0 评论 -
Windows C++实现文件共享
一、背景在Windows上做应用开发,有时会遇到一种场景:要使用的文件放在其他机器上,由另外的机器取访问存放文件的电脑。存放文件的节点系统可以是Windows、Linux或其他系统,但为了用户能方便查看文件,一般还是会选择Windows系统。一台硬件低配的机器即可,搭载多张磁盘,做成磁盘阵列来实现数据冗余(以防数据丢失)。二、数据访问接下来要考虑的是,把数据放到其他机器上后,要如何访问到那些数据呢?方法很多!比如在存放文件的系统上搭载一个ftp或者http服务器。但这种方案有个很明显的问原创 2022-03-11 08:22:54 · 2670 阅读 · 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 · 123 阅读 · 1 评论 -
windows 系统服务访问网络共享资源
普通用户进程可以在设置好的网络共享中直接通过IP或电脑用户名访问共享的资源,但是在系统服务下不能直接访问,需要通过地址映射到本地才可进行访问。以下是实现代码(转载自:https://blog.csdn.net/venice0708/article/details/85213433)#include <Windows.h>#include <tchar.h>...转载 2020-04-09 18:42:45 · 575 阅读 · 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 · 1106 阅读 · 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 · 1270 阅读 · 0 评论 -
Win7 PCA 弹窗问题
VC开发应用程序,有时碰到在win7下会出现关闭程序后,系统会弹出PCA窗体(程序兼容性助手)。当我们以某个兼容模式运行该程序,退出后就不会出现改提示窗。查过好些资料,有的说是运行的库冲突导致的,可能是吧。这边只说下我的解决方法: version="1.0.0.0" processorArchitecture="X86"原创 2014-01-04 15:28:33 · 1801 阅读 · 0 评论 -
VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程
在Win7中,我们有时需要判断哪些进程是以管理员权限运行的,有时需要判断该进程是服务进程还是用户进程。下面这段代码可以实现在Win7中获取一个以管理员权限运行的客户进程。BOOL FindUacToken(HANDLE &hToken){HANDLE hProcessSnap = NULL;BOOL bRet= FALSE;PROCESSENTRY32pe32 =原创 2014-01-17 20:10:31 · 5452 阅读 · 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 · 1026 阅读 · 0 评论 -
判断PC使用的默认浏览器方法
要知道PC使用的是哪个默认浏览器,可以从注册表中读取相应键值来判断。HKEY_CLASSES_ROOT\http\shell\open\command,但是从这个键值中读取的值往往与设置的默认浏览器不符。在我们修改了默认浏览器后,这个值并不总是发生改变。这样,我们从该值去做判断,必然出错。我们可以从HKEY_CURRENT_USER\Software\Microsoft\Windows\She原创 2013-11-04 10:46:15 · 1299 阅读 · 0 评论 -
使用STL::map来实现函数映射调用
有时我们编写一个C++类,在处理函数调用时会使用一串字符匹配来调用相应的函数。这时我们可以使用map来实现,字符串作为KEY,函数指针作为值。采用这种方式,在构造map时,还有调用对应函数时,可能出现一些问题。这边记录了一个例子,是本人在解决问题后所记录下来的:先定义这个类:class ClassName{....protected:void Fun1();void原创 2013-10-30 17:44:27 · 1749 阅读 · 1 评论 -
C++解析JSON的好文章
使用C++处理JSON数据交换格式一直以来都是做windows桌面应用软件,之前也从未接触过json,但是由于工作需要,要与服务器进行交互,服务器字符使用的是json,这就需要对其进行解析...下面是从网上找来的文章,挺好的,只需按照说明进行试验就明白json库要如何使用了。首先,附加下自己的测试代码...int _tmain(int argc, _TCHAR*翻译 2013-10-17 10:25:07 · 804 阅读 · 0 评论 -
MFC 检测USB接口设备连接变化
添加 WM_DEVICECHANGE 消息afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD_PTR dwData);BEGIN_MESSAGE_MAP(Cwndclass, Cbaseclass)ON_WM_DEVICECHANGE()END_MESSAGE_MAP()// 获取盘符LONG原创 2013-08-13 18:45:19 · 5585 阅读 · 0 评论 -
C++与Flash的交互
1. 新建一个MFC Dialog程序2. 添加一个Flash控件 3. 把Flash控件添加一个变量 4. 在OnInitDialog()中添加载.swf文件[cpp] view plaincopy// CCppFlashDlg 消息处理程序 BOOL翻译 2013-09-17 11:22:05 · 920 阅读 · 0 评论 -
VC 链接时new和delete运算符已经在 LIBCMTD.lib 中定义解决方法
error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj)翻译 2013-08-14 14:02:49 · 5503 阅读 · 0 评论 -
如何在网页中打开一个本地桌面程序
说到单点登录,往往是和Portal(门户)是离不开的。通常企业中会有许多应用,WEB的或CS的。而做Portal的时候往往是做成WEB的。这时候,用户登录Portal后,如何从Portal启动本地的CS程序,就成为需要解决的问题。不知道大家是如何解决的,我的做法是,自己实现一个协议(就象迅雷/电驴/网络蚂蚁那样),在Portal上实现一个形如协议名称://应用名称/作业?action=动作翻译 2012-12-29 17:13:04 · 5204 阅读 · 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 · 7825 阅读 · 0 评论 -
VS2008提示无法打开包括文件:“afxcontrolbars.h”解决办法
我发生过几次这个问题,都是以前用了vs2008SP1写的程序,现在用没有SP1的vs2008编译引起的。解决它的根本方法当然就是装SP1,但是这个SP1装起来需要1个钟头,很麻烦。而且装上要耗掉1G多硬盘空间。我的程序是对话框程序,和那些高端的controlbar根本没什么关系,我猜大概改源代码也可以。后来我尝试了一下,直接在stdafx.h中改了一处,把#include 注掉,后面加了一行转载 2014-01-08 20:22:41 · 844 阅读 · 0 评论 -
chromuim内核video audio标签自动播放
chromuim 66 版本以后的内核,在默认情况下<video>和<audio>标签已经不能自动播放了。需要用户点击触发后才播放,或者要把播放设置为静音模式才可自动播放。但很多情况下,我们希望用户看到这个标签后,就可以自动播放标签资源。还好,内核预留了设置开关。我们可以使用 --autoplay-policy=no-user-gesture-required 来关...原创 2019-06-13 14:49:54 · 1583 阅读 · 0 评论 -
兼容模式运行程序
在运行程序时,为了在win Vista以上版本弹出UAC窗口,我们往往设置程序不使用管理员权限打开。因为在程序在一定目录下,不使用管理员运行也是能达到自身的目的(不读写磁盘),但在诸如系统盘下,我们的程序可能就运行的不好,需要管理员权限才能正常运行,但在程序中设置了管理员权限运行,用户电脑没关闭UAC的话,运行又会出现烦人的弹窗。所以,我们可以先判断,如果用户电脑有打开UAC,而且程序运行的在磁盘...原创 2018-07-17 11:18:08 · 1809 阅读 · 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 · 939 阅读 · 0 评论 -
为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容
在开发时,会遇到是要HTML来做UI,是要js与C++进行交互。在加载完页面后,一些电脑中会出现“为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容”(用IE打开,自己程序里面用的是chtmlview是看不到的),这导致页面中用于与C++代码交互的按钮事件不能在C++代码中接收。这是因为浏览器的安全限制造成的,可使用如下方法:因为HTML页面是本地的,我们可以在页面...原创 2018-07-02 16:23:40 · 10701 阅读 · 0 评论 -
获取进程命令行参数
#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 · 4426 阅读 · 2 评论 -
在非控制台程序中开启控制台进行信息的输出
有些时候,我们需要在程序运行的时候查看相关的信息,但又不想输出懂日志文件中,这时可以用控制台输出的方式进行显示信息void InitConsoleWindow(){ int nCrt = 0; FILE* fp; AllocConsole(); nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPU翻译 2015-09-24 08:06:50 · 824 阅读 · 1 评论 -
VC 用微软插件或CHtmlView 开发浏览器时如何指定使用的IE内核版本
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION原创 2014-05-27 19:26:19 · 5534 阅读 · 2 评论 -
c++与js脚本交互,C++调用JS函数/JS调用C++函数
一、javascript调用c++,方法有两种方案1:1.html编写TESTfunction TestFunc(){ alert("TestFunc");} 2.C++的CHtmlView类重写OnBeforeNavigate2函数void CAddGoogleMap_CHtmlView::On转载 2014-06-10 13:38:10 · 11052 阅读 · 5 评论 -
VC 实现Windows 文件监控
应用层vc实现三种文件监视方法下面介绍三种非驱动实现文件监视的方法。=================================================================通过 未公开API SHChangeNotifyRegister 实现==================================================转载 2014-02-17 11:54:30 · 2520 阅读 · 0 评论 -
OpenProcess 返回拒绝访问的错误提示
有时需要使用OpenProcess来查看进程的相关信息,或者结束进程的运行,但是会碰到“拒绝访问”的错误,这时需要提升进程的权限为Debug权限。BOOL EnableDebugPrivilege(){ HANDLE hToken; BOOL fOk=FALSE; if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_P原创 2014-02-07 11:25:57 · 8300 阅读 · 0 评论 -
VC 用服务进程开启有UI的进程和写注册表HKEY_CURRENT_USER子键的问题
有时我们需要通过服务进程来启动某个进程,且该被启动的进程有UI,或者需要用服务进程来写HKEY_CURRENT_USER子键,此时我们就会碰到一个问题:被启动的进程看不到UI,但在进程列表中却能看到该进程;而HKEY_CURRENT_USER键则必须用当前用户才能写成功。如果使用CreateProcess来创建进程的话,新创建的进程和服务程序依然是相同的用户身份,还是无法达到目的,只有使用Cr翻译 2014-01-13 19:45:53 · 2003 阅读 · 0 评论 -
MFC 让对话框不显示在任务栏和桌面
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);//从任务栏中去掉. SetWindowPos(&wndTop,0,0,0,0,NULL);或者 ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);//从任务栏中去掉. WINDOWPLACEMENT wp; wp.length=si原创 2011-06-06 15:49:00 · 4705 阅读 · 0 评论 -
64位Win7浏览器代理设置注册表位置
有时需要设置浏览器的用户名代理,需要修改注册表的User Agent值,但是不同系统的位置是不一样的。Win732位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post PlatformWin764位:HKEY_LOCAL_M原创 2013-06-03 17:24:27 · 3518 阅读 · 0 评论 -
VC 如何编程判断UAC是否开启
有时程序中会用到判断Vista/Win7系统UAC是否开启,其实这信息是写在注册表中的,以下是检测代码BOOL IsEnableUAC(){BOOL isEnableUAC = FALSE;OSVERSIONINFO osversioninfo;ZeroMemory(&osversioninfo, sizeof(osversioninfo));osversioninfo.d转载 2013-05-24 16:16:45 · 3291 阅读 · 0 评论 -
VC 使用IE、火狐或默认浏览器打开网页ShellExecute
使用IE打开:ShellExecute(NULL, _T("open"), _T("IExplore.exe"), _T("http://..."), NULL, SW_SHOW);使用火狐打开:ShellExecute(NULL, _T("open"), _T("firefox.exe"), _T("http://..."), NULL, SW_SHOW);使用默认浏览器打开:原创 2012-08-10 17:34:02 · 7776 阅读 · 0 评论 -
MFC 多文档标题修改
多文档标题格式为 “主框架标题 - 子框架标题”修改主框架标题的方式主要有一下两种:1. 在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中对成员变量m_strTitle进行直接赋值修改,如m_strTitle = TEXT("My Title")2. 根据标题栏标题被修改时窗口会接收WM_SETTEXT消息的原理,可以修改处理该消息的函数,原创 2012-08-11 10:17:03 · 6442 阅读 · 2 评论 -
VC 如何判断是否是组合键消息
VC Windows编程中,可以通过判断一个键是否已经按下来判断是否是组合键消息,比如收到Tab键按下消息,用HIBYTE(GetKeyState(VK_CONTROL))来判断下Ctrl键是否按下,如果Ctrl按下了,说明是Ctrl+Tab的组合键。原创 2012-08-09 21:12:55 · 4185 阅读 · 0 评论 -
MFC 多文档中如何去掉菜单栏
在添加CChildFrame的WM_MDIACTIVATE的消息处理函数如下即可: 在消息函数中添加如下代码: CWnd *pWnd = ::AfxGetMainWnd(); pWnd->SetMenu(NULL); pWnd->DrawMenuBar();转载 2012-08-09 16:00:00 · 1547 阅读 · 0 评论 -
默认浏览器在注册表中的位置
HKEY_CLASSES_ROOT\http\shell\open\commandHKEY_CLASSES_ROOT\htmlfile\shell\open\commandHKEY_CLASSES_ROOT\mhtmlfile\shell\open\commandHKEY_CLASSES_ROOT\InternetShortcut\shell\open\command原创 2012-06-21 16:45:38 · 4859 阅读 · 0 评论 -
关于MFC项目中使用CDHtmlDialog禁止脚本错误的方法
当WebBrowser控件(CDHtmlDialog自动创建了WebBrowser控件)加载的网页中含有错误Javascript代码时默认情况下控件会弹出错误信息提示对话框,相对于用户体验来说这样的提示完全不是开发人员想要的,针对这个问题有两个解决方案,一是完全屏蔽掉错误提示,二是控制错误的提示并且记录错误信息同时也可以控制出现错误后Javascript是否继续执行。1、屏蔽错误信息提示转载 2012-06-15 11:54:51 · 1288 阅读 · 0 评论 -
VC 设置窗口半透明
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);SetLayeredWindowAttributes(RGB(0, 0, 0), 0, 1);原创 2012-06-09 09:58:06 · 1704 阅读 · 0 评论 -
VC 获得鼠标当前位置所对应的窗口
使用WindowFromPoint(pt)原创 2012-05-30 19:21:45 · 1467 阅读 · 0 评论