让应用程序只启动一次
admin | C++ | 2013-08-23
在编写应用程序,有时候会有 让应用程序只启动一次的 要求。
一. 命名的内核对象
利用 内核中的命名对象 名称不能重复这一特性,来实现 应用程序的只启动一次的请求。
以Mutex为例,可以利用CreateMutex函数:
C++
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTESlpMutexAttributes, // 指向安全属性的指针
BOOLbIniti... [阅读全文]
C++通过WMI修改IP,网关,DNS不重启(支持WIN7,VISTA)
以前也做过修改IP的方法,感觉都不是最完美的,我觉得最完美的方法就是WMI了,所有在上次封装的WMI类中再封装了一下,可以简单的修改IP,GATEWAY ,DNS。
主要在上一篇文章中的网卡类中添加了四个成员函数
HRESULT SetIPAddress(CComBSTR* pArraybstrIp,CComBSTR* pArraybstrMask,const int& arraryCount,LONG* plReturn = NULL)
HRESULT EnableDCPH(... [阅读全文]
中国电信的DNS劫持解决办法
admin | 开发问题 | 2013-08-23
http://www.9aixuexi.com/view-188672-1.html
http://baike.baidu.com/view/3163602.htm
DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。
电信的DNS劫持一般是指电信在对其所属... [阅读全文]
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
admin | 开发问题 | 2013-08-23
Background
MSDN中对于在不同的配置下Link的LIB作了说明:
C Runtime Library:
开关
对应的库
版本
/MD
MSVCRT.LIB
多线程DLL的Release版本
/MDd
MSVCRTD.LIB
多线程DLL的Debug版本
/MT
LIBCMT.LIB
多线程静态链接的Release版本
/MTd
LIBCMTD.LIB
多线程静态链接的Debug版本
/clr
MSVCMRT.LIB
托管... [阅读全文]
Duilib编译成静态库
这套库做界面还是非常不错的,虽然官方团队开始了Lomox的研发,不再支持这套库了,但是它依然有它的价值。
感谢指正。
有很多人不知道如何编译成静态库,其实很简单的。
首先在vs中设置duilib项目。如图:配置类型改为静态库。
第二步修改UIlib.h头文件上面的宏。如图:
第三步在这个头文件下面添加内容:
#pragma comment(lib,”oledlg.libR... [阅读全文]
窗口居中显示
admin | 开发问题 | 2013-08-23
C++
// 窗口居中:
void CMyDlg::ToCenter(void)
{
CRect rc;
GetWindowRect(&rc); //得到窗口大小;
int cx=::GetSystemMetrics(SM_CXSCREEN);//得到显示器横向分辩率;
int cy=::GetSystemMetrics(SM_CYSCREEN);//得到显示器纵向分辩率;
POINT pt;
pt.x=(cx-rc.Width (... [阅读全文]
WebBrowser Control的一个简单C++封装
admin | win32 | 2013-08-22
想在自己的窗口中放上一个WebBrowser Contorl,但又不想用MFC;可惜网上除了MFC/ATL以外,使用WebBrowser的资料少得可怜。
在CodeGuru上找到Jeff Glatt 的一篇文章Display a Web Page in a Plain C Win32 Application,写成于2002年,作者的确够厚道,不但给了两份注释完整的代码(一个是exe的源文件,一个是Dll的源文件),还把如何用C一步一步实现虚... [阅读全文]
屏蔽掉”服务器正在运行中”要选择”切换到…”或”重试”的对话框
admin | C++ | 2013-08-22
对话框的OnInitDialog中
C++
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);
AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(TRUE);
AfxOleGetMessageFilter()->SetMessagePendingDelay(-1);
1234
... [阅读全文]
STL跨DLL使用
admin | 开发问题 | 2013-08-22
STL跨平台调用会出现很多异常,你可以试试.
STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释。
原因分析:
一句话—–如果任何STL类使用了静态变量(无论是直接还是间接使用),那么就不要再写出跨执行单元访问它的代码。... [阅读全文]
跨dll使用template/STL需要注意的问题
admin | 开发问题 | 2013-08-22
dll:
extern “C”
{
__declspec(dllexport) void PrintVector(const vector<int> v)
{
copy(v.begin(), v.end(), ostream_iterator<int>(cout, ” “));
}
}
exe:
typedef void (* FUNC)(const vector<int>);
int main()
{
HMODULE hModule = LoadLibrary(“VectorDll.dll”);
if (hModule)
{
FUNC f... [阅读全文]