一些技巧(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来说,没有什么办不到的事情,只是需要你仔细的分析一下而已  
网络编程
目录
相关文章
|
7月前
|
存储 运维 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【2月更文挑战第31天】 随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性和提升部署效率的关键手段。本文将详细探讨如何通过Ansible和Docker的结合来构建一个高效、可靠且易于管理的自动化运维体系。首先,介绍自动化运维的必要性及其在现代IT基础设施中的作用;然后,分别阐述Ansible和Docker的技术特点及优势;最后,提供一个基于Ansible和Docker结合使用的实践案例,以及实施过程中遇到的挑战和解决方案。
|
XML 缓存 运维
springboot注解(全)
springboot注解(全)
181 0
|
7月前
|
存储 NoSQL 算法
学习 Redis 基础数据结构,不讲虚的。
职场中是这样使用 redis 的。
201 1
学习 Redis 基础数据结构,不讲虚的。
|
存储 前端开发 JavaScript
HarmonyOS UI 开发
HarmonyOS 提供了强大的 UI 开发工具和组件,使开发者能够创建吸引人的用户界面。本章将详细介绍在 HarmonyOS 中应用 JS、CSS、HTML,HarmonyOS 的 UI 组件以及如何自定义 UI 组件。
142 0
HarmonyOS UI 开发
|
存储 Linux 开发工具
Git-LFS:大文件也有了版本管理
Git-LFS:大文件也有了版本管理
223 0
|
PyTorch 算法框架/工具 索引
一文读懂Pytorh Sampler
一文读懂Pytorh Sampler
270 0
|
SQL 消息中间件 DataWorks
百问求答(2)大数据专场来啦!写回答赢大奖!
百问求答(2)大数据专场来啦!写回答赢大奖!
2727 16
百问求答(2)大数据专场来啦!写回答赢大奖!
|
Kubernetes Cloud Native Java
服务网格的最佳实践
服务网格是用于处理服务间通信的专用基础设施层。它负责通过包含现代云原生应用程序的复杂服务拓扑来可靠地传递请求。
18378 8
服务网格的最佳实践
|
SQL 存储 缓存
这款SQL Server插件太好用了,写代码根本停不下来
今天给大家安利一款我一直在使用的SQL Server插件:SQL Prompt。
这款SQL Server插件太好用了,写代码根本停不下来
|
机器学习/深度学习 人工智能 自然语言处理
可复现性?稳健性?Joelle Pineau无情揭示强化学习的问题
当地时间 12 月 5 日,NeurIPS 2018 Posner Lecture 邀请到了 Facebook 蒙特利尔 FAIR 实验室负责人、麦吉尔大学副教授 Joelle Pineau。Joelle Pineau 在演讲中深刻揭露了强化学习中目前存在的一些问题(如可复现性等),并为参会者给出了系列建议。机器之心对她的演讲内容进行了整理。
152 0
可复现性?稳健性?Joelle Pineau无情揭示强化学习的问题