一些技巧(1)

简介: 1.添加变量方法在需要添加变量的控件上右击鼠标,类别选择value,即可2.实现拖放使用函数//UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);//hDrop是指向拖动文件结构的句柄//iFile是以0开始的被拖动文件的序号,因为一次可能拖动多个文件。
1.添加变量方法
在需要添加变量的控件上右击鼠标,类别选择value,即可
2.实现拖放使用函数
//UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);
//hDrop是指向拖动文件结构的句柄
//iFile是以0开始的被拖动文件的序号,因为一次可能拖动多个文件。当此参数设置为0xFFFFFFFF,则函数返回拖动文件的数量
//lpszFile是指向文件名的缓冲区
//cch是文件名缓冲区的大小,即文件名的字节数
3.超时错误处理
FD_SET fd={1,m_hSocket};
TIMEVAL tv={nSecs,0};
if(Select(0,NULL,&fd,NULL,&tv)==0)
{
//超时错误处理
}
4.添加自定义的消息
//使用消息常量WM_USER加上一个正整数
#define WM_MYMESSAGE WM_USER+1
//在.cpp文件中消息映射的语句
BEGIN_MESSAGE_MAP(CMyWnd,CMyParentWndClass)
 ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
END_MESSAGE_MAP()
//然后在.h头文件中加入消息映射函数的原型声明如下
afx_msg LRESULT OnMyMessage(WPARAM,LPARAM);
=====================================================
        HC=::GetWindow(hCurWindow,GW_CHILD);//列表框
        EDIT_1=::GetWindow(HC,GW_HWNDNEXT);//编辑框
        EDIT_2=::GetNextWindow(EDIT_1,GW_HWNDNEXT);
        EDIT_3=::GetNextWindow(EDIT_2,GW_HWNDNEXT);//同胞窗口
        EDIT_4=::GetNextWindow(EDIT_3,GW_HWNDNEXT);//同胞窗口
        EDIT_5=::GetNextWindow(EDIT_4,GW_HWNDNEXT);//同胞窗口
============================
         CStdioFile f1;
         testrs rs1;
    CString filename, value1;
    filename = "E://tt.txt";
    rs1.Open(CRecordset::snapshot,"select * from table1");
       if(f1.Open(filename,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
    {
       while( !rs1.IsEOF() )
       {
           rs1.GetFieldValue("mobile",value1);
           f1.WriteString(value1+"/n");
           rs1.MoveNext();
       }
    }
    else MessageBox("File initializtion error","information",MB_OK);
    rs1.Close;
    f1.Close;
===================================================
使用内存文件
CMemFile MyFile;
MyFile.Open("/temp.txt",CFile::modeCreate|CFile::modeWrite);
MyFile.Attach(pAttach,dwFileLength);
===================================================
屏幕保护和能源保护功能的关闭与开启
1.关闭屏幕保护
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,0,SPIF_SENDWININICHANGE);
2.关闭能源保护
SystemParametersInfo(SPI_SETLOWPOWERACTIVE,FALSE,0,SPIF_SENDWININICHANGE);
SystemParametersInfo(SPI_SETPOWEROFFACTIVE,FALSE,0,SPIF_SENDWININICHANGE);
3.打开
将上面中的FALSE改为TRUE即可
===================================================
用默认程序打开mp3文件
ShellExecute(0,"open","a.mp3",NULL,NULL,0);
===================================================
关机 注销
BOOL ExitWindow***(
     UINT uFlags//关机方式
    ,DWORD dwReservde//保留(直接写0即可)
    };
参数uFlags指定关机方式
EWX_LOGOFF      //终止所有进程,然后注销
EWX_POWEROFF    //关闭系统切断电源。但调用该函数的进程必须要有SE_SHUTDOWN_NAME特权
EWX_REBOOT      //关闭系统并重新启动。必须有SE_SHUTDOWN_NAME特权
EWX_SHUTDOWN    //关闭系统到并提示用户可以安全关机,文件缓冲区内容保存到磁盘,所有进程终止。必须有SE_SHUTDOWN_NAME特权
EWX_FORCE       //强制进程终止,而且系统不会发WM——QUERYENDSESSION和WM_ENDSESSION消息,这种方式会使应用程序丢失数据,应慎重使用
参数dwReservde是保留字,可以随意设置成一个数,比如1
注:
1.Windows 2000下,必须调用AdjustTokenPrivileges函数来使用SE_SHUTDOWN_NAME特权。
2.GetTokenInformation()该函数能显示那些特权是可用的,大部分特权是禁止的
3.在进行特权操作前,必须在存权令牌内使能必要的特权。可先调用OpenThreadToken函数得到存取令牌句柄,然后调用AdjustTokenPrivileges函数来使用该特权。在进行响应的操作之后,再调用一次AdjustTokenPrivileges函数来禁止一个标志的特权。
4.为了获取对应某个字符串的当前LUID,要调用LookupPrivilegeValue函数,函数LookupPrivilegeName把一个LUID值转换为相应的字符串常量。
5.特权是以字符串形式定义在WinNt.h中。当需要显示某个用户的某个特权描述时,可以使用函数LookupPrivilegeDisplayName来获得描述字符串。
=====================================================
连接远程计算机的注册表
MachineName="////"+MachineName;
LPTSTR p=MachineName.GetBuffer(MachineName.GetLength());
LONG lRet=::RegConnectRegistry(p,HKEY_PERFORMANCE_DATA,&key);
==========================================================
让应用程序从IE中获取键入的网址 
HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
if(hwnd)
{
    HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("Edit"),NULL);
   char sz[255];
  ::SendMessage(hwnd2,WM_GETTEXT,255,(LPARAM)sz);
  AfxMessageBox(sz);
}
结果发现不能得到正确的结果,从SPY上看,类名也全部是正确的,为什么不能得到正确的结果呢?看了他的代码后,我进行了如下改动,就可以得到正确的结果了:
HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
 if(hwnd)
 {
  HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("WorkerW"),NULL);
  HWND hwnd3=::FindWindowEx(hwnd2,NULL,_T("ReBarWindow32"),NULL);
  HWND hwnd4=::FindWindowEx(hwnd3,NULL,_T("ComboBoxEx32"),NULL);
  HWND hwnd5=::FindWindowEx(hwnd4,NULL,_T("ComboBox"),NULL);
  HWND hwnd6=::FindWindowEx(hwnd5,NULL,_T("Edit"),NULL);
   char sz[255];
  ::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz);
  AfxMessageBox(sz);
 }
}
  以上的代码不用我解释了吧,这个问题不是什么大问题,难度也不大,但是可能会让初学者不明白为什么得不到程序某一控件的HANDLE,其实对VC来说,没有什么办不到的事情,只是需要你仔细的分析一下而已  
网络编程
目录
相关文章
|
安全 测试技术 数据安全/隐私保护
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题)
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题) 企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法 Foxmail 7.0 POP3/IMAP 设置方法如下: 1.
43611 0
|
域名解析 数据安全/隐私保护
|
弹性计算
阿里云免费企业邮箱申请流程
免费版的阿里云企业邮箱给你一个很好的体验,享受中小企业发展时期的优惠扶持。那怎么才能申请阿里云免费的企业邮箱呢??
40667 0
|
域名解析 测试技术 Windows
[原创]建立自己免费的邮件服务器
一、我的系统配置及运行环境介绍   1. 操作系统: windows xp   2. 机器环境: 公司内网 经过路由使用ADSL上公网   3. http://www.dns0755.net申请动态域名解析   4. 免费邮件服务: Macallan Mail Solution 二、配置步骤   1. 申请动态域名解析:     邮件格式通常为xxx@xxx.com, @之后的文字为邮件服务器的域名。
2006 0
|
4天前
|
弹性计算 API Python
如何利用通义千问查询阿里云资源
本篇文章详细阐述了如何利用LangChain框架构建一款Python工具,该工具能够调用通义千问大模型来查询和获取阿里云资源信息。
|
4天前
|
存储 JSON BI
友盟+Hologres:千亿级多维分析平台建设实践
Hologres 在友盟+统计分析、营销等多个产品线使用,很好地满足了用户行为分析、人群圈选与洞察场景的多维度分析、灵活下钻、快速人群预估和圈选等分析需求,提供客户更流畅的数据查询和分析体验。
|
4天前
|
监控 Cloud Native 测试技术
PTS 3.0:开启智能化的压测瓶颈分析
PTS 3.0:开启智能化的压测瓶颈分析
124753 2
|
4天前
|
SQL 数据采集 JSON
弱结构化日志 Flink SQL 怎么写?SLS SPL 来帮忙
弱结构化日志 Flink SQL 怎么写?SLS SPL 来帮忙
123298 2
|
6天前
|
存储 运维 监控
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
通过对各个业务线实时需求的调研了解到,当前实时数据处理场景是各个业务线基于Java服务独自处理的。各个业务线实时能力不能复用且存在计算资源的扩展性问题,而且实时处理的时效已不能满足业务需求。鉴于当前大数据团队数据架构主要解决离线场景,无法承接更多实时业务,因此我们需要重新设计整合,从架构合理性,复用性以及开发运维成本出发,建设一套通用的大数据实时数仓链路。本次实时数仓建设将以游戏运营业务为典型场景进行方案设计,综合业务时效性、资源成本和数仓开发运维成本等考虑,我们最终决定基于Flink + Hudi + Hologres来构建阿里云云原生实时湖仓,并在此文中探讨实时数据架构的具体落地实践。
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
|
9天前
|
SQL 关系型数据库 分布式数据库